childsplay-3.3/0000775000175000017500000000000013271013627012225 5ustar stasstaschildsplay-3.3/locale/0000775000175000017500000000000013271013626013463 5ustar stasstaschildsplay-3.3/locale/ro/0000755000175000017500000000000013271013626014101 5ustar stasstaschildsplay-3.3/locale/ro/LC_MESSAGES/0000755000175000017500000000000013271013626015666 5ustar stasstaschildsplay-3.3/locale/ro/LC_MESSAGES/childsplay.mo0000644000175000017500000001511413271013626020361 0ustar stasstas6I|@ :,;g :q39+?$'.3I:, >M= D , % I# Km , 7 D Dc E 3 " F, s :w  #   G /D<DT(p}A0 8NTE+ +9K_@y]Y+r)Wa @>XF[m3DEU: & 1E1% 54* 2&) !-+'$ ( ,# 60"3/.(max two per word), you can play the last level which is a maze.BallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Current activity : %sDo you really want to quit ?FallinglettersFindsoundFishtankHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.It seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.LoginMemoryMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sThe aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The longer you hold the left button the harder it will hit the ball.There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andType the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.Username:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: CHILDSPLAY_SP 0.76.2 Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2008-12-04 15:28+0200 Last-Translator: Cristina Language-Team: ROMANIAN Language: ro_RO MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Romanian X-Poedit-Country: ROMANIA (max două pe cuvânt), poţi juca ultimul nivel care este un labirint.MingiBiliardJoc de biliardÎnregistrare Childsplay_spAlege jocul:Joc clasic de memorie unde trebuie să găseşti perechi de cărţi.Joc clasic de memorie unde trebuie să găseşti perechi de sunete. Activitate curentă: %sVrei să renunţi?Litere căzătoareGăseşte sunetulBazinul cu peştiApasă pe tasta 'spaţiu' sau pe mouse pentru a sări peste numărătoarea inversă În ultimele două niveluri literele mari cu cele mici sunt amestecate, dar nu trebuie decât să alegi litera În jocurile interindividuale, cel care are 11 puncte câştigă.Se pare că nu putem utiliza placa de sunet acum şi pentru că această activitate depinde de sunet, vom renunţa. Această problemă poate fi cauzată de o altă aplicaţie care foloseşte acum placa de sunet. ÎnregistrareMemorieMai mulţi jucători - Joacă împotriva altui jucător.Mai mulţi jucători versus calculator - Încearcă să învingi calculatorul.NuPackidPongPuzzleSelectează o activitate şi apasă pe buton, activitatea va începe.Joc individual - Loveşte mingea de perete.Sunet memorieNivel iniţial %sObiectivul jocului:Obiectivul activităţii:Jocul clasic pong unde trebuie să loveşti o minge cu bastonul.Cu cât loveşti mai puţin mingea ca să intre în gaură cu atât vei lua mai multe puncte.Cu cât ţii mai tare pe butonul din dreapta cu atât va fi mai greu să loveşti mingea.Sunt trei niveluri cu trei cuvinte fiecare.Sunt trei niveluri dintre care să alegi:Este o eroare la %s. Vă rog să verificaţi log-urile şi să informaţi producătoriiEste o eroare în baza de date care poate fi cauzată de multe lucruri , dar de cele mai multe ori este cauzată de faptul că versiunea ta a bazei de date nu este compatibilă cu versiunea programului. Voi stoca data ta de baze originală şi o voi înlocui cu una nouă. Baza de date originală este acum denumită sp.db_back şi este plasată în %s Acesta este meniul utilizat pentru selectarea unei activităţi.Încearcă să 'manânci' toate literele in ordinea adecvată.Încearcă să găseşti ieşirea în timp ce mănânci fructele pentru puncte extra şiTipăreşte literele căzătoare pe tastă înainte să atingă solul.Foloseşte butonul din dreapta de pe mouse ca să ţinteşti şi butonul din stânga ca să loveşti mingea. Foloseşte aceste taste pentru a controla bastonul.Nume utilizator:Când ai terminat toate nivelurile, fără a face prea multe greşeliDaMingea albastră trebuie să intre în gaură (la nivel 1)Ai câştigat!!Imaginea ta este salvată la: %sşi cele roşii la nivelurile 2 şi 3.sunete amuzante :-)punctechildsplay-3.3/locale/nl/0000755000175000017500000000000013271013626014072 5ustar stasstaschildsplay-3.3/locale/nl/LC_MESSAGES/0000755000175000017500000000000013271013626015657 5ustar stasstaschildsplay-3.3/locale/nl/LC_MESSAGES/childsplay.mo0000644000175000017500000005537613271013626020370 0ustar stasstasL /@-?&m   4~kt4K8TDKBJaE@I3k}2"D(m v6:;@|()/?OW t(   -?Q.` :@ qa9 . ?TAZ:[y ~ }7 Q _m+s?s   q c!3!l!+""N" U" `"m"|"A" ""#&0#W#(\## ### # #h#$$ ,$ 7$D$K$I[$$$i$)%,2% _%k%{%%%% %% %:%&&;&6U&>&7&M'&Q'Wx'D'(9+(,e(%(I(K)N*Qj*,*.*+Y+jy++7x,c,D-3Y-:-,-D-:.;R.B.E.3/K/T/ c/dm/F/0u01;1W1U[1,1:172mQ292 2#3'3B3#T3x3333H348 6#E6Ii6A6,6 "7.7 =7EI778%8A8<Q888c84'99\9K9>99!:F[:8:D:Q ;*r;;;N;; < <<.<66<m<~<I<J< 2=<=U=&d='=====>>$>,>2>!R>t>(>> >> >>>>> ?3? R?'_?C?&??R@zW@J@ A(A;AB2BA7ByBAB=BBCC C CCVDE]DD DD)D;D%E+E/EEEEEpE^XF>FdF3[G G GGGG?GH(H?HWHuHzHHHHHHHaH ?IJIZImI tIHII IhI[J)aJ J JJ#JJ(J K K +K]5KKK@KE LDSL[L2L\'MMMM?M*.N-YNLNXN -PYNP$P=P QQhQR=R]RWKS>SCS9&TE`TTeT;'UKcUBU UVVb!V<VV}IWWEWXWX)oX>X>XvY=Y Y(YYZ3ZQZmZZZcZc 8< ^a]`+J4R Nfg}{X!5FS%I>3p|r vC:Dtu0@xZ[6Eqj1)&G-;zebh=o,'~wOQ(*s/#\LVikWK?"dUAY. 7 9HMBy$T_Pm2nl Touch the 'Play' button to continue the game. Touch the changed picture.(max two per word), you can play the last level which is a maze.A collection of braintrain games for seniors.Accuracy is more important than speed.Activity :Activity : %sActivity:All pills, both red and yellow, stack on each other.All the games have there own help page, just start a game and hit the stars on top of the screen to select another difficulty.AlphabetAlphabet/KeyboardtrainingAlready found:An error occurred and BraintrainerPlus was restartedAnswer the math questions.Answer the quiz questions.Are sure you want to quit the dailytraining ? All the results will be lost.At the bottom you'll see a image of the complete puzzle.At the top of the screen, you will see a general knowledge question.At the top of the screen, you will see a question about a member of RoyaltyAt the top of the screen, you will see a question about a picture.At the top of the screen, you will see a question about general knowledge.At the top of the screen, you will see a question about math problem.At the top of the screen, you will see a question about sayings.At the top of the screen, you will see a question about the song playing.At the top of the screen, you will see a question from general knowledge question from the selected period.At the top of the screen, you will see a question.BallsBeginBelow it are a choice of possible answers. Touch the correct answer.BilliardBilliard GameCancelChange passwordCheatChildsplay_sp - educational activities, using theme:%sChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.CloseCongratulations, try again ?Content importCorrectness is more important than speedCorrectness is more important than speed.Current activity : %sDaily training sequenceDefault group 1Default group 2DetailsDo you really want to quit ?Electro_spError !Error constructing activity %sError importing activity %sFallinglettersFind all the letters in the right order.FinditFindsoundFishtankFourrowFunFun/AlphabetFun/MiscellaneousFun/MousetrainingGamemanagementGenerated by %s version %s for the %s activityGroupmanagementHit the 'Begin' button to start.Hit the 'space' key or a mousebutton to skip the countdownHit the Escape key to stop.IchangerIf you ready to start the next activity, hit the 'start' button.In the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationInformation about %sIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginLook carefully and try to remember their positions on the screen.Look closely at the complete puzzle picture at the bottom.Look closely at the pictures, when you have them memorized touch 'START'. The pictures turn over, you must match the pair of cards.Make a word with the letter: MathMath QuizMelody QuizMemorize the pictures. One of these pictures will be replaced by a new picture. Touch the 'Start' button to begin the game.MemoryMind the sound sequence as well as the colors sequence.MiscellaneousMousetrainingMovieMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NewNoNo photo albums found ! You should place your pictures inside directories called 'Album_1', 'Album_2' etc Place these directories inside %sNumber of levels : 1Number of levels : 6Numbers_spOKOn the next screen you'll find a keyboard, try to make as much words as possible that begin with the letter '%s'.On the next screen you'll find a keyboard, try to name as much %s as possible with the same letter.On the screen are four blocks of different colours.On the screen you will see two almost identical pictures. However, there are differences between the images.Only words from the dictionary are allowed.PackidPhotoalbumPicture QuizPicture importPity, try again ?Place the puzzle piece on the right where you think it belongs...Please enter your year of birth.Please, choose a set of cards.Please, choose a set of images.Please, choose a set of puzzle images.PongPress the Start button with your finger.PuzzleQuestion ?Quit ?QuizQuiz historyQuiz royalRemember, the order of operations is multiplication or division and followed by addition or subtraction.ResultsSave imageSayings QuizScore:Select LanguageSelect an activity and click on the button, the activity will be started.Set volume levelSettingsSeveral images from the past will appear on the screen. Look carefully at them and remember what you see.Simon_spSingle play - Hit the ball against the wall.SoundmemorySpin the bottleStartStarting a new exerciseStarting level %sStopping timers, please wait...Suggestions:SynonymsText QuizThe blocks will light up randomly along with sound clues.The aim of the game:The aim of this activity:The arrows to the left take you to the previous image.The classic pong game where you must hit a ball with your bat.The difficulty of the set increases from left to right.The fewer hits you need to get the ball in the hole, the more points you get.The game is to match pairs of picturesThe last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: Then push the 'BEGIN' button. The numbers will disappear.There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis activity is known as the daily training which is a collection of activities.This is the menu used to select an activity.Tip: Try creating multiple winning scenario's.Tip:%sTo little questions found in %s for locale '%s', found %s questions should be at least 10To win the game you'll need four red pills lined up after each other horizontally, vertically or diagonal.Touch the 'START' button on the right. The images will dissappear and when they return, one will have changed. Touch the picture which has changed.Try to 'eat' all the letters in the appropriated order.Try to find the numbers, in the correct order and from low to high, by touching them on the screen.Try to find the way out while eating the fruits for extra points andTry to get four in a row in any possible direction.Try to remove the fish by clicking on them with the mouse.Try to repeat the sequence of sounds played.Type the falling letters on the keyboard before they hit the ground.Update BrainTrainerPlusUse the 'sub menu' buttons for the different activity menusUse the menu below to choose between the different game categoriesUse the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsermanagementUsername:When the flashing stops you will be prompted to repeat the sequence by touching the coloured blocks.When you have finished all the levels, without making to much mistakesWhen you spot a difference, touch it with your finger. You can click the question mark in the middle of the screen if you need a hint.When you touch the picture you will hear a sound. Match the image with others that make the same sound,to get points.WipeWipe with your finger on the screen to uncover the picture.YesYou can vertically drop a red pill in a desired column by pressing that exact column.You have finished the daily training module.You have to make the blue ball enter the hole (in level 1)You play very good, do you want to try the next level ?You select the pictures by touching them. As you progress through the star levels more pairs appear to match.You will see various numbers scattered around the screen.You won!!Your average results per group are:Your image is saved at: %sYour results are:and the red ones in levels 2 and 3.beginning with the letter: funny sounds :-)pointsquestion id: %sxml file %s is missing, this shouldn't happen, contact the %s developersProject-Id-Version: childsplay_sp_nl_NL Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2015-04-30 16:56+0200 Last-Translator: Frans Spiesschaert Language-Team: Debian Dutch l10n Team Language: nl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Dutch X-Poedit-Country: NETHERLANDS X-Generator: Gtranslator 2.91.6 Plural-Forms: nplurals=2; plural=(n != 1); Raak de knop Spelen aan om voort te gaan met het spel. Raak het verwisselde plaatje aan.(maximum twee per woord), kun je het laatste niveau, een doolhof, spelen.Een aantal spelen voor senioren waarmee het brein geoefend wordt.Nauwkeurigheid is belangrijker dan snelheid.Activiteit:Activiteit: %sActiviteit:Alle schijven, zowel de rode als de gele, worden op elkaar gestapeld.Alle spelen hebben hun eigen hulppagina. Start een spel en gebruik de sterren bovenaan het scherm om een andere moeilijkheidsgraad te kiezen.AlfabetAlfabet/ToetsenbordtrainingReeds gevonden:Er trad een fout op en BreintrainerPlus werd opnieuw gestartBeantwoord de rekenvragen.Beantwoord de quizvragen.Weet je zeker dat je wilt stoppen met de dagelijkse training? Alle resultaten zullen verloren gaan.Onderaan zie je hoe de afgewerkte puzzel eruit ziet.Bovenaan het scherm zul je een algemene kennisvraag zien.Bovenaan het scherm zul je een vraag zien over een lid van een koningshuis.Bovenaan het scherm zul je een vraag zien over een afbeelding.Bovenaan het scherm zul je een algemene kennisvraag zien.Bovenaan het scherm zul je een vraag zien over een wiskundig probleem.Bovenaan het scherm zul je een vraag zien over gezegdes.Bovenaan het scherm zul je een vraag zien over het gespeelde liedje.Bovenaan het scherm zul je een algemene kennisvraag zien over de gekozen periode.Bovenaan het scherm zul je een vraag zien.BallenBeginnenDaaronder staan een aantal mogelijke antwoorden. Raak het juiste antwoord aan.BiljartBiljartspelAnnulerenWachtwoord wijzigenSpiekenChildsplay - educatieve activiteiten met als thema: %sChildsplay loginKies welk spel je wilt spelen:Klassiek geheugenspel waarbij je kaarten moet zoeken die een paar vormen.Klassiek geheugenspel waarbij je geluiden moet zoeken die een paar vormen.AfsluitenGefeliciteerd. Nog eens?Inhoud ophalenJuistheid is belangrijker dan snelheidJuistheid is belangrijker dan snelheid.Huidige activiteit: %sDagelijkse trainingssessieStandaardgroep 1Standaardgroep 2DetailsWil je echt stoppen?ElectroFout!Fout bij opbouwen activiteit %sFout bij importeren activiteit %sVallendelettersZoek alle letters in de juiste volgorde.ZoekhetZoekgeluidAquariumVierop'nrijVermaakVermaak/AlfabetVermaak/DiversenVermaak/MuistrainingSpelbeheerGegenereerd door %s versie %s voor de activiteit %sGroepsbeheerGebruik de knop Beginnen om te starten.Gebruik de spatiebalk of een muisknop om het aftellen over te slaanGebruik de Escape-toets om te stoppen.VerwisseldplaatjeGebruik de knop Start als je klaar bent om met de volgende activiteit te beginnen.Bij de laatste twee niveaus worden grote en kleine letters door elkaar gebruikt, maar je kunt gewoon kleine letters tikkenIn de modus met twee spelers wint diegene die het eerst 11 punten behaalt.InformatieInformatie over %sHet lijkt erop dat we op dit moment de geluidskaart niet kunnen gebruiken. Aangezien bij deze activiteit alles om geluid draait, breken we ze af. Een oorzaak kan zijn dat een ander programma momenteel de geluidskaart gebruikt.ToetsenbordtrainingTaalLuister naar het geluid en klik op de afbeelding die erbij hoort.LoginKijk aandachtig en tracht hun positie op het scherm te onthouden.Kijk onderaan goed naar het plaatje van de afgewerkte puzzel.Kijk goed naar de plaatjes en probeer ze te onthouden. Druk dan op Start. De plaatjes worden omgedraaid. Zoek nu de paren van identieke plaatjes.Maak een woord met de letter:RekenenRekenquizMuziekquizOnthoud de plaatjes. Een van de plaatjes zal worden vervangen door een nieuw plaatje. Raak de knop Start aan om te beginnen met spelen.MemoryLet zowel op de volgorde van geluiden als op de volgorde van kleuren.DiversenMuistraining FilmTwee spelers - Speel tegen iemand anders.Tegen de computer spelen - Probeer de computer te verslaan.NieuwNeeGeen fotoalbums gevonden! U moet uw afbeeldingen plaatsen in mappen genaamd „Album_1”, „Album_2” enz. Plaats deze mappen in %sAantal niveaus: 1Aantal niveaus: 6GetallenOKOp het volgende scherm zie je een toetsenbord. Maak zoveel mogelijk woorden die beginnen met de letter „%s”.Op het volgende scherm zie je een toetsenbord. Noem zoveel mogelijk %s op met dezelfde letter.Op het scherm zie je vier vlakken met een verschillende kleur.Op het scherm zie je twee bijna identieke plaatjes. Toch zijn er verschillen tussen de afbeeldingen.Alleen woorden uit het woordenboek zijn toegestaan.LetterhapperFotoalbumFotoquizFoto's ophalenJammer. Nog eens?Plaats aan de rechterkant het puzzelstukje op de juiste plek...Vul je geboortejaar in.Kies een stel kaarten.Kies een stel plaatjes.Kies een stel puzzelplaatjes.PongRaak de knop Start aan.PuzzelVraag?Stoppen?QuizQuiz over geschiedenisQuiz over koningshuizenLet op, de volgorde van de bewerkingen is vermenigvuldigen of delen en dan optellen of aftrekken.ResultatenPlaatje opslaanQuiz over gezegdesScore:Kies een taalKies een activiteit en klik op de knop. De activiteit wordt dan gestart.Stel het geluidsvolume inInstellingenVerschillende plaatjes van vroeger verschijnen op het scherm. Bekijk ze goed en probeer ze te onthouden.SimonAlleen spelen - Sla de bal tegen de muur.GeluidsmemoryDraai de flesStartEen nieuwe oefening wordt opgestartNiveau %s wordt opgestartBezig timers te stoppen. Een ogenblik...Suggesties:SynoniemenTekstquizDe vlakken zullen in een willekeurige volgorde oplichten en tegelijk zul je een geluid horen.De bedoeling van het spel:Het doel van deze activiteit:Met het pijltje aan de linkerkant ga je naar het vorige plaatje.Het klassieke pongspel waarbij je een bal moet slaan met een knuppel.De moeilijkheidsgraad van de partij neemt toe van links naar rechts.Hoe minder stoten je nodig hebt om de bal in het gat te krijgen, hoe meer punten je krijgt.Het spel bestaat erin paren van plaatjes te vindenHet laatste niveau is alleen beschikbaar als je de eerste drie niveaus foutloos gedaan hebt.Hoe langer je de linker muisknop ingedrukt houdt, hoe harder je de bal raakt.Het woord dat je zoekt is: Druk daarna op de knop Beginnen. De getallen zullen verdwijnen.Er zijn drie niveaus met elk drie woorden.Er zijn drie manieren waaruit je kunt kiezen:Er trad een fout op in %s. Controleer de logs en informeer de ontwikkelaars.Er trad een fout op in de databank. Dit kan vele oorzaken hebben, maar meestal is de oorzaak dat je databankversie niet overeenkomt met de versie van het programma. Ik zal nu een reservekopie maken van je originele databank en ze dan vervangen door een nieuwe. De originele databank werd bewaard onder de naam sp_db_back en werd geplaatst in %sDeze activiteit heeft %s niveausDeze activiteit staat bekend als de dagelijkse training en omvat een aantal activiteiten.Met dit menu kies je een activiteit.Tip: tracht verschillende succesvolle scenario's te creëren.Tip: %sTe weinig vragen gevonden voor %s bij taalgebied „%s”. Er werden %s vragen gevonden, terwijl het er tenminste 10 hadden moeten zijnJe wint het spel als je horizontaal, verticaal of diagonaal vier rode schijven op een rij kunt plaatsen.Raak aan de rechterkant de knop Start aan. De plaatjes zullen verdwijnen en als ze weer te voorschijn komen, zal er een verwisseld zijn. Raak het verwisselde plaatje aan.Probeer al de letters in de juiste volgorde „op te eten”.Zoek de getallen in de juiste volgorde van laag naar hoog door ze op het scherm aan te raken.Probeer de weg naar buiten te vinden, en eet ondertussen het fruit voor extra punten enTracht er vier op een rij te krijgen in gelijk welke richting.Probeer de vissen te verwijderen door er op te klikken met de muis.Probeer het patroon van afgespeelde geluiden te herhalen.Tik de vallende letters in op het toetsenbord voor ze de grond raken.BreinTrainerPlus bijwerkenGebruik de knoppen van het „submenu” om naar de menu's van de verschillende activiteiten te gaan.Gebruik het menu onderaan om een ander soort spel te kiezenGebruik de rechter muisknop om te richten en de linker om de bal te spelen.Gebruik deze toetsen op het toetsenbord om de knuppel te bedienen.Gebruiker: %sGebruikersbeheerGebruikersnaam:Als het oplichten stopt, wordt je gevraagd de reeks te herhalen door de kleurvlakken aan te raken.Als je alle niveaus afgewerkt hebt, zonder al te veel foutenAls je een verschil vindt, raak het dan aan. Als je een hint nodig hebt, kun je klikken op het vraagteken in het midden van het scherm.Als je de afbeelding aanraakt, zul je een geluid horen. Je scoort punten als je het plaatje vindt dat hetzelfde geluid maakt.WissenVeeg met je vinger over het scherm om het plaatje zichtbaar te maken.JaJe kunt een rode schijf in de gewenste kolom laten vallen door op die kolom te drukken.Je bent klaar met de dagelijkse training.Je moet zorgen dat de blauwe bal in het gat komt (in niveau 1)Je speelt erg goed. Wil je het op een volgend niveau proberen?Selecteer de plaatjes door ze aan te raken. Hoe meer sterren (hoe hoger het niveau), hoe meer plaatjes er verschijnen.Verspreid over het scherm zul je verschillende getallen zien.Je wint!!Je gemiddelde resultaten per groep zijn:Je afbeelding is bewaard in: %sJe resultaten zijn:en de rode in niveaus 2 en 3.die beginnen met de letter:grappige geluiden :-)puntenvraagnummer: %sXML-bestand %s ontbreekt. Dit zou niet mogen gebeuren. Neem contact op met de ontwikkelaars van %s.childsplay-3.3/locale/hu/0000755000175000017500000000000013271013626014075 5ustar stasstaschildsplay-3.3/locale/hu/LC_MESSAGES/0000755000175000017500000000000013271013626015662 5ustar stasstaschildsplay-3.3/locale/hu/LC_MESSAGES/childsplay.mo0000644000175000017500000001753113271013626020362 0ustar stasstasL|ep@q  :-;h(( 8BK O\n:q9- g s ? P ?Y    + ? 3 6 = B II ,     >- Ml W D W ,m % I K V,r7D:DWE3 F)p:t # I[Z  %H=E( +7: r ~  Nb >n ? 0#<T E8 +8,S?O[4K- O0!z7h>[;:/AS:b7 (#.R5$B / )K-E 3D7 9!H@? '"(<:.> 6=L%,0&;F*2#4+J8G1CAI(max two per word), you can play the last level which is a maze.Activity : %sAlphabetAlphabet/KeyboardtrainingBallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?FallinglettersFind all the letters in the right order.FindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginMathMemoryMiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sStopping timers, please wait...The aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: 1.4 Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2010-02-11 07:25+0100 Last-Translator: Stas Zytkiewicz Language-Team: Hungarian Language: hu MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit (legfeljebb 2 hiba szavanként), akkor játszhatsz ez utolsó szinttel, ami egy labirintus.Feladat : %sABCABC/Billentyűzet gyakorlásGolyókBilliárdBilliárd játékChildsplay_sp bejelentkezésVálassz egy játékot:Klasszikus memória játék, ahol a kártyák párját kell megkeresned.Klasszikus memória játék, ahol a hangok párját kell megtalálni.A helyesség fontosabb, mint a sebességAktuális feladat : %sTényleg ki szeretnél lépni?PotyogóBetűkTaláld meg az összes betűt, a megfelelő sorrendben.HangkeresőAkváriumMókaMóka/ABCMóka/EgyébMóka/Egér gyakorlásA számlálás átugrásához nyomd meg a 'space'-t, vagy klikkelj az egérrelAz utolsó két szinten vegyesen jönnek kis- és nagybetűk, de nem kell a méretükre figyelned.Többjátékos módban az nyer, aki előbb eléri a 11 pontot.InformációÚgy tűnik, a hang nem működik. Mivel ez a feladat hangok nélkül értelmét veszti, ezért most inkább kilépünk belőle. Elképzelhető, hogy éppen egy másik program teljesen lefoglalta a hangkátyát.Billentyűzet gyakorlásNyelvHallgassad meg a hangot, és klikkelj a hozzá tartozó képre.BejelentkezésMatekMemóriaEgyébEgér gyakorlásTöbbjátékos - játsz egy másik játékossal.Többjátékos, a gép ellen - Próbáld legyőzni a gépet.NemPac-ManóPongKirakóVálassz ki egy feladatot, nyomd meg a gombot, és a feladat elindul.Egyszemélyes játék - a labdát a falnak kell ütnöd.HangmemóriaKövetkezik a(z) %s. szintSzámlálókat leállítom, kérlek várj...A játék célja:A feladat célja:Klasszikus pong játék, ahol a labdát az ütővel kell ütni.Minél kevesebb ütésből kerül a golyó a lyukba, annál több pontot kapsz.Az utolsó szint csak akkor elérhető, ha az első három szintet hibátlanul teljesíted.Minél továb tartod lenyomva a bal gombot, annál erősebb lesz a lökés.A megkeresendő szó:Három szint van, mindegyiken három szóval.3 módozat van:Hiba történt itt: %s. Ellenőrizd a naplót, és értesítsd a fejlesztőketHiba történt az adatbázisban. Ennek a leggyakoribb oka az, hogy eltérő a program és az adatbázis verziója. Elmentem az aktuális adatbázist, és és lecserélem egy újabbra. Az eredeti adatbázist sp.db_back néven találhatod meg itt: %sEnnek a feladatnak %s szintje vanEz a feladatválasztó menü.Próbáld 'megenni' a betűket a megfelelő sorrendben.Próbáld megkeresni a kiutat, miközben minél több gyümölcsöt próbálsz megenni extra pontokért,Próbáld kivenni a halat úgy, hogy ráklikkelsz az egérrel.Gépeld be a potyogó betűket, mielőtt leesnek a földre.A jobb egérgombbal célozz, a ballal lökheted a golyót.Ezekkel a gombokkal irányíthatod a denevért.Felhasználó: %sFelhasználó:Ha sikerül az összes szintet sok hiba nélkül befejezniIgenAz első szinten a kék golyót kell a lyukba löknöd,Nyertél!!A képet az alábbi helyre mentettem: %sés a pirosakat a 2-3. szinten.és mókás hangokért cserébe :-)pontokchildsplay-3.3/locale/nb/0000755000175000017500000000000013271013626014060 5ustar stasstaschildsplay-3.3/locale/nb/LC_MESSAGES/0000755000175000017500000000000013271013626015645 5ustar stasstaschildsplay-3.3/locale/nb/LC_MESSAGES/childsplay.mo0000644000175000017500000001111613271013626020336 0ustar stasstas&L5|PQW `n:;, ;E:Nq? I htMDI3K},DE;  :  #  n    : : 4 B S e w L k /'W `k oGzW<XL8*,FKs 7 +H "# !&  $ %BallsBilliardBilliard GameChildsplay_sp loginClassic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Current activity : %sDo you really want to quit ?FallinglettersFindsoundFishtankHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.Listen to the sound and click on the image to which it belongs.LoginMemoryNoPuzzleSelect an activity and click on the button, the activity will be started.SoundmemoryStarting level %sThe aim of this activity:The fewer hits you need to get the ball in the hole, the more points you get.The longer you hold the left button the harder it will hit the ball.There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis is the menu used to select an activity.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Username:YesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.pointsProject-Id-Version: childsplay_sp_nb_NO Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2008-10-06 14:14+0200 Last-Translator: stas Zytkiewicz Language-Team: Language: nb_NO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.11.4 KulerBiljardBiljard SpillChildsplay_sp innloggingKlassisk hukommelses spill hvor du skal finne 2 like kort.Klassisk hukommelses spill hvor du skal finne 2 like kort.Aktivitet: %sVil du avslutte?Dalende bokstaverAvslutnigs melodiAkvariumTrykk "mellomrom" tasten eller en knapp på musen for å stoppe nedtellingenI de to siste nivåene er det en blanding av små og store bokstaver. Poenget er å finne rett bokstav, og du trenger ikke å skrive de som små eller store.Det ser ut til at vi ikke kan bruke lydkortet akkurat nå, og siden denne aktiviteten er basert på lyder avslutter vi. Dette problemet kan oppstå når et annet program bruker lydkortet.Lytt til lydene og klikk på tilhørende bilde.Logg innHukommelseNeiPuslespillVelg en aktivitet og klikk på knappen, aktiviteten vil da bli startet.Gjenkjen lydenStarter nivå %sMålet med denne aktiviteten:Desto færre støt du trenger for å få kulen ned i hullet, desto flere poeng får du.Desto lenger knappen holdes nede desto hardere støtes kulenEn feil ble oppdaget i %s. Vennligst sjekk log filene og informer utviklerneDet var en feil i databasen. Dette kan skje av mange grunner, men den mest vanlige er at din versjon av databasen ikke er den samme som versjonen av programmet. Programmet vil nå ta en sikkerhetskopi av din database og erstatte den med en ny. Den originale databasen blir nå kalt sp.db_back og blir lagret i %sDette er menyen for å velge en aktivitet.Trykk på bokstavene før de treffer bakken.Sikte med den høyre museknappen og bruk venstre kanpp til å støte kulen.Brukernavn:JaMålet i level 1 er å få den blå ballen ned i hulletDu vant!!Ditt bilde er lagret i: %ssamt de røde i nivå 2 og 3poengchildsplay-3.3/locale/pt_BR/0000755000175000017500000000000013271013626014467 5ustar stasstaschildsplay-3.3/locale/pt_BR/LC_MESSAGES/0000755000175000017500000000000013271013626016254 5ustar stasstaschildsplay-3.3/locale/pt_BR/LC_MESSAGES/childsplay.mo0000644000175000017500000005527613271013626020764 0ustar stasstasL /@-?&m   4~kt4K8TDKBJaE@I3k}2"D(m v6:;@|()/?OW t(   -?Q.` :@ qa9 . ?TAZ:[y ~ }7 Q _m+s?s   q c!3!l!+""N" U" `"m"|"A" ""#&0#W#(\## ### # #h#$$ ,$ 7$D$K$I[$$$i$)%,2% _%k%{%%%% %% %:%&&;&6U&>&7&M'&Q'Wx'D'(9+(,e(%(I(K)N*Qj*,*.*+Y+jy++7x,c,D-3Y-:-,-D-:.;R.B.E.3/K/T/ c/dm/F/0u01;1W1U[1,1:172mQ292 2#3'3B3#T3x3333H34/55U63o6.6 66 6J6D777838%F8l8R8E8H$9Km9A9H9HD:?:H:`;0w;;;E;;<< < *<84<m<<A<I<(=/=M=+`=,==!==>>> 5>@>G>e>>*> > >> > >>??:?,P?}?(?N?! @.@V7@{@4 A ?ALAbA2BIB8PBB?BDBC!C CCCDD>DDDD2DG(EpEuEzEF,F CFNFuQF^F.&G\UG0GGGG HHN8H)H)H*H=IDI(IIrI IIIIIdI J *J8J IJVJEhJJJeJ@K,IKvKKKKK&K K L LCL_LsL:LBL= M[KM)M_MI1N{N>N/N"ON*OiyOPUQ-WQ*QQgQr RR5RZRL>SES9S/ T<;TxT?TDTHU6aU UUUcUA5VwVyWW3WWkW05X>fX<X}X2`YY'YYYYZ5ZJZQZYdZc 8< ^a]`+J4R Nfg}{X!5FS%I>3p|r vC:Dtu0@xZ[6Eqj1)&G-;zebh=o,'~wOQ(*s/#\LVikWK?"dUAY. 7 9HMBy$T_Pm2nl Touch the 'Play' button to continue the game. Touch the changed picture.(max two per word), you can play the last level which is a maze.A collection of braintrain games for seniors.Accuracy is more important than speed.Activity :Activity : %sActivity:All pills, both red and yellow, stack on each other.All the games have there own help page, just start a game and hit the stars on top of the screen to select another difficulty.AlphabetAlphabet/KeyboardtrainingAlready found:An error occurred and BraintrainerPlus was restartedAnswer the math questions.Answer the quiz questions.Are sure you want to quit the dailytraining ? All the results will be lost.At the bottom you'll see a image of the complete puzzle.At the top of the screen, you will see a general knowledge question.At the top of the screen, you will see a question about a member of RoyaltyAt the top of the screen, you will see a question about a picture.At the top of the screen, you will see a question about general knowledge.At the top of the screen, you will see a question about math problem.At the top of the screen, you will see a question about sayings.At the top of the screen, you will see a question about the song playing.At the top of the screen, you will see a question from general knowledge question from the selected period.At the top of the screen, you will see a question.BallsBeginBelow it are a choice of possible answers. Touch the correct answer.BilliardBilliard GameCancelChange passwordCheatChildsplay_sp - educational activities, using theme:%sChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.CloseCongratulations, try again ?Content importCorrectness is more important than speedCorrectness is more important than speed.Current activity : %sDaily training sequenceDefault group 1Default group 2DetailsDo you really want to quit ?Electro_spError !Error constructing activity %sError importing activity %sFallinglettersFind all the letters in the right order.FinditFindsoundFishtankFourrowFunFun/AlphabetFun/MiscellaneousFun/MousetrainingGamemanagementGenerated by %s version %s for the %s activityGroupmanagementHit the 'Begin' button to start.Hit the 'space' key or a mousebutton to skip the countdownHit the Escape key to stop.IchangerIf you ready to start the next activity, hit the 'start' button.In the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationInformation about %sIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginLook carefully and try to remember their positions on the screen.Look closely at the complete puzzle picture at the bottom.Look closely at the pictures, when you have them memorized touch 'START'. The pictures turn over, you must match the pair of cards.Make a word with the letter: MathMath QuizMelody QuizMemorize the pictures. One of these pictures will be replaced by a new picture. Touch the 'Start' button to begin the game.MemoryMind the sound sequence as well as the colors sequence.MiscellaneousMousetrainingMovieMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NewNoNo photo albums found ! You should place your pictures inside directories called 'Album_1', 'Album_2' etc Place these directories inside %sNumber of levels : 1Number of levels : 6Numbers_spOKOn the next screen you'll find a keyboard, try to make as much words as possible that begin with the letter '%s'.On the next screen you'll find a keyboard, try to name as much %s as possible with the same letter.On the screen are four blocks of different colours.On the screen you will see two almost identical pictures. However, there are differences between the images.Only words from the dictionary are allowed.PackidPhotoalbumPicture QuizPicture importPity, try again ?Place the puzzle piece on the right where you think it belongs...Please enter your year of birth.Please, choose a set of cards.Please, choose a set of images.Please, choose a set of puzzle images.PongPress the Start button with your finger.PuzzleQuestion ?Quit ?QuizQuiz historyQuiz royalRemember, the order of operations is multiplication or division and followed by addition or subtraction.ResultsSave imageSayings QuizScore:Select LanguageSelect an activity and click on the button, the activity will be started.Set volume levelSettingsSeveral images from the past will appear on the screen. Look carefully at them and remember what you see.Simon_spSingle play - Hit the ball against the wall.SoundmemorySpin the bottleStartStarting a new exerciseStarting level %sStopping timers, please wait...Suggestions:SynonymsText QuizThe blocks will light up randomly along with sound clues.The aim of the game:The aim of this activity:The arrows to the left take you to the previous image.The classic pong game where you must hit a ball with your bat.The difficulty of the set increases from left to right.The fewer hits you need to get the ball in the hole, the more points you get.The game is to match pairs of picturesThe last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: Then push the 'BEGIN' button. The numbers will disappear.There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis activity is known as the daily training which is a collection of activities.This is the menu used to select an activity.Tip: Try creating multiple winning scenario's.Tip:%sTo little questions found in %s for locale '%s', found %s questions should be at least 10To win the game you'll need four red pills lined up after each other horizontally, vertically or diagonal.Touch the 'START' button on the right. The images will dissappear and when they return, one will have changed. Touch the picture which has changed.Try to 'eat' all the letters in the appropriated order.Try to find the numbers, in the correct order and from low to high, by touching them on the screen.Try to find the way out while eating the fruits for extra points andTry to get four in a row in any possible direction.Try to remove the fish by clicking on them with the mouse.Try to repeat the sequence of sounds played.Type the falling letters on the keyboard before they hit the ground.Update BrainTrainerPlusUse the 'sub menu' buttons for the different activity menusUse the menu below to choose between the different game categoriesUse the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsermanagementUsername:When the flashing stops you will be prompted to repeat the sequence by touching the coloured blocks.When you have finished all the levels, without making to much mistakesWhen you spot a difference, touch it with your finger. You can click the question mark in the middle of the screen if you need a hint.When you touch the picture you will hear a sound. Match the image with others that make the same sound,to get points.WipeWipe with your finger on the screen to uncover the picture.YesYou can vertically drop a red pill in a desired column by pressing that exact column.You have finished the daily training module.You have to make the blue ball enter the hole (in level 1)You play very good, do you want to try the next level ?You select the pictures by touching them. As you progress through the star levels more pairs appear to match.You will see various numbers scattered around the screen.You won!!Your average results per group are:Your image is saved at: %sYour results are:and the red ones in levels 2 and 3.beginning with the letter: funny sounds :-)pointsquestion id: %sxml file %s is missing, this shouldn't happen, contact the %s developersProject-Id-Version: Childsplay Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:41+0200 PO-Revision-Date: 2017-07-09 11:47+0200 Last-Translator: Stas Zytkiewicz Language-Team: Danie von Weissenfluh , Eduardo Mozart de Oliveira Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Generator: Poedit 1.8.11 Toque o botão 'Jogar' para continuar o jogo. Toque a figura alterada.(no máximo dois por palavra), você pode jogar o último nível que é um labirinto.Uma coleção de jogos de lógica para experientes.Precisão é mais importante que a velocidade.Atividade :Atividade : %sAtividade :Todas as pílulas, ambas vermelhas e amarelas, empilham uma sobre a outra.Todos os jogos possuem sua própria página de ajuda, somente inicie o jogo e clique nas estrelas no topo da tela para selecionar outra dificuldade.AlfabetoAlfabeto/Exercício com tecladoJá encontrado:Ocorreu um erro e o BraintrainerPlus foi reiniciadoResponda as questões de matemática.Resposta as questões do quiz.Você quer realmente sair do treino diário ? Todos os resultados serão perdidos.No rodapé, você encontrará uma imagem do quebra-cabeças completo.No topo da tela, você encontrará uma questão de conhecimentos gerais.No topo da tela, você encontrará uma questão sobre um membro da Realeza.No topo da tela, você encontrará uma questão sobre uma imagem.No topo da tela, você encontrará uma questão de conhecimentos gerais.No topo da tela, você encontrará uma questão de problema matemático.No topo da tela, você encontrará uma questão sobre palavras.No topo da tela, você encontrará uma questão sobre o som reproduzido.No topo da tela, você encontrará uma questão de conhecimentos gerais do período selecionado.No topo da tela, você encontrará uma questão.BolasComeçarAbaixo há escolhas de possíveis respostas Toque a resposta correta.BilharJogo de bilharCancelarAlterar senhaTrapacearChildsplay_sp - atividades educacionais, usando tema: %sChildsplay_sp loginEscolha o jogo para jogar:Jogo clássico de memória onde você tem que encontrar os pares.Jogo clássico de memória onde você tem que encontrar os pares de sons.FecharParabéns, tentar novamente ?Importar conteúdoAcertar é mais importante que a velocidadeAcertar é mais importante que a velocidade.Atividade atual : %sSequência de treinamento diárioGrupo padrão 1Grupo padrão 2DetalhesVocê quer realmente sair ?Electro_spErro !Erro construindo atividade %sErro importando atividade %sQueda de letrasEncontre todas as letras na ordem correta.EncontrarEncontrarsomAquárioJogo da velhaDiversãoDiversão/AlfabetoDiversão/DiversosDiversão/Exercício com mouseGerenciamento do jogoGerado por %s versão %s para a atividade %sGerenciamento de grupoAperte o botão 'Começar' para iniciar.Aperte a tecla 'espaço' ou o botão do mouse para pular a contagem regressivaPressione a tecla Esc para parar.IchangerSe você estiver pronto para iniciar a próxima atividade, clique no botão 'iniciar'.Nos dois últimos níveis as maiúsculas e minúsculas são mistas, mas você não tem que seguir o tamanho, apenas a letraNo modo multiplayer, aquele que tem 11 pontos ganha.InformaçãoInformação sobre %sParece que não podemos usar a placa de som agora e devido a esta atividade precisar de som, acabamos de sair. Este problema também pode ser causado por outro aplicativo que está utilizando a placa de som.Exercício com tecladoIdiomaOuça o som e clique na imagem para a qual ela pertence.LoginObserve atentamente e tente lembrar de suas posições na tela.Observe atentamente a imagem do quebra-cabeças completo no rodapé.Observe atentamente as figuras, quando você memorizá-las toque em 'INICIAR'. As imagens serão viradas, você deve encontrar o par correspondente das cartas.Escreva uma palavra com a letra: MatemáticaQuiz de MatemáticaQuiz de MelodiaMemorize as imagens. Uma destas imagens serão substituídas por uma nova imagem. Toque o botão 'Iniciar' para começar o jogo.MemóriaMemorize a sequência de som assim como a sequência de cores.DiversosExercício com mouseFilmeMúltiplos jogadores - Jogue contra outro jogador.Múltiplos jogadores contra o computador - Tente derrotar o computador.NovoNãoNenhum álbum de fotos encontrado ! Você deve salvar suas imagens dentro de diretórios com o nome 'Album_1', 'Album_2' etc Crie estes diretórios em %sNúmero de níveis : 1Número de níveis : 6Numbers_spOKNa próxima tela você encontrará um teclado, tente digitar quantas palavras conseguir que iniciem com a letra '%s'.Na próxima tela você encontrará um teclado, tente nomear o máximo de %s com a mesma letra.Na tela há quatro blocos de cores diferentes.Na tela você verá duas imagens quase idênticas. Porém, há diferenças entre as imagens.Somente palavras do dicionário são permitidas.PackidÁlbum de fotosQuiz de imagensImportar imagensQue pena, tentar novamente ?Coloque a peça do quebra-cabeças no lugar que você acha que ela pertence...Por favor digite o ano do seu nascimento.Por favor, escolha um conjunto de cartas.Por favor, escolha um conjunto de imagens.Por favor, escolha um conjunto de imagens de quebra-cabeças.PongPressione o botão Iniciar com seu dedo.Quebra cabeçaPergunta ?Sair ?QuizQuiz de históriaQuiz da realezaLembre-se, a ordem de operações é multiplicação ou divisão seguida de adição ou subtração.ResultadosSalvar imagemQuiz de PalavrasPontuação:Selecionar idiomaEscolha uma atividade e clique no botão, a atividade será iniciada.Configurar nível de volumeConfiguraçõesDiversas imagens anteriores aparecerão na tela. Observe-as atentamente e lembre-se do que você vê.Simon_spUm jogador - Acertar a bola contra a parede.Memória com somGire a garrafaIniciarIniciando um novo exercícioIniciando nível %sTempo de contagem, por favor espere...Sugestões:SinônimosQuiz de textoOs blocos acenderão aleatoriamente em conjunto com sinais sonoros.O objetivo do jogo:O objetivo dessa atividade:As setas para a esquerda levarão você a imagem anterior.O jogo clássico pong onde você deve acertar uma bola com o taco.A dificuldade do conjunto aumenta da esquerda para a direita.Quanto menos jogadas você realizar para acertar a bola no buraco, mais pontos você ganha.O jogo é para encontrar pares de figurasO último nível é liberado somente quando você termina os três primeiros níveis sem erros.Quanto mais você segura o botão esquerdo mais forte irá bater na bola.A palavra para encontrar é:Então aperte o botão 'COMEÇAR'. Os números desaparecerão.Existem três níveis, com três palavras cada.Existem três modos para escolher:Houve um erro no %s. Por favor, verifique os logs e informe os desenvolvedoresHouve um erro no banco de dados isso pode ser causado por muitas coisas, mas na maioria das vezes é causado pelo fato que a sua versão do banco de dados não corresponde à versão do programa. Vou fazer uma cópia do seu banco de dados original e, em seguida, substitua-o por um novo. O banco de dados original se chama agora a sp.db_back e é colocado em %sEsta atividade tem %s níveisA atividade é conhecida como treinamento diário que é uma coleção de atividades.Este é o menu para selecionar uma atividade.Dica: Tente vencer de maneiras diferentes.Dica:%sPoucas questões encontradas em %s para o idioma '%s', encontrado %s questões deveriam ter ao menos 10Para ganhar o jogo você precisará de quatro pílulas vermelhas preenchidas na horizontal, vertical ou diagnonal.Toque no botão 'Iniciar'Experimente 'comer' todas as letras na ordem correta.Tente encontrar os números, na ordem correta e do menor para o maior, tocando-os na tela.Tente encontrar a saída enquanto come os frutos para ganhar pontos extras eTente conseguir quatro em uma linha em todas as direções possíveisTente remover os peixes, clicando sobre eles com o mouse.Tente repetir a sequência de som reproduzidos.Digite as letras caindo no teclado antes que toquem no solo.Atualizar BrainTrainerPlusUse os botões de 'sub menu' para diferentes menus de atividadeUse o menu abaixo para escolher entre diferentes categorias de jogosUse o botão direito para mirar e o botão esquerdo para acertar a bola.Utilize estas teclas do teclado para controlar o taco.Usuário: %sGerenciamento de usuárioNome do usuário:Quando parar de piscar, você será solicitado a repetir a sequência tocando nos blocos coloridos.Quando tiver realizado todos os níveis, sem cometer muitos errosQuando você encontrar uma diferença, toque-a com seus dedos. Você pode clicar no ponto de interrogação no meio da tela se você precisar de ajuda.Quando você tocar na figura você escutará um som. Combine a imagem com outras que fazem o mesmo som para obter pontos.ArrasteArraste com seu dedo na tela para revelar a imagem.SimVocê pode soltar verticalmente uma pílula vermelha na coluna deseja pressionando a coluna correspondente.Você terminou o módulo de treinamento diário.Você tem que fazer a bola azul entrar no buraco (no nível 1)Você jogou muito bem, você quer tentar o próximo nível ?Você seleciona as imagens tocando-as. A medida que você avança os níveis de estrela mais pares aparecerão para combinar.Você verá vários números espalhados pela tela.Você ganhou!!Seus resultados médios por grupo são:Sua imagem foi salva no: %sSeus resultados são:e o vermelho nos níveis 2 e 3.começando com a letra: sons engraçados :-)pontosid da questão: %sarquivo xml %s está faltando, isso não deveria acontecer, contate os desenvolvedores %schildsplay-3.3/locale/sv/0000755000175000017500000000000013271013626014111 5ustar stasstaschildsplay-3.3/locale/sv/LC_MESSAGES/0000755000175000017500000000000013271013626015676 5ustar stasstaschildsplay-3.3/locale/sv/LC_MESSAGES/childsplay.mo0000644000175000017500000001747713271013626020407 0ustar stasstasL|ep@q  :-;h(( 8BK O\n:q9- g s ? P ?Y    + ? 3 6 = B II ,     >- Ml W D W ,m % I K V,r7D:DWE3 F)p:t # GBX   1;A6}& #-6 ; HUSfm6( _k5J8Q   +4&+?2&r #GRWZMS*m'XE_1~6IA1NsS6M\Bk3 !  +85$B / )K-E 3D7 9!H@? '"(<:.> 6=L%,0&;F*2#4+J8G1CAI(max two per word), you can play the last level which is a maze.Activity : %sAlphabetAlphabet/KeyboardtrainingBallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?FallinglettersFind all the letters in the right order.FindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginMathMemoryMiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sStopping timers, please wait...The aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: Schoolsplay Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: Last-Translator: June Language-Team: Language: sv_SE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Swedish X-Poedit-Country: SWEDEN (max två per ord), kan du spela sista nivån som är en labyrint.Aktivitet: %sAlfabetAlfabet/tangentbordsträningBollarBiljardBiljard SpelChildsplay_sp inloggningVälj spel:Klassiskt memoryspel där du skall hitta kortpar.Klassiskt memoryspel där du skall hitta matchande ljudpar.Det är viktigare att få rätt sva än att vara snabbNuvarande aktivitet : %sVill du verkligen avsluta ?FallandebokstäverHitta alla bokstäver i rätt ordning.HittaljudAkvariumSkojSkoj/AlfabetSkoj/DiverseSkoj/MusträningTryck på mellanslagstangenten eller en musknapp för att hoppa över nedräkningenPå de sista två nivåerna blandas stora och små bokstäver, men du behövder bara matcha själva bokstavenI flera spelare lägen, den som får 11 poäng vinner.InformationDet verkar som om vi inte kan använda ljudkortet nu, och eftersom denna aktivitet handlar om ljud, avslutas den. Detta problem kan också orsakas av att ett annat program använder ljudkortet just nu.TangentbordsträningSpråkLyssna till ljudet och klicka på den bild dit det hör.InloggningMatematikMemoryDiverseMusträningFlera spelare - Spela mot en annan spelare.Flera spelare mot datorn - Försök att slå datorn.NejPackidPongPusselVälj en aktivitet och klicka på knappen, aktiviteten startas.Enkelt spel - Slå bollen mot väggen.LjudmemoryFörsta nivå %sTidtagning avslutas, vänta...Spelets målsättning:Målsättning för denna aktivitet:Det klassiska pong-spelet där du slår till en boll med ditt slagträ.Ju färre slag du behöver för att få bollen i hålet, desto mer poäng får du.Den sista nivån är bara tillgänglig då du klarar av de första tre nivåerna utan fel.Ju längre du håller ner vänstra knappen, desto hårdare slås bollen till.Ordet du skall hitta är:Det finns tre nivåer med tre ord i varje.Det finns tre spelsätt att välja på:Det förekom ett fel i %s. Vänligen kontrollera loggfier och meddela programutvecklarnaDet fanns ett fel i databasen, detta kan vara på grund av flera saker, men oftast är det orsakat av att din version av databasen inte matchar programversionen. Jag kommer att säkerhetskopiera den ursprungliga databasen och sedan ersätta den med en ny databas. Den ursprungliga databasen heter nu sp.db_back och finns i %sDenna aktivitet har %s nivåreDenna meny används för att välja en aktivitet.Försök att 'äta' alla bokstäver i angiven ordning.Försök att hitta vägen ut medans du äter frukter för extrapoäng ochFörsök att ta bort fiskarna genom att klicka på dem med musen.Tryck på de fallande bosktäverna på tangentbordet före de träffar marken.Använd högra musknappen för att sikta och vänstra knappen för att slå bollen.Använd tangentbordet för att kontrollera slagträet.Användare: %sAnvändarnamn:Då du har gått igenom alla nivåer, utan alltför många misstagJaDu måste få blå bollen in i hålet (på nivå 1)Du vann!!Din bild är sparad i: %soch de röda i nivårena 2 och 3.kul ljud :-)poängchildsplay-3.3/locale/sl/0000755000175000017500000000000013271013626014077 5ustar stasstaschildsplay-3.3/locale/sl/LC_MESSAGES/0000755000175000017500000000000013271013626015664 5ustar stasstaschildsplay-3.3/locale/sl/LC_MESSAGES/childsplay.mo0000644000175000017500000001702513271013626020362 0ustar stasstasJleP@Q  : ;H(( "+ /<N:`q9 G  $ ?- m s x  + ?     I ,g     > M@ D  , % I< K ,7DS:DE3^ F: +5#PtBc :=O(/ "-6=N]Cu:]CU5[  /C36= B<O%,  =!>_= . =76u*-C!2e>3%  1?)Q{4~ 3#@ . (I,C 2B5 7 F>= &!'A8-<:;J$+/%9D)1"4*H6E0?G(max two per word), you can play the last level which is a maze.Activity : %sAlphabetAlphabet/KeyboardtrainingBallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?FallinglettersFind all the letters in the right order.FindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.It seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginMathMemoryMiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sStopping timers, please wait...The aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The longer you hold the left button the harder it will hit the ball.The word to find is: There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: childsplay_sp_latest Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2008-12-31 10:12+0100 Last-Translator: Stas Zytkiewicz Language-Team: Slovenian Language: sl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Lokalize 0.2 Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0); (največ dve na besedo), lahko igrate zadnji nivo, ki je labirint.Dejavnost: %sAbecedaVaje za abecedo / tipkovnicoŽogeBiljardBiljardPrijava Childsplay_spIzberite igro:Klasična igra spomina, kjer morate najti dve enaki karti.Klasična igra spomina, kjer morate poiskati dva enaka zvoka.Pravilnost je bolj pomembna od hitrosti.Trenutna dejavnost: %sRes želite zapreti?Padajoče črkePoiščite vse črke v pravilnem vrstnem redu. Najdi zvokFishtankZabavaZabava / AbecedaZabava / RaznoZabava / Vaje za miškoPritisnite preslednico ali miškin gumb, da preskočite odštevanjeV zadnjih dveh nivojih so med seboj pomešane male in velike črke ampak na tipkovnici ni treba pritisniti male/velike črke - pomembna je sama črka, ne velikost.V načinu z več igralci zmaga tisti, ki doseže 11 točk.Trenutno uporaba zvočne kartice ni mogoča in ker to opravilo uporablja zvoke, se ne bo izvedlo. problem je lahko tudi v tem, da zvočno kartico uporablja drugi program.Vaje s tipkovnicoJezikPoslušajte zvok in kliknite na sliko, ki ji pripada.PrijavaMatematikaSpominRaznoVaje z miškoVeč igralcev - igrajte prosti drugemu igralcu.Več igralcev proti računalniku - poskusite premagati računalnik.NePackidPongSestavljankaIzberite dejavnost in kliknite gumb, da se aktivnost začne.En igralec - odbijate žogico ob zid.Spomin z zvokiZačetni nivo %sUstavljam časovnike, prosim, počakajte ...Cilj te igre:Cilj te dejavnosti:Klasična igra pong, kjer morate odbijati žogico z loparjem.Z manj udarci ko spravite žogico v luknjo, več točk dobite.Dlje ko držite levi gumb, bolj močno boste udarili žogico.Beseda je:Obstajajo trije nivoji, vsaj s tremi besedami.Izbirate lahko med tremi nivoji:Napaka v %s. Preverite dnevnik napak in obvestite razvijalce.V zbirki podatkov se je pojavila napaka, ki jo lahko povzroči mnogo stvari, največkrat pa je razlog v tem, da se različica zbirke podatkov ne ujema z različico programa. Izvirna zbirka podatkov bo varno shranjena in zamenjana z novo. Izvirna zbirka podatkov se zdaj imenuje sp.db_back in je shranjena v %s.Ta dejavnost ima %s nivojevTa meni se uporablja za izbiro dejavnosti.'Pojejte' vse črke v pravilnem vrstnem redu.Poskusite najti pot ven tako, da pojeste sadje za dodatne točke inOdstranite ribe, tako, da kliknete nanje z miško.Pritisnite padajoče črke na tipkovnici preden dosežejo tla.Z desnim gumbom miške ciljate, z levim pa udarite.S temi tipkami upravljate z loparjem.Uporabnik: %sUporabniško ime:Ko končate vse nivoje brez večjih napakDaModro žogico morate spraviti v luknjo (v 1. nivoju)Zmagali ste!Vaša slika je shranjena v: %sin rdeče na stopnji 2 in 3.smešni zvoki :-)točkechildsplay-3.3/locale/uk/0000755000175000017500000000000013271013626014100 5ustar stasstaschildsplay-3.3/locale/uk/LC_MESSAGES/0000755000175000017500000000000013271013626015665 5ustar stasstaschildsplay-3.3/locale/uk/LC_MESSAGES/childsplay.mo0000644000175000017500000002513213271013626020361 0ustar stasstasL|ep@q  :-;h(( 8BK O\n:q9- g s ? P ?Y    + ? 3 6 = B II ,     >- Ml W D W ,m % I K V,r7D:DWE3 F)p:t # ( D "1+GsrlLh!1 J''rA6e~7s iv 2H" vCK$P$%5y[ 4!!S!'5"]":"*,%RW%b% &V&&t'u(("(W()x ))@)8)#-*Q*5$B / )K-E 3D7 9!H@? '"(<:.> 6=L%,0&;F*2#4+J8G1CAI(max two per word), you can play the last level which is a maze.Activity : %sAlphabetAlphabet/KeyboardtrainingBallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?FallinglettersFind all the letters in the right order.FindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginMathMemoryMiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sStopping timers, please wait...The aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: ChildsPlay 1.3 Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2009-05-23 02:59+0300 Last-Translator: Serhij Dubyk Language-Team: Ukrainian Language: uk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Ukrainian X-Poedit-Country: UKRAINE X-Poedit-SourceCharset: utf-8 Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); (максимум дві на слово), Ви можете грати на останньому рівні — в лабіринті.Заняття: %sАбеткаАлфавіт/Навчання друку на клавіатуріКулькиБільярдГра більярдВхід до Дитячої забавкиОбрати гру:Класичний гра на пам’ять, де Ви повинні знаходити пари карток.Класичний гра на пам’ять, де Ви повинні знайти пари звуків.Точність є більш важливою аніж швидкість.Поточне заняття: %sЧи Ви справді хочете вийти?Спадаючі літериЗнайти всі літери в правильному порядку.Розпізнавання звуківАкваріумВеселощіРозваги/АлфавітРозваги/РізнеРозваги/Навчання використанню мишіЩоб пропустити зворотний відлік, натисніть клавішу «Пробіл» або мишкуНа останніх двох рівнях великі та малі літери змішуються, але не потрібно, щоб збігався регістр, лише літериУ багатогравцевих режимах, хто набирає 11 очок — виграє.ІнформаціяЗдається, що ми не можемо використовувати звукову карту прямо зараз, і тому, що це заняття відноситься цілком до звуків, ми просто виходимо. Ця проблема також може бути викликана іншим застосунком, який використовує звукову карту якраз тепер.Навчання писати на клавіатуріМоваСлухайте звук та клацніть на зображення, до якого він належить.УвійтиМатематикаПам’ятьРізнеНавчання використанню мишіДекілька гравців – гра з іншим гравцем.Декілька гравців, гра з комп’ютером – спробуйте перемогти комп’ютер.НіХавкаПонґГоловоломкаВиберіть заняття та натисніть на кнопку — заняття розпочнеться.Один гравець – удари м’яча об стіну.Пам’ять – звукиПочатковий рівень %sБудь ласка, зачекайте, зупиняється таймер…Мета гри:Мета даного заняття:Класичний гра понґ, де Ви повинні попасти по м’ячу Вашою ракеткою.Вам необхідно загнати м’яч в лунку за меншу кількість вдарянь, таким чином Ви отримаєте більше очок.Останній рівень буде доступний тільки тоді, якщо Ви закінчите перші три рівні без помилок.Чим довше тримаєте ліву кнопку натиснутою, тим сильніший буде удар по м’ячу.Слово для пошуку:Існують три рівні — три слова в кожному з них.Є три режими на вибір:Сталася помилка %s. Будь ласка, перегляньте журнали та проінформуйте розробниківБула помилка у базі даних, що могла бути причиною багатьох речей, але в більшості випадків це пов’язано з тим, що Ваша версія бази даних не відповідає версії програми. Я буду створювати резервну копію вихідної бази даних, а потім заміню її на нову. Первісна база даних в даний час називається sp.db_back і розміщена у %sЦе заняття має %s рівнівЦе меню використовується для вибору заняття.Спробуйте «з’їсти» усі літери в правильному порядку.Постарайтеся знайти вихід, також поїдаючи фрукт з додатковими очками таСпробуйте вилучати риби, клацаючи по них мишею.Натискайте падаючі літери на клавіатурі, перш ніж вони потраплять на землю.Використовуйте праву кнопку миші для прицілювання та ліву кнопку, щоб вдарити м’яч.Використовуйте ці клавіші на клавіатурі, щоб керувати ракеткою.Користувач: %sІм’я користувача: Після завершення усіх рівнів, майже без помилокТакВи повинні зробити так, аби синя куля вкотилася у отвір (на рівні 1)Ви перемогли!!Ваше зображення буде збережено в: %sа також червона на рівнях 2 та 3.веселими звуками :-)очкиchildsplay-3.3/locale/sk/0000755000175000017500000000000013271013626014076 5ustar stasstaschildsplay-3.3/locale/sk/LC_MESSAGES/0000755000175000017500000000000013271013626015663 5ustar stasstaschildsplay-3.3/locale/sk/LC_MESSAGES/childsplay.mo0000644000175000017500000001715713271013626020367 0ustar stasstasL|ep@q  :-;h(( 8BK O\n:q9- g s ? P ?Y    + ? 3 6 = B II ,     >- Ml W D W ,m % I K V,r7D:DWE3 F)p:t # P & EO Wc ~54  'H-] %J=<-z K_>e  $')Lv* 4Q(WzQ $"2>U</Q!5s:S?8x3/ #7Vj5$B / )K-E 3D7 9!H@? '"(<:.> 6=L%,0&;F*2#4+J8G1CAI(max two per word), you can play the last level which is a maze.Activity : %sAlphabetAlphabet/KeyboardtrainingBallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?FallinglettersFind all the letters in the right order.FindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginMathMemoryMiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sStopping timers, please wait...The aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: Childsplay 1.5 Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2010-04-22 14:29+0100 Last-Translator: Stas Zytkiewicz Language-Team: René Language: sk_SK MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Slovak X-Poedit-Country: SLOVAKIA X-Poedit-SourceCharset: utf-8 (Max dve na každé slovo), potom môžete hrať poslednú úroveň - bludisko.Činnosť: %sPísmenoAbeceda / Tréning klávesniceLoptičkyBiliardHra BiliardChildsplay_sp prihlásenieVyber si hru:Clasické pexeso, kde musíte nájsť dvojice kariet.Nájdi rovnaké zvukySprávne riešenie je dôležitejšie ako rýchlosťAktuálna činnosť : %sNaozaj chceš ukončiť program?Padajúce písmenkáNájdi všetky písmená v správnom poradí.Nájdi zvukFishtankZábavaZábava / AbecedaZábava / RôzneZábava / Trénovanie práce s myšouStlač 'space' klávesnicu alebo tlačidlom myši preskoč odpočítavanieV posledných dvoch úrovniach veľké a malé sú zmiešanépri viacerých hráčoch vyhrávaš 11 bodov.InformácieZdá sa, že nemôžeme použiť zvukovú kartu. Tento problém môže byť spôsobený inou aplikáciou ktorá používa zvukovú kartu práve teraz.Klávesy - tréningJazykVypočujte si zvuk a kliknite na obrázok, do ktorému patrí.PrihlásenieMatikaPamäťRôznyMyš - tréningHráč proti druhému hráčoviHráč proti počítačuNIEPackidPongPuzzleVyber činnosť, klikni na tlačidloJeden hráč - trafiť loptu proti múru.Zapametanie si zvukuPredvolená úroveň %sZastavenie časovača, prosím čakajte...Cieľom hry:Cieľom tejto aktivity:pong je hra, kde musíte zasiahnuť loptu s pálkou.Čím menej zásahov na dopravenie loptičky do otvoru, tým viac bodov získate.Posledná úroveň je k dispozícii len po ukončení prvých troch úrovní bez chýb.Čím dlhšie budete držať ľavé tlačidlo, tým ťažšie bude trafiť loptu.Nájdi slovo:Tri úrovne. V každej tri slová.K dispozícii sú tri režimy, z ktorých si môžete vybrať:Vznikla chyba v% s. Skontrolujte prosím Vaše prihlásenie Vznikla chyba v databáze, pravdepodobne vaša verzia databázy nezodpovedá verziu programu. Budem zálohovať vašu pôvodnú databázu a potom ju nahradím. Pôvodná databáza je teraz nazývaná sp.db_back a je umiestnená v% sTáto činnosť má level % sPonuka výberu činnostiSnažte sa 'jesť' všetky písmená po poradíSkúste nájsť cestu von, zatiaľ čopre extra body získate za zjedenie ovocia.Pokúste sa odstrániť ryby kliknutím na ne myšou.Stlač správne písmeno na klávesnici skôr ako dopadne.Použitepravé tlačidlo myši na zamierenie a ľavým tlačidlom zasiahnite loptu.Použite tieto tlačidlá na klávesnici pre ovládanie vkladu.Užívateľ: %sMeno PoužívateľaDokonči všetky úrovne, sprav čo najmenej chýb.ÁNOMusíte modré gule dostať do otvoru (level 1)Vyhrávaš !!Váš obrázok ból uložený v: %s.. a červené v leveli 2 a 3.zábavné zvuky :-)bodychildsplay-3.3/locale/eo/0000755000175000017500000000000013271013626014064 5ustar stasstaschildsplay-3.3/locale/eo/LC_MESSAGES/0000755000175000017500000000000013271013626015651 5ustar stasstaschildsplay-3.3/locale/eo/LC_MESSAGES/childsplay.mo0000644000175000017500000001757613271013626020362 0ustar stasstasL|ep@q  :-;h(( 8BK O\n:q9- g s ? P ?Y    + ? 3 6 = B II ,     >- Ml W D W ,m % I K V,r7D:DWE3 F)p:t # mR~   6CDA ,( U bowDgHic{8 -B#fiou?{( -3GCeUTRT'#PFd$.5F54|LK6J  9: "">av5$B / )K-E 3D7 9!H@? '"(<:.> 6=L%,0&;F*2#4+J8G1CAI(max two per word), you can play the last level which is a maze.Activity : %sAlphabetAlphabet/KeyboardtrainingBallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?FallinglettersFind all the letters in the right order.FindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginMathMemoryMiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sStopping timers, please wait...The aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: Childsplay Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2009-11-29 13:55+0100 Last-Translator: Stas Zytkiewicz Language-Team: Language: eo_EO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: eo (maksimume du en ĉiu vorto) vi povas ludi la lastan nivelon, kiu estas labirinto.Aktivaĵo: %sAlfabetoAlfabeto/KlavartrejnadoGlobojBilardoBilarda ludoEnsaluto al Childsplay_spElektu ludon:Klasika memor-ludo, en kiu vi devas trovi parojn de identaj kartoj.Klasika memorludo, en kiu vi devas trovi parojn de identaj sonoj.Ĝusteco pli gravas ol rapideco.Nuna aktivado: %sĈu certe vi volas ĉesi?Falantaj literojTrovu ĉiujn literojn en la ĝusta sinsekvo.Trovi sonojnFiŝcisternoPlezuroPlezuro / alfabetoPlezuro / miksitajPlezuro, ekzercado pri la musoPuŝu la spaco-klavon aŭ iun musbutonon por transsalti la nombradonEn la lastaj du niveloj majuskloj kaj minuskloj aperas mikse, sed ne necesas tajpi la ĝustan usklecon.En la dupersonaj reĝimoj gajnas tiu, kiu kiel unua atingas 11 poentojn.InformojŜajne ni nun ne povas uzi la son-karton. Ĉar tiu ĉi aktivaĵo estas pri sono, ni simple ĉesas. Eble la problemon kaŭzas alia aplikaĵo, kiu nun uzas la sonkarton.Trejnado pri la klavaroLingvoAŭdu sonon kaj klaku al la bildo, al kiu ĝi apartenas.EnsalutuKalkuladoMemoradoMiksitajTrejnado pri la musoDupersona ludo -- ludu kontraŭ alia ludanto.Dupersona ludo kontraŭ la komputilo -- provu venki la komputilon.NePakidPongoPuzloElektu aktivaĵon kaj klaku al la butono, la aktivaĵo startos.Unupersona ludo -- frapu pilkon al muro.Sona memoradoKomenca nivelo: %sHaltigo de tempo-mezuriloj, bonvolu atendi...La celo de la ludo:La celo de tiu ĉi aktivaĵo:La klasika ponga ludo, en kiu vi devas frapi pilkon per via rakedo.Ju malpli da frapoj vi bezonas por entruigi la globon, des pli da poentoj vi ricevas.La lasta nivelo estas disponebla nur, se vi finas la unuajn tri nivelojn sen eraroj.Ju pli longe vi premas la maldekstran butonon, des pli forte ĝi frapos la globon.La vorto, kiun vi trovu, estas:Estas tri niveloj, ĉiu kun tri vortoj.Vi povas elekti inter tri reĝimoj:Estis eraro en %s. Bonvolu inspekti la protokolojn kaj informi la evoluigantojn.Okazis eraro en la datenbanko. Tio povas havi multajn kaŭzojn, sed plej ofte ĝi okazas, ĉar la versio de via datenbanko ne kongruas kun la versio de via programo. Mi faros rezervan kopion de via originala datenbanko kaj poste anstataŭigos ĝin per nova. La originala datenbanko nun nomiĝas sp.db_back kaj troviĝas en %s.Tiu ĉi aktivaĵo havas %s nivelojn.Jen la menuo, per kiu eblas elekti aktivaĵon.Provu "manĝi" ĉiujn literojn en la ĝusta sinsekvo.Pro trovi la elirejon, manĝante fruktojn; ili donos ekstrajn poentojnProvu forigi la fiŝojn klakante al ili per la muso.Tajpu la falantajn literojn per la klavaro, antaŭ ke ili frapas la grundon.Uzu la dekstran mus-butonon por celumi kaj la maldekstran por frapi globon.Uzu jenajn klavojn en via klavaro por movi la rakedon:Uzulo: %sUzula nomo:Post kiam vi finis ĉiujn nivelojn sen fari tro da erarojJesVi devas enirigi la bluan globon en la truon (en nivelo 1)Vi gajnis!Via bildo estis konservita tie: %skaj la ruĝajn en niveloj 2 kaj 3.kaj sonas amuze. :-)poentojchildsplay-3.3/locale/pl/0000755000175000017500000000000013271013626014074 5ustar stasstaschildsplay-3.3/locale/pl/LC_MESSAGES/0000755000175000017500000000000013271013626015661 5ustar stasstaschildsplay-3.3/locale/pl/LC_MESSAGES/childsplay.mo0000644000175000017500000002031013271013626020346 0ustar stasstasL|ep@q  :-;h(( 8BK O\n:q9- g s ? P ?Y    + ? 3 6 = B II ,     >- Ml W D W ,m % I K V,r7D:DWE3 F)p:t # nQ&! (5 ISWY17PnO <<yD JU@_5f  '=@DKPRV.+/8HM^lMb23R2*"#?J72`K7b8< 8 $E 2j !  5$B / )K-E 3D7 9!H@? '"(<:.> 6=L%,0&;F*2#4+J8G1CAI(max two per word), you can play the last level which is a maze.Activity : %sAlphabetAlphabet/KeyboardtrainingBallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?FallinglettersFind all the letters in the right order.FindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginMathMemoryMiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sStopping timers, please wait...The aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: childsplay_sp_pl_PL Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2009-02-02 14:02+0100 Last-Translator: Stas Zytkiewicz Language-Team: Language: pl_PL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.11.4 (maksymalnie dwa na słowo), możesz zagrać na ostatnim poziomie - w labiryncie.Bieżąca aktywność: %sAlfabetAlfabet/Trening pisania na klawiaturzePiłkiBilardGra w bilardLogin Childsplay_spWybierz grę:Klasyczna gra ćwicząca pamięć, w której należy odkryć dwie identyczne karty.Klasyczna gra ćwicząca pamięć, w której należy znaleźć dwa identyczne dźwięki.Dokładność jest ważniejsza, niż prędkość.Bieżąca aktywność %sCzy naprawdę chcesz wyjść?Spadające literkiZnajdź wszystkie litery w prawidłowej kolejności. Słowo do znalezienia to: Rozpoznawanie dźwiękówAkwariumZabawaZabawa/AlfabetZabawa/RóżnościZabawa/Trening używania myszyAby pominąć odliczanie, wciśnij spację lub klawisz myszyNa dwóch ostatnich poziomach pojawiają się litery duże i małe, ale przy wpisywaniu nie musisz rozróżniać wielkości, jedynie literyW trybie z dwoma graczami, ten, kto zdobędzie 11 punktów, wygrywa.InformacjaWydaje się, że użycie karty dźwiękowej nie jest możliwe. Ponieważ bieżąca aktywność wymaga dźwięku, program zostanie zakończony. Przyczyną problemu może być to, że jakiś inny program używa teraz karty dźwiękowej.Trening pisania na klawiaturzeJęzykSłuchaj dźwięku i kliknij w odpowiednią literkę.LoginMatematykaPamięćRóżnościTrening używania myszyDwóch graczy - zagraj z innym graczem.Dwóch graczy, gra z komputerem - spróbuj pokonać komputer.NiePackidPongPuzleWybierz aktywność i przyciśnij przycisk, a wybrana aktywność rozpocznie się.Gracz pojedynczy - uderzaj piłką o ścianę.Pamięć - dźwiękiPoziom początkowy %sProszę czekać, zatrzymywanie stoperów...Cel gry:Cel tej aktywności:Klasyczna gra Pong, w której musisz trafić w piłkę swoją rakietką.Im mniej uderzeń potrzebujesz do wprowadzenia bili do dziury, tym więcejpunktów dostaniesz.Ostatni poziom stanie się dostępny tylko wówczas, gdy bezbłędnie zakończysz trzy wcześniejsze poziomyIm dłużej trzymasz wciśnięty lewy przycisk, tym mocniej uderzysz w bilę.Należy znaleźć słowo: Istnieją trzy poziomy - po trzy słowa w każdym.Możesz wybrać grę na jednym z trzech poziomów: W %s wystąpił błąd. Proszę sprawdzić logi i poinformować twórców programuWystąpił błąd związany z bazą danych. Istnieje wiele możliwych przyczyn takiego błędu; prawdopodobnie jednak wersja programu różni się od wersji bazy danych. Wykonana zostanie kopia istniejącej bazy i utworzona zostanie nowa baza. Oryginalna baza zostanie zapisana jako sp.db_back w %sTa aktywność ma tylko %s poziomyTo jest menu do wyboru aktywności.Spróbuj 'zjeść' wszystkie literki we właściwej kolejnościSpróbuj znaleźć wyjście, zjadając po drodze owoce za dodatkowe punktySpróbuj usunąć rybkę klikając w nią myszką.Obserwuj opadające literki i postaraj się wcisnąć je na klawiaturze zanim opadną na dół.Użyj prawego przycisku myszy do wycelowania i lewego do uderzenia w bilę.Aby przesuwać rakietę, użyj klawiszy na klawiaturze.Użytkownik: %sNazwa użytkownika:Kiedy zakończysz wszystkie poziomy prawie bez błędówTakWprowadź niebieską kulę (bilę) do dziury (na poziomie 1)Wygrałeś!!Twój obrazek został zapisany w: %sa na poziomach 2 oraz 3 również bilę czerwoną. i przy zabawnych dźwiękach :-)punktówchildsplay-3.3/locale/fr/0000755000175000017500000000000013271013626014070 5ustar stasstaschildsplay-3.3/locale/fr/LC_MESSAGES/0000755000175000017500000000000013271013626015655 5ustar stasstaschildsplay-3.3/locale/fr/LC_MESSAGES/childsplay.mo0000644000175000017500000002072513271013626020354 0ustar stasstasL|ep@q  :-;h(( 8BK O\n:q9- g s ? P ?Y    + ? 3 6 = B II ,     >- Ml W D W ,m % I K V,r7D:DWE3 F)p:t # F$3<[bjyA?04e!},  +[H=V 3 4GGK/"32J}=[cER/Dsbh66eBZKh?R   <  C ;!#K!Ho!!!5$B / )K-E 3D7 9!H@? '"(<:.> 6=L%,0&;F*2#4+J8G1CAI(max two per word), you can play the last level which is a maze.Activity : %sAlphabetAlphabet/KeyboardtrainingBallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?FallinglettersFind all the letters in the right order.FindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginMathMemoryMiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sStopping timers, please wait...The aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: childsplay_sp_fr_FR Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2009-01-23 14:24+0100 Last-Translator: Stas Zytkiewicz Language-Team: isaz Language: fr_FR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: French X-Poedit-Country: FRANCE X-Generator: KBabel 1.11.4 X-Poedit-SourceCharset: utf-8 (max 2 par mot) tu peux jouer le dernier niveau qui est un labyrinthe.Activité : %sAlphabetAlphabet/Entraînement clavierBoulesBillardJeu de billardAdministrateur Childsplay_sp Choisis un jeu pour jouer:Jeu de Mémory où tu dois trouver les paires de cartes (2 par 2)Jeu de Mémory où tu dois trouver les paires de sons (2 par 2) La justesse est plus importante que la vitesse.Activité en cours : %sVoulez-vous réellement quitter ?Lettres tombantesTrouve toutes les lettres dans le bon ordre.Trouve le sonRéservoir de poissonsAmusantAmusant/AlphabetAmusant/DiversAmusant/Entraînement sourisTape sur la touche 'Espace' ou sur un bouton de la souris pour passer le compte à rebours.Dans les deux derniers niveaux les majuscules et les minuscules ont été mélangées mais tu n'as pas à t' occuper de la casse (taille des lettres) mais seulement de la lettreDans le mode multi-joueurs, le premier qui a 11 points gagne.InformationIl semble que nous ne pouvons pas utiliser votre carte son tout de suite et comme cette activité nécessite du son, nous la quittons. Ce problème peut être aussi causé par une autre application qui utilises la carte son en ce moment.Entraînement clavierLangueEcoute le son et clique sur l'image correspondante.ConnexionMathMémoryDiversEntraînement sourisPlusieurs joueurs - Jouez les uns contre les autres.Plusieurs joueurs contre l'ordinateur - Essayez de battre l'ordinateur.NonPackidPongPuzzleSélectionne une activité et clique sur le bouton, l'activité commencera.Joueur simple - Frapper la balle contre le mur.Mémory des sonsLancement du niveau %sArrêt des compteurs, attendez s'il vous plaît...Le but de ce jeu:Le but de cette activité :Jeu de ping-pong où tu dois taper une balle avec ton bâton.Moins de fois tu frappes la boule pour qu'elle entre dans le trou, plus tu auras de points.Le dernier niveau est accessible seulement quand tu as fini les trois premiers niveaux sans erreur.Plus longtemps tu appuieras sur le bouton gauche plus fort la boule sera frappée.Le mot à trouver est :Il y a 3 niveaux avec 3 niveaux de mots chacun.Il y a 3 niveaux à choisir :Il y a eu une erreur dans %s. Veuillez, s'il vous plaît, vérifier les fichiers logs et informer les développeursIl y a eu une erreur dans la base de données, ceci a pu être causé par plusieurs choses, mais la plupart du temps c'est que votre version de la base de données ne correspond pas à celle du programme. Je vais faire une sauvegarde de votre base de données originale et le replacerai ensuite par la nouvelle. La base de données originale s'appelle dorénavant sp.db_back et elle est placé dans %sCette activité a %s niveaux.Ce menu est utilisé pour sélectionner une activité.Essaie de 'manger' tous les lettres dans le bon ordre.Essaie de trouver le moyen de sortir en mangeant des fruits pour avoir des points supplémentaires etEssaie d'enlever les poissons en cliquant sur eux avec la souris.Tape sur ton clavier les lettres qui tombent avant qu'elles ne s'écrasent.Utilise le bouton droit de la souris pour marquer la direction et le bouton gauche pour frapper la bouleUtilise les flèches de ton clavier pour contrôler ton bâton.Utilisateur: %sNom d'utilisateur :Quand tu as fini tous les niveaux, sans faire trop d'erreursOuiTu dois faire entrer la boule bleue dans le trou (dans le niveau 1)Tu as gagné !!Ton image est sauvegardée dans: %set les boules rouges (en tapant dans la bleue!) dans les niveaux 2 et 3.des sons amusants :-)pointschildsplay-3.3/locale/ru/0000755000175000017500000000000013271013626014107 5ustar stasstaschildsplay-3.3/locale/ru/LC_MESSAGES/0000755000175000017500000000000013271013626015674 5ustar stasstaschildsplay-3.3/locale/ru/LC_MESSAGES/childsplay.mo0000644000175000017500000004566613271013626020406 0ustar stasstasl /  @ -G u ~   0 ? KZ 8 D K$kpD' 0>E6K:;( 6L it|( " 4:U@q LXm9JS:Y  }-74 l z-BqE3l+X  A&+(0Y `k r  IiQ Zfl~ :67UM&WDZ,IK,xQ,7D:+,fD;BEW dF \ u Y!:]!7!m! >"H"#c""""H""T$?$+%W%&"& @&N'<]''8''Tu(t(z?))f*to*** ++m/++w+{.,6,(,3 - >-I-9X-7--D-*.9. P.].y.).>.h.e/qn//00R0& 202 92TD22/2)23 3N3 "4/4J4Q45"5@5C596M6?67!767cT7;7U7J86\88888)8 9#9vC99_:h: {:$:K:: ;;;";Y;Q4<<@=V=x=!s>E>>`?1@!A9AA BYBTCSCM)DkwDcD]GEjEF -FNF_GeG;H IMIp\II J*J-JJK-KmHKE1h=c$RH`MbvjC9?gNeIAdxJB}yZ')QDY L<: mwuVsi>z otrFp-U{0a7q .#P+^[nSl/@86~O\_&!fX*"]2GTK4 ,% 3|Wk5;( Touch the 'Play' button to continue the game. Touch the changed picture.(max two per word), you can play the last level which is a maze.A collection of braintrain games for seniors.Activity :Activity : %sAll the games have there own help page, just start a game and hit the stars on top of the screen to select another difficulty.AlphabetAlphabet/KeyboardtrainingAlready found:Answer the quiz questions.Are sure you want to quit the dailytraining ? All the results will be lost.At the bottom you'll see a image of the complete puzzle.At the top of the screen, you will see a general knowledge question.At the top of the screen, you will see a question about a member of RoyaltyAt the top of the screen, you will see a question from general knowledge question from the selected period.BallsBelow it are a choice of possible answers. Touch the correct answer.BilliardBilliard GameCancelCheatChildsplay_sp - educational activities, using theme:%sChildsplay_sp loginClassic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?Electro_spError !Error constructing activity %sError importing activity %sFallinglettersFind all the letters in the right order.FinditFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'Begin' button to start.Hit the 'space' key or a mousebutton to skip the countdownIchangerIf you ready to start the next activity, hit the 'start' button.In the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterInformationInformation about %sIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageLoginLook closely at the complete puzzle picture at the bottom.MathMath QuizMelody QuizMemorize the pictures. One of these pictures will be replaced by a new picture. Touch the 'Start' button to begin the game.MemoryMind the sound sequence as well as the colors sequence.MiscellaneousMousetrainingNoNo photo albums found ! You should place your pictures inside directories called 'Album_1', 'Album_2' etc Place these directories inside %sNumber of levels : 1Number of levels : 6OKOn the next screen you'll find a keyboard, try to make as much words as possible that begin with the letter '%s'.On the screen are four blocks of different colours.On the screen you will see two almost identical pictures. However, there are differences between the images.Only words from the dictionary are allowed.PackidPhotoalbumPicture QuizPlace the puzzle piece on the right where you think it belongs...Please, choose a set of cards.Please, choose a set of puzzle images.PongPress the Start button with your finger.PuzzleQuestion ?Quit ?Quiz historyQuiz royalResultsSave imageSelect an activity and click on the button, the activity will be started.Several images from the past will appear on the screen. Look carefully at them and remember what you see.Simon_spSoundmemoryStartStarting level %sStopping timers, please wait...Suggestions:SynonymsThe blocks will light up randomly along with sound clues.The aim of the game:The aim of this activity:The arrows to the left take you to the previous image.The difficulty of the set increases from left to right.The fewer hits you need to get the ball in the hole, the more points you get.The game is to match pairs of picturesThe last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: There are thee levels with three words each.There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis activity is known as the daily training which is a collection of activities.This is the menu used to select an activity.Tip:%sTouch the 'START' button on the right. The images will dissappear and when they return, one will have changed. Touch the picture which has changed.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Try to repeat the sequence of sounds played.Type the falling letters on the keyboard before they hit the ground.Use the 'sub menu' buttons for the different activity menusUse the menu below to choose between the different game categoriesUse the right mousebutton to aim and the left button to hit the ball.User: %sUsername:When the flashing stops you will be prompted to repeat the sequence by touching the coloured blocks.When you have finished all the levels, without making to much mistakesWhen you spot a difference, touch it with your finger. You can click the question mark in the middle of the screen if you need a hint.When you touch the picture you will hear a sound. Match the image with others that make the same sound,to get points.YesYou have to make the blue ball enter the hole (in level 1)You play very good, do you want to try the next level ?You select the pictures by touching them. As you progress through the star levels more pairs appear to match.You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsquestion id: %sxml file %s is missing, this shouldn't happen, contact the %s developersProject-Id-Version: Childsplay 2 Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2010-10-18 11:08+0100 Last-Translator: Stas Zytkiewicz Language-Team: InPrIn TGPU Language: ru_RU MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Russian X-Poedit-Country: RUSSIAN FEDERATION Коснитесь кнопки 'Play', чтобы продолжить игру. Коснитесь изменившейся картинки.(максимум два для слово), вы можете играть на последнем уровне (лабиринт)Коллекция игр для тренировки мозга для пожилых.Деятельность :Деятельность : %sУ всех игр есть своя справочная страница, просто начните игру и кликните на звездах в верхней части экрана, чтобы выбрать другой уровень сложности.АлфавитАлфавит/Клавиатурная тренировкаУже найдено:Ответьте на вопросы викторины.Вы правда хотите прекратить дневную тренировку? Результаты не сохраняются.Внизу вы увидите, как выглядит собранный пазл.В верхней части экрана вы увидите вопрос на проверку кругозора.В верхней части экрана вы увидите вопрос о члене королевской семьиВ верхней части экрана вы увидите вопрос, развивающий вопрос на кругозор за выбранный период.ОчкиНиже варианты возможных ответов. Коснитесь правильного ответа.БильярдИгра БильярдОтменитьПодсказкаChildsplay_sp - образовательная деятельность, используется тема:%sChildsplay_sp логинКлассическая игра на запоминание, в которой надо найти пары карт.Классическая игра на запоминание, в которой надо найти пары звуков.Правильность важнее скоростиТекущая активность : %sВы правда хотите завершить ?Electro_spОшибка !Ошибка создания деятельности %sОшибка импорта деятельности %sПадающиебуквыНайди все буквы в правильном порядке.НайдиИхРыбнаяБочкаПриколПрикол/АлфавитПрикол/РазноеПрикол/Работа с мышкойКликните кнопку 'Begin', чтобы начатьНажмите 'пробел' или кнопку мыши, чтобы пропустить отсчетIchangerЕсли ты готов начать следующую активность, кликни кнопку 'start'.На последних двух уровнях верхний и нижний регистр перемешаны, не обращай на это внимания.ИнформацияИнформация о %sВидимо, мы не сможем подключить звуковую карту прямо сейчас, и поэтому выйдем из программы. Проблема может быть и в другом приложении, которое в данный момент использует звуковую карту.Работа с клавиатуройЯзыкЛогинВнимательно посмотри на собранный пазл внизу.МатематическийМатематическая викторинаМузыкальная викторинаВспомни картинки. Одна из картинок будет заменена новой. Коснись кнопки 'Старт', чтобы начать игру.ПамятьЗапомни порядок звуков как порядок цветов.РазноеРабота с мышьюНетФотоальбомы на найдены ! Картинки должны лежать в каталогах 'Album_1', 'Album_2' и т.д. Помести каталоги в %sЧисло уровней : 1Число уровней : 6OKНа следующем экране ты увидишь клавиатуру, попробуй набрать как можно больше слов, которые начинаются с буквы '%s'.На экране 4 блока разных цветов.Ты увидишь на экране две почти одинаковых картинки. На самом деле они разные.Допустимы только слова из словаря.PackidФотоальбомУгадай картинкуПоложите деталь пазла направо, куда считаете нужным... Пожалуйста, выберите набор карт.Пожалуйста, выберите набор картинок для пазла.Пинг-понгНажмите пальцем кнопку Старт.ПазлВопрос ?Завершить ?История викторинКоролевская викторинаРезультатыСохранить картинкуВыбери активность и кликни на кнопке, чтобы активность началась.Несколько картинок из прошлого появятся на экране. внимательно посмотри на них и запомни.Simon_spПомнюзвукНачатьНачальный уровень %sОстановка таймеров, подождите маленько...Подсказки:СинонимыБлоки будут светиться как попало одновременно со звуковыми подсказками.Цель игры:Цель деятельности:Стрелки налево вернут вас к предыдущему рисунку.Сложность наборов возрастает слева направо.Чем меньше ударов затрачено на то, чтобы загнать шар в лунку, тем больше очков.Игра по нахождению парных картинокПоследний уровень будет доступен только когда ты закончишь первые три уровня без ошибок.Чем дольше держишь левую кнопку нажатой, тем сильнее удар по мячу.Нужно найти слово:Есть три уровня, в каждом по три слова.Произошла ошибка в %s. Проверьте журнал событий и сообщите разработчикамПроизошла ошибка в базе данных, которая обычно вызвана несоответствием версий базы данных и программы. Я сохраню копию текущей базы данных и потом заменю ее новой. Исходная база данных называется sp.db_back и находится в %sАктивность имеет %s уровнейЭта деятельность называется дневная тренировка, она включает набор деятельностей.Это меню для выбора активности.Подсказка:%sКоснись кнопки 'Старт' справа. Картинки исчезнут и когда они снова появятся, одна поменяется. Коснись картинки, которая изменилась.Попробуй 'съесть' все буквы в правильном порядке.Попробуй выбраться наружу, набирая очки при помощи поедания фруктов иПопробуй отцепить рыбок, кликая по ним мышкойПопробуй повторить звуки в том же порядке.Набери падающую букву на клавиатуре до того как она упадетОткрывай меню следующей активности кнопками 'подменю'Выберите другие категории игр с помощью этого менюНаправляйте шар правой кнопкой мыши и бейте по мячу левой.Пользователь: %sИмя пользователя:Когда мигать перестанет, тебя попросят повторить последовательность, касаясь раскрашенных блоков.Когда вы пройдете все уровни, не сделав много ошибокКогда заметишь разницу, коснись ее пальцем. Можешь кликнуть на знаке вопроса в середине экрана если нужна подсказка.Звук раздается, когда ты касаешься картинки. Найди для картинки пару, которая звучит так же, чтобы набрать баллы.ДаНадо загнать синий шар в лунку (на уровне 1)Ты играешь очень хорошо, хочешь перейти на следующий уровнеь?Ты выбираешь картинки, когда касаешься их. Новые пары появляются, когда ты проходишь уровни по звездам.Победа!Картинка сохранена в: %sи красные на уровнях 2 и 3.забавные звуки :-)очкиидентификатор вопроса: %sфайл xml %s не найден, это ошибка, обратитесь к разработчикам %schildsplay-3.3/locale/vi/0000755000175000017500000000000013271013626014077 5ustar stasstaschildsplay-3.3/locale/vi/LC_MESSAGES/0000755000175000017500000000000013271013626015664 5ustar stasstaschildsplay-3.3/locale/vi/LC_MESSAGES/childsplay.mo0000644000175000017500000000457413271013626020367 0ustar stasstas\ :;#_| ?MDVDE:& a#kn QQn$A Q\zeCBDKI 9: t     BilliardBilliard GameClassic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Do you really want to quit ?FallinglettersFindsoundListen to the sound and click on the image to which it belongs.MemoryStarting level %sThe aim of this activity:The fewer hits you need to get the ball in the hole, the more points you get.The longer you hold the left button the harder it will hit the ball.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.You have to make the blue ball enter the hole (in level 1)You won!!and the red ones in levels 2 and 3.pointsProject-Id-Version: childsplay_sp_vi_VN Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2008-10-06 14:14+0200 Last-Translator: stas Zytkiewicz Language-Team: Language: vi_VN MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.11.4 Bi daTrò chơi bi daTrò chơi trí tuệ cổ điển mà bạn phải tìm cặp bài giống nhau.Trò chơi trí tuệ cổ điển mà bạn phải tìm ra các cặp âm thanh.Bạn có thực sự muốn thoát?Các ký tự rơi xuốngTìm âm thanhLắng nghe âm thanh và kích vào ảnh liên quan đến nó.Trí nhớBắt đầu thực hành %s Mục đích của trò chơi: Bạn cần đánh bóng vào lỗ với 1 ít gậy, bạn sẽ lấy được nhiều điểm hơn.Bạn giữ chuột trái lâu hơn để lấy sức đánh bóng.Gõ các ký tự rơi xuống trước khi chúng chạm đất. Dùng nút chuột phải nhắm và nút chuột trái để đánh bóng.Bạn phải đánh quả bóng màu xanh vào lỗ (trong cấp độ 1)Bạn đã chiến thắng!!và các quả bóng mà đỏ trong cấp độ 2 và 3.điểmchildsplay-3.3/locale/el/0000755000175000017500000000000013271013626014061 5ustar stasstaschildsplay-3.3/locale/el/LC_MESSAGES/0000755000175000017500000000000013271013626015646 5ustar stasstaschildsplay-3.3/locale/el/LC_MESSAGES/childsplay.mo0000644000175000017500000006012013271013626020336 0ustar stasstas ( /) Y @v - ~K8;DtKk2qD 6 DX:q;('/LTs(   :7r@q9A {hy?:! & 0}<7  +?Aq3#lW+ A Fg&(      ,I3i},  &>P p} :6>17pM&WDu,%I#KmQ,' T [ 7 D'!:l!,!D!;"BU"E"3"# #d%#F##uX$$,$:$7:%mr% %#%&)&#;&_&p&w&H&&{(<)=)I)4*P*o*@*+A+,B>,=,,{-r.t./T/ 000%00|1#1M1r1me2X2+,3X3Pq33V3T(4&}4F4 445,5%A5#g5;5O56O67 78N9-e9905; f;xs;;;4<<!<<  = >u>>&>W>"??#?"?@@l AzAOBcBjBlBOBDFCTCCLC2D;DLDwDD#DDDDEIWF-F F;F G^9GGGGG)G?Hy^HHwiIIqJKK:eLYLHLCMM8PPgQ$R8RvQSSbTkUtUUV8WWXXXY Z [[\[^O\|\+]*^g<^:^0^@_4Q_ _#__q4=' 8 .D3k!w`~?)Y Xyac-7]peM@i/h&tP ovTE1^mIHJU5xV%F<,+LSz"26R#_:g*W9b\(>rdKnf[OCG}BAQ Z|{jsl0 Nu;$ Touch the 'Play' button to continue the game. Touch the changed picture.(max two per word), you can play the last level which is a maze.A collection of braintrain games for seniors.Activity :Activity : %sActivity:All the games have there own help page, just start a game and hit the stars on top of the screen to select another difficulty.AlphabetAlphabet/KeyboardtrainingAlready found:Answer the math questions.Answer the quiz questions.Are sure you want to quit the dailytraining ? All the results will be lost.At the bottom you'll see a image of the complete puzzle.At the top of the screen, you will see a general knowledge question.At the top of the screen, you will see a question about a member of RoyaltyAt the top of the screen, you will see a question from general knowledge question from the selected period.At the top of the screen, you will see a question.BallsBelow it are a choice of possible answers. Touch the correct answer.BilliardBilliard GameCancelChildsplay_sp - educational activities, using theme:%sChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDetailsDo you really want to quit ?Error !Error constructing activity %sError importing activity %sFallinglettersFind all the letters in the right order.FinditFindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'Begin' button to start.Hit the 'space' key or a mousebutton to skip the countdownHit the Escape key to stop.If you ready to start the next activity, hit the 'start' button.In the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationInformation about %sIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginLook closely at the complete puzzle picture at the bottom.Make a word with the letter: MathMath QuizMelody QuizMemorize the pictures. One of these pictures will be replaced by a new picture. Touch the 'Start' button to begin the game.MemoryMind the sound sequence as well as the colors sequence.MiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoNumber of levels : 1Number of levels : 6OKOn the next screen you'll find a keyboard, try to make as much words as possible that begin with the letter '%s'.On the screen are four blocks of different colours.On the screen you will see two almost identical pictures. However, there are differences between the images.Only words from the dictionary are allowed.PackidPicture QuizPlace the puzzle piece on the right where you think it belongs...Please enter your year of birth.Please, choose a set of cards.Please, choose a set of puzzle images.PongPress the Start button with your finger.PuzzleQuestion ?Quit ?Quiz historyQuiz royalResultsSave imageSayings QuizScore:Select an activity and click on the button, the activity will be started.Several images from the past will appear on the screen. Look carefully at them and remember what you see.Single play - Hit the ball against the wall.SoundmemoryStartStarting a new exerciseStarting level %sStopping timers, please wait...Suggestions:SynonymsText QuizThe blocks will light up randomly along with sound clues.The aim of the game:The aim of this activity:The arrows to the left take you to the previous image.The classic pong game where you must hit a ball with your bat.The difficulty of the set increases from left to right.The fewer hits you need to get the ball in the hole, the more points you get.The game is to match pairs of picturesThe last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis activity is known as the daily training which is a collection of activities.This is the menu used to select an activity.Tip:%sTouch the 'START' button on the right. The images will dissappear and when they return, one will have changed. Touch the picture which has changed.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Try to repeat the sequence of sounds played.Type the falling letters on the keyboard before they hit the ground.Use the 'sub menu' buttons for the different activity menusUse the menu below to choose between the different game categoriesUse the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When the flashing stops you will be prompted to repeat the sequence by touching the coloured blocks.When you have finished all the levels, without making to much mistakesWhen you spot a difference, touch it with your finger. You can click the question mark in the middle of the screen if you need a hint.When you touch the picture you will hear a sound. Match the image with others that make the same sound,to get points.YesYou have finished the daily training module.You have to make the blue ball enter the hole (in level 1)You play very good, do you want to try the next level ?You select the pictures by touching them. As you progress through the star levels more pairs appear to match.You won!!Your average results per group are:Your image is saved at: %sYour results are:and the red ones in levels 2 and 3.funny sounds :-)pointsquestion id: %sxml file %s is missing, this shouldn't happen, contact the %s developersProject-Id-Version: childsplay_sp_el_GR Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2012-08-11 22:18+0200 Last-Translator: Constantine Mousafiris Language-Team: Ελληνικά Language: el_GR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Lokalize 1.0 Plural-Forms: nplurals=2; plural=(n != 1); Ακούμπησε το κουμπί 'Αναπαραγωγή/ Play' για να συνεχίσει το παιγνίδι. Ακούμπησε την αλλαγμένη εικόνα.(το πολύ δύο για κάθε λέξη), μπορείς να παίξεις το τελευταίο επίπεδο, που είναι ένας λαβύρινθος.Μία συλλογή σπαζοκεφαλιών για μεγάλους.Δραστηριότητα:Δραστηριότητα: %sΔραστηριότητα:Όλα τα παιγνίδια έχουν την δική τους σελίδα βοήθειας, απλώς άρχισε ένα παιγνίδι και πάτα τα αστέρια στην κορυφή της οθόνης, για να επιλέξεις ένα διαφορετικό επίπεδο δυσκολίας.ΑλφάβητοΑλφάβητο/Εξάσκηση στο πληκτρολόγιοΒρέθηκε κι' όλας:Απάντησε τις ερωτήσεις μαθηματικών.Απάντησε τις ερωτήσεις του κουίζ.Είσαι σίγουρος/ ή ότι θέλεις να εγκαταλείψεις την καθημερινή προπόνηση; Τότε, όλα τα αποτελέσματα θα χαθούν.Στο κάτω μέρος, θα δεις μία εικόνα με ολόκληρο το παζλ συμπληρωμένο.Στο πανω μέρος της οθόνης, θα δεις μία ερώτηση γενικών γνώσεων.Στο πανω μέρος της οθόνης, θα δεις μια ερώτηση για ένα μέλος της Βασιλικής οικογένειαςΣτο πανω μέρος της οθόνης, θα δεις μια ερώτηση γενικών γνώσεων από τη περίοδο που διάλεξες.Στο πανω μέρος της οθόνης, θα δεις μια ερώτηση.ΜπάλεςΠαρακάτω, ακολουθεί μια επιλογή με τις πιθανές απαντήσεις. Ακούπησε τη σωστή απάντηση.ΜπιλιάρδοΠαιχνίδι μπιλιάρδουΔιαγραφήChildsplay_sp - εκπαιδευτικές δραστηριότητες, που χρησιμοποιούν το θέμα: %sΣύνδεση στο Childsplay_spΔιάλεξε το παιχνίδι που θέλεις να παίξεις:Κλασικό παιχνίδι μνήμης, όπου πρέπει να βρεις ζευγάρια καρτών.Κλασικό παιχνίδι μνήμης όπου πρέπει να βρεις ζευγάρια ήχων.Η ορθότητα είναι σημαντικότερη από την ταχύτηταΕνεργή δραστηριότητα: %sΛεπτομέρειεςΘέλεις πραγματικά να κλείσεις το πρόγραμμα;Σφάλμα !Σφάλμα κατά τη δημιουργία της δραστηριότητας %sΣφάλμα κατά την εισαγωγή της δραστηριότητας %sΓράμματα που πέφτουνΒρες όλες τις λέξεις με τη σωστή σειρά.ΒρέστοΕύρεση ήχουΕνυδρείο ψαριώνΔιασκέδασηΔιασκέδαση/ΑλφάβητοΔιασκέδαση/ΔιάφοραΔιασκέδαση/Εξάσκηση στο ποντίκιΠάτησε το κουμπί 'Έναρξη' για να ξεκινήσεις.Πάτησε το πλήκτρο διαστήματος ή ένα κουμπί του ποντικιού για να σταματήσεις την αντίστροφη μέτρησηΠάτησε το κουμπί Έξοδος για να σταματήσεις.Αν είσαι έτοιμος/ η να ξεκινήσεις την επόμενη δραστηριότητα, τότε πάτησε το κουμπί 'Έναρξη'Στα δύο τελευταία επίπεδα, τα γράμματα που πέφτουν είναι ανακατεμένα, πεζά και κεφαλαία. Μη λάβεις υπόψη σου τη μορφή, παρά μόνον το σωστό γράμμα. Στα παιχνίδια με δυο παίχτες, κερδίζει όποιος συγκεντρώσει 11 πόντους.ΠληροφορίεςΠληροφορίες σχετικά με %sΦαίνεται ότι δεν είναι δυνατή η χρήση της κάρτας ήχου αυτή τη στιγμή και, επειδή αυτή η δραστηριότητα αναφέρεται στους ήχους, η εφαρμογή θα κλείσει. Είναι πιθανό κάποια άλλη εφαρμογή να χρησιμοποιεί την κάρτα ήχου αυτή τη στιγμή.Εξάσκηση στο πληκτρολόγιοΓλώσσαΆκουσε τον ήχο και κάνε κλικ στην εικόνα του γράμματος που ανήκει.ΣύνδεσηΚοίτα προσεκτικά την πλήρη εικόνα του συμπληρωμένου παζλ στο κάτω μέρος.Φτιάξε μια λέξη με το γράμμα:ΜαθηματικάΚουίζ ΜαθηματικώνΚουίζ μελωδίαςΑπομνημόνευσε τις εικόνες. Μια από αυτές τις εικόνες θα αντικατασταθεί από μια νέα εικόνα. Πάτησε το κουμπί 'Έναρξη' για να αρχίσεις το παιγνίδι.ΜνήμηΔώσε προσοχή στη σειρά των ήχων, αλλά και στη σειρά των χρωμάτων.ΔιάφοραΕξάσκηση στο ποντίκιΔυο παίκτες - Παιχνίδι με αντίπαλο άλλον παίχτη.Παιχνίδι με αντίπαλο τον υπολογιστή - Προσπάθησε να κατατροπώσεις τον υπολογιστή.ΌχιΑριθμός επιπέδων : 1Αριθμός επιπέδων: 6ΕντάξειΣτην επόμενη οθόνη θα βρεις ένα πληκτρολόγιο. Προσπάθησε να φτιάξεις όσες περισσότερες λέξεις μπορείς που να αρχίζουν με το γράμμα '%s'.Στη οθόνη υπάρχουν τέσσερις ομάδες με διαφορετικά χρώματα.Στη οθόνη θα δεις δύο σχεδόν ίδιες εικόνες. Υπάρχουν, πάντως, διαφορές ανάμεσά τους.Επιτρέπονται μόνον οι λέξεις από το λεξικό.PackidΚουίζ με εικόνεςΒάλε το κομμάτι του παζλ εκεί όπου νομίζεις ότι ταιριάζει...Παρακαλώ, βάλε την ημερομηνία γέννησής σου.ύΠαρακαλώ, διάλεξε ένα σύνολο καρτών.Παρακαλώ, διάλεξε ένα σύνολο εικόνων για παζλ.PongΠάτησε το κουμπί Έναρξη με το δάκτυλό σου.ΠαζλΕρώτηση ;Έξοδος ;Κουίζ ΙστορίαςΒασιλικό ΚουίζΑποτελέσματαΑποθήκευση εικόναςΚουίζ με ΡητάΒαθμολογία:Διάλεξε μια δραστηριότητα, κάνε κλικ στο κουμπί και αυτή θα ξεκινήσει.Πολλές εικόνες από το παρελθόν θα εμφανισθούν στην οθόνη. Κοίταξέ τες προσεκτικά και απομνημόνευσε αυτά που βλέπεις.Ένας παίχτης - Χτύπα τη μπάλα στον τοίχο.Παιχνίδι μνήμης με ήχουςΈναρξηΕναρξη μιας νέας δραστηριότηταςΕπίπεδο έναρξης %sΤερματισμός των χρονόμετρων, παρακαλώ περιμένετε...Υποδείξεις:ΣυνώνυμαΚουίζ ΚειμένουΚουίζ με ΡητάΣκοπός του παιχνιδιού:Ο σκοπός αυτής της δραστηριότητας:Τα βέλη προς τα αριστερά θα σε μεταφέρουν στην προηγούμενη εικόνα.Το κλασικό παιχνίδι πιγκ πογκ, στο οποίο πρέπει να χτυπάς τη μπάλα με τη ρακέτα:Η δυσκολία στο σύνολο αυτό, αυξάνει από τα αριστερά προς τα δεξιά.Όσο λιγότερα χτυπήματα κάνεις για να βάλεις τη μπάλα στην τρύπα, τόσο περισσότερους βαθμούς παίρνεις.Το παιγνίδι συνίσταται στο να ταιριάξεις τα ζευγάρια εικόνων.Το τελευταίο επίπεδο είναι διαθέσιμο όταν θα έχεις τελειώσει τα τρία πρώτα επίπεδα χωρίς λάθη.Όσο περισσότερο κρατάς πατημένο το αριστερό πλήκτρο, τόσο δυνατότερα θα χτυπήσεις τη μπάλα.Η λέξη που πρέπει να βρες είναι: Υπάρχουν τρία επίπεδα, με τρεις λέξεις το καθένα.Υπάρχουν τρία επίπεδα για να διαλέξεις:Υπήρξε ένα σφάλμα στο %s. Παρακαλώ, έλεγξε το αρχείο καταγραφής και ενημέρωσε τους δημιουργούς.Υπήρξε ένα σφάλμα στη βάση δεδομένων, που μπορεί να προκλήθηκε από πολλούς παράγοντες. Τις περισσότερες φορές οφείλεται στο γεγονός ότι η έκδοση της βάσης δεδομένων δεν αντιστοιχεί με την έκδοση του προγράμματος. Το πρόγραμμα θα κρατήσει αυτόματα ένα αντίγραφο ασφαλείας της βάσης δεδομένων και θα την αντικαταστήσει με μια νέα. Η νέα βάση δεδομένων θα ονομάζεται sp.db_back και θα βρίσκεται στο %sΗ δραστηριότητα έχει %s επίπεδαΑυτή η δραστηριότητα είναι γνωστή σαν καθημερινή προπόνηση και πρόκειται για μία συλλογή δραστηριοτήτων.Από αυτό το μενού γίνεται η επιλογή μιας δραστηριότητας.Υπόδειξη:%sΠάτησε το κουμπί 'ΕΝΑΡΞΗ' στα δεξιά. Οι εικόνες θα εξαφανισθούν και όταν επιστρέψουν, μία απο αυτές θα έχει αλλάξει. Ακούμπησε την εικόνα που έχει αλλάξει.Προσπάθησε να "καταβροχθίσεις" όλα τα γράμματα με τη σωστή σειρά.Προσπάθησε να βρεις την έξοδο, ενώ καταβροχθίζεις φρούτα για περισσότερους πόντουςΠροσπάθησε να αφαιρέσεις κάθε ψάρι που εμφανίζεται, κάνοντας κλικ επάνω του με το ποντίκι.Δοκίμασε να επαναλάβεις την σειρά των ήχων που ακούστηκαν.Πληκτρολόγησε τα γράμματα που πέφτουν, πριν αυτά ακουμπήσουν στο έδαφος.Χρησιμοποίησε τα κουμπιά 'υπομενού' για τα μενού των διαφόρων δραστηριοτήτων.Χρησιμοποίησε το παρακάτω μενού για να διαλέξεις ανάμεσα στις διάφορες κατηγορίες παιγνιδιών.Χρησιμοποίησε το δεξί πλήκτρο του ποντικιού για να σημαδέψεις και το αριστερό για να χτυπήσεις τη μπάλα.Χρησιμοποιήστε αυτά τα πλήκτρα στο πληκτρολόγιό σου, για να ελέγξεις τη ρακέτα.Χρήστης: %sΌνομα χρήστη:Όταν σταματήσει το αναβοσβήσιμο, θα ειδοποιηθείς να επαναλάβεις την ίδια σειρά, αγγίζοντας τα χρωματιστά μπλόκα.Όταν θα έχεις τελειώσει όλα τα επίπεδα, χωρίς να έχεις κάνει πολλά λάθη Όταν βρεις μια διαφορά, άγγιξέ την με το δάκτυλό σου. Μπορείς να κάνεις κλικ στο ερωτηματικό, στη μέση της οθόνης, αν χρειάζεσαι μία συμβουλή.Όταν αγγίξεις την εικόνα. θα ακούσεις έναν ήχο. Ταίριαξε την εικόνα με άλλες, που κάνουν τον ίδιο ήχο, για να πάρεις βαθμούς.ΝαιΤελείωσες την ενότητα της καθημερινής προπόνησης.Πρέπει να βάλεις τη μπλε μπάλα στην τρύπα (Επίπεδο 1)Παίζεις πολύ καλά. Μήπως θέλεις να προσπαθήσεις το επόμενο επίπεδο ;Επιλέγεις τις εικόνες ακουμπώντας τες. Καθώς προχωράς με τα επίπεδα των αστεριών, όλο και περισσότερα ζευγάρια θα φαίνονται να ταιριάζουν.Κέρδισες!Ο μέσος όρος των αποτελεσμάτων σου, για κάθε ομάδα είναι:Η εικόνα σου αποθηκεύτηκε στο: %sΤα αποτελέσματά σου είναι:και τις κόκκινες στα επίπεδα 2 και 3.και διασκεδαστικούς ήχους :-)βαθμοίΚωδικός ερώτησης: %sΤο αρχείο xml %s λείπει. Αυτό δεν θα έπρεπε να συμβαίνει. Ελάτε σε επαφή με τους %s developerschildsplay-3.3/locale/es/0000755000175000017500000000000013271013626014070 5ustar stasstaschildsplay-3.3/locale/es/LC_MESSAGES/0000755000175000017500000000000013271013626015655 5ustar stasstaschildsplay-3.3/locale/es/LC_MESSAGES/childsplay.mo0000644000175000017500000005577313271013626020367 0ustar stasstas `/a@-& D O ]4g~$>4MK8D=KBJE\@Ik-2D &4;K6Q:;,2O(^)$,Kg(v  .4 D:e@q9o ?A:8s  $}07   +?;{ $ 9 q< c 3!lF!+!! ! !! "A" a"""&""("# #(#/# 4# A#hL## # ###I#6$G$iP$,$ $$% %!%3% S%`% i%:s%%%6%>&7S&M&&&W'DX''9','%(I@(K()Q),D*.q**Y*j+l+7,c8,D,3,:-,P-D}--;-B.EY.3... .d.FZ//u(00;00U0,91:f171m19G2 2#222#233-343HD3r35565OS5@535 6 #6 16C<66$7"-7P74_7)7)7_7;H8P8V8I,9Sv9V9E!:\g:i:8.;g;m;Iu;;;;;;9;1<J<Kb<F<<#< =2:=3m==!===> >$>->M>k>0{> >>> > >>>&?6?0G?x?%?P?%@E&@l@A@ 5ABAXA\BvB?}BBBBACRCC CDD~7DD6DDD E)!EDKEEEE3FIF_FbFpF8TGlG+G&H -H:HTH#eH>H)H(H,I7HII"I I II III]J `JkJzJ JJCJJKiK2KKKKKK3L BL OLZLIwLLL;LM3M:M_MNgO,\OOaObPiQ\Q9Q7 R XRncRxRKS:ShT=yT9T>T50UHfUUFUEVYWV7V VV WdW@wWWt>XX;XXXX1SYIY7YyZ2Z Z$ZZ[![9[%R[x[[^[O7y'ucGjMW8F9z5]0aqX%p&*D<.viP{V6+ hI B"_^EQC?l( ! )|Z4}sg ;`KUxt[\d:@Te RA~/rfb>=NmkYLo,J12Sw$-3#Hn Touch the 'Play' button to continue the game. Touch the changed picture.(max two per word), you can play the last level which is a maze.A collection of braintrain games for seniors.Accuracy is more important than speed.Activity :Activity : %sActivity:All pills, both red and yellow, stack on each other.All the games have there own help page, just start a game and hit the stars on top of the screen to select another difficulty.AlphabetAlphabet/KeyboardtrainingAlready found:An error occurred and BraintrainerPlus was restartedAnswer the math questions.Answer the quiz questions.Are sure you want to quit the dailytraining ? All the results will be lost.At the bottom you'll see a image of the complete puzzle.At the top of the screen, you will see a general knowledge question.At the top of the screen, you will see a question about a member of RoyaltyAt the top of the screen, you will see a question about a picture.At the top of the screen, you will see a question about general knowledge.At the top of the screen, you will see a question about math problem.At the top of the screen, you will see a question about sayings.At the top of the screen, you will see a question about the song playing.At the top of the screen, you will see a question from general knowledge question from the selected period.At the top of the screen, you will see a question.BallsBeginBelow it are a choice of possible answers. Touch the correct answer.BilliardBilliard GameCancelChange passwordCheatChildsplay_sp - educational activities, using theme:%sChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.CloseCongratulations, try again ?Content importCorrectness is more important than speedCorrectness is more important than speed.Current activity : %sDaily training sequenceDefault group 1Default group 2DetailsDo you really want to quit ?Error !Error constructing activity %sError importing activity %sFallinglettersFind all the letters in the right order.FinditFindsoundFishtankFourrowFunFun/AlphabetFun/MiscellaneousFun/MousetrainingGamemanagementGenerated by %s version %s for the %s activityGroupmanagementHit the 'Begin' button to start.Hit the 'space' key or a mousebutton to skip the countdownHit the Escape key to stop.If you ready to start the next activity, hit the 'start' button.In the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationInformation about %sIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginLook carefully and try to remember their positions on the screen.Look closely at the complete puzzle picture at the bottom.Look closely at the pictures, when you have them memorized touch 'START'. The pictures turn over, you must match the pair of cards.Make a word with the letter: MathMath QuizMelody QuizMemorize the pictures. One of these pictures will be replaced by a new picture. Touch the 'Start' button to begin the game.MemoryMind the sound sequence as well as the colors sequence.MiscellaneousMousetrainingMovieMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NewNoNo photo albums found ! You should place your pictures inside directories called 'Album_1', 'Album_2' etc Place these directories inside %sNumber of levels : 1Number of levels : 6OKOn the next screen you'll find a keyboard, try to make as much words as possible that begin with the letter '%s'.On the next screen you'll find a keyboard, try to name as much %s as possible with the same letter.On the screen are four blocks of different colours.On the screen you will see two almost identical pictures. However, there are differences between the images.Only words from the dictionary are allowed.PackidPhotoalbumPicture QuizPicture importPity, try again ?Place the puzzle piece on the right where you think it belongs...Please enter your year of birth.Please, choose a set of cards.Please, choose a set of images.Please, choose a set of puzzle images.PongPress the Start button with your finger.PuzzleQuestion ?Quit ?QuizQuiz historyQuiz royalRemember, the order of operations is multiplication or division and followed by addition or subtraction.ResultsSave imageSayings QuizScore:Select LanguageSelect an activity and click on the button, the activity will be started.Set volume levelSettingsSeveral images from the past will appear on the screen. Look carefully at them and remember what you see.Single play - Hit the ball against the wall.SoundmemorySpin the bottleStartStarting a new exerciseStarting level %sStopping timers, please wait...Suggestions:SynonymsText QuizThe blocks will light up randomly along with sound clues.The aim of the game:The aim of this activity:The arrows to the left take you to the previous image.The classic pong game where you must hit a ball with your bat.The difficulty of the set increases from left to right.The fewer hits you need to get the ball in the hole, the more points you get.The game is to match pairs of picturesThe last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: Then push the 'BEGIN' button. The numbers will disappear.There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis activity is known as the daily training which is a collection of activities.This is the menu used to select an activity.Tip: Try creating multiple winning scenario's.Tip:%sTo little questions found in %s for locale '%s', found %s questions should be at least 10To win the game you'll need four red pills lined up after each other horizontally, vertically or diagonal.Touch the 'START' button on the right. The images will dissappear and when they return, one will have changed. Touch the picture which has changed.Try to 'eat' all the letters in the appropriated order.Try to find the numbers, in the correct order and from low to high, by touching them on the screen.Try to find the way out while eating the fruits for extra points andTry to get four in a row in any possible direction.Try to remove the fish by clicking on them with the mouse.Try to repeat the sequence of sounds played.Type the falling letters on the keyboard before they hit the ground.Update BrainTrainerPlusUse the 'sub menu' buttons for the different activity menusUse the menu below to choose between the different game categoriesUse the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsermanagementUsername:When the flashing stops you will be prompted to repeat the sequence by touching the coloured blocks.When you have finished all the levels, without making to much mistakesWhen you spot a difference, touch it with your finger. You can click the question mark in the middle of the screen if you need a hint.When you touch the picture you will hear a sound. Match the image with others that make the same sound,to get points.WipeWipe with your finger on the screen to uncover the picture.YesYou can vertically drop a red pill in a desired column by pressing that exact column.You have finished the daily training module.You have to make the blue ball enter the hole (in level 1)You play very good, do you want to try the next level ?You select the pictures by touching them. As you progress through the star levels more pairs appear to match.You will see various numbers scattered around the screen.You won!!Your average results per group are:Your image is saved at: %sYour results are:and the red ones in levels 2 and 3.beginning with the letter: funny sounds :-)pointsquestion id: %sxml file %s is missing, this shouldn't happen, contact the %s developersProject-Id-Version: childsplay_sp_es_ES Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2008-12-31 10:11+0100 Last-Translator: Stas Zytkiewicz Language-Team: Spanish Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.11.4 Pulsa el botón 'Play' para continuar con el juego. Toca la imagen modificada.(máximo dos por palabra), podrás jugar al último nivel, que es un laberinto.Una colección de juegos de entrenamiento cerebral para mayores.La corrección es más importante que la velocidad.Actividad:Actividad: %sActividad:Todas las píldoras, rojas y amarillas, se apilan unas sobre otras.Todos los juegos tienen su propia página de ayuda, inicia el juego y pincha en las estrellas de la parte superior de la pantalla para seleccionar otra dificultad.AlfabetoAlfabeto/Entrenamiento del tecladoYa encontrado:Ocurrió un error y se reinició el BraintrainerPlusResponde a las preguntas de matemáticas.Responde las preguntas del cuestionario.¿Está seguro de que quiere salir del entrenamiento diario? Todos los resultados se perderán.En la parte inferior verás una imagen del puzzle completo.En la parte superior de la pantalla verás una pregunta de conocimiento general.En la parte superior de la pantalla verás una pregunta sobre un miembro de la realezaEn la parte superior de la pantalla verás una pregunta sobre una imagen.En la parte superior de la pantalla verás una pregunta sobre conocimiento general.En la parte superior de la pantalla verás una pregunta sobre un problema matemático.En la parte superior de la pantalla verás una pregunta sobre dichos.En la parte superior de la pantalla verás una pregunta sobre la canción que está sonando.En la parte superior de la pantalla verás una pregunta de conocimiento general del periodo seleccionado.En la parte superior de la pantalla verás una pregunta.BolasEmpezarAbajo está una lista de posibles respuestas. Toca la respuesta correcta.BillarJuego de billarCancelarCambiar la claveTrampaChildsplay_sp - actividades educativas, usando el tema:%sSesión de Childsplay_spElije el juego a jugar:Juego clásico de memoria en el que tienes que encontrar pares de tarjetas.Juego clásico de memoria donde tienes que encontrar pares de sonidos.CerrarFelicidades, ¿intentarlo de nuevo?Importación de contenidoLa corrección es más importante que la velocidadLa corrección es más importante que la velocidad.Actividad actual: %sSecuencia de entrenamiento diarioGrupo por defecto 1Grupo por defecto 2Detalles¿Seguro que deseas salir?¡Error!Error construyendo actividad %sError importando actividad %sLetras que caenEncuentra todas las letras en el orden correcto.EncuéntraloBuscar sonidosPeceraCuatroenrayaDiversiónDiversión/AlfabetoDiversión/DiversosDiversión/Entrenamiento con el ratónGestióndejuegosGenerado por %s versión %s para la actividad %sGestióndegruposPulsa el botón 'Begin' para empezar.Pulsa la tecla «Espacio» o un botón del ratón para saltarte la cuenta atrásPulsa la tecla «Escape» para parar.Si estás listo para la siguiente actividad, pulsa el botón 'start'.En los últimos dos niveles las mayúsculas y minúsculas están mezcladas, pero no tienes que preocuparte por eso, sólo por la letraEn los modos multiusuario, gana el primero que consiga 11 puntos.InformaciónInformación sobre %sParece que no es posible usar la tarjeta de sonido en este momento, y como esta actividad se basa totalmente en sonidos, se va a cerrar el programa. Este problema también puede deberse a otra aplicación que esté usando la tarjeta de sonido en este momento.Entrenamiento del tecladoLenguaEscucha el sonido y pulsa sobre el carácter al que pertenezca.Iniciar sesiónMira con cuidado e intenta recordar sus posiciones en la pantalla.Mira de cerca la imagen del puzzle completo en la parte de abajo.Mira las imágenes de cerca y cuando las hayas memorizado pulsa 'START'. Las imágenes se voltearán, debes emparejar las cartas.Haz una palabra con la letra: MatemáticasCuestionario de MatemáticasCuestionario de MelodíasMemoriza las imágenes. Una de las imágenes será reemplazada por una nueva. Pulsa el botón 'Start' para iniciar el juego.MemoriaFíjate en la secuencia de sonidos y en la de colores.DiversosEntrenamiento del ratónPelículaMultijugador - Juega contra otro jugador.Multijugador contra la computadora - Intenta ganar a la computadora.NuevoNo¡No se encontraron albumes de fotos! Debe colocar sus fotos dentro de carpetas de nombre 'Album_1', 'Album_2', etc Coloque esos directorios dentro de %sNúmero de niveles: 1Número de niveles: 6OKEn la siguiente pantalla encontrarás un teclado, intenta hacer tantas palabras como sea posible que empiecen por la letra '%s'.En la siguiente pantalla encontrarás un teclado, intenta nombrar tantas %s como sea posible con la misma letra.En la pantalla hay cuatro bloques de colores diferentes.En la pantalla verás dos imágenes casi idénticas. En cualquier caso, hay diferencias entre las imágenes.Sólo se permiten palabras del diccionario.PackidAlbumdefotosCuestionario de imágenesImportar imágenEs una pena, ¿intentamos de nuevo?Coloca la pieza del puzzle en la derecha donde creas que va...Por favor introduce tu año de nacimientoPor favor, seleccione un mazo de cartas.Por favor, seleccione un grupo de imágenes.Por favor, seleccione un grupo de imágenes de puzzles.PongPulsa el botón Start con tu dedo.Rompecabezas¿Pregunta?¿Salir?CuestionarioCuestionario de historiaCuestionario realRecuerda, el orden de las operaciones es multiplicación o división seguido de suma o resta.ResultadosGuardar imagenCuestionario de dichosPuntuación:Seleccione idiomaSelecciona una actividad y pulsa el botón. La actividad comenzaráAjustar nivel del volumenAjustesMúltiples imágenes del pasado aparecerán en la pantalla. Miralas con atención y recuerda lo que veas.Jugador único - Golpea la pelota contra la pared.Memoria de sonidosGirar la botellaIniciarComenzando un nuevo ejercicioNivel inicial %sDeteniendo los temporizadores. Por favor, espera...Sugerencias:SinónimosCuestionario de matemáticasLos bloques se iluminarán aleatoriamente junto con las pistas de sonido.El objetivo del juego:El objetivo de esta actividad:Las flechas de la izquierda te llevan a la imagen anterior.El juego clásico del Pong en el que debes golpear una pelota con tu raqueta.La dificultad del conjunto aumenta de izquierda a derecha.Cuantos menos intentos necesites para introducir la bola en el agujero, más puntos obtendrás.El juego es emparejar imágenesEl último nivel sólo estará disponible cuando hayas terminado sin errores los tres primeros niveles.Cuanto más tiempo mantengas pulsado el botón izquierdo, con más fuerza se golpeará la bola.La palabra a buscar es: Entonces pulsa el botón 'BEGIN'. Los números desaparecerán.Hay tres niveles con tres palabras cada uno.Hay tres niveles a elegir:Hubo un error en %s. Por favor, verifica los ficheros de registro e informa a los desarrolladoresHubo un error en la base de datos. Esto puede deberse a muchas cosas, pero la mayoría de las veces se debe a que tu versión de la base de datos no coincide con la versión del programa. Se hará una copia de respaldo de la base de datos original, y se reemplazará por una nueva. La base de datos original se llama ahora sp.db_back y se encuentra en %sEsta actividad tiene %s nivelesEsta actividad se conoce como el entrenamiento diario, que es una colección de actividades.Éste es menú que se usa para seleccionar una actividad.Consejo: Intenta crear múltiples escenarios ganadores.Consejo:%sPocas preguntas encontradas en %s para el idioma '%s', se encontraron %s preguntas y deberían ser al menos 10Para ganar el juego necesitas cuatro píldoras rojas alineadas una detrás de otra horizontal, vertical o diagonalmente.Pulsa el botón 'START' en la derecha. Las imágenes desaparecerán y cuando vuelvan una habrá cambiado. Toca la imagen que ha cambiado.Intenta «comerte» todas las letras en el orden adecuado.Intenta encontrar los números en el orden correcto desde el menor al mayor, tocándolos en la pantalla.Intenta encontrar la salida, comiendo las frutas para obtenerIntenta conseguir cuatro en raya en cualquier dirección.Intenta eliminar los peces pulsando sobre ellos con el ratón.Intenta repetir la secuencia de sonidos reproducidos.Teclea las letras que caen con el teclado antes de que lleguen al suelo.Actualiza BrainTrainerPlusUse los botones de 'sub menu' para los distintos menús de actividadesUse el menu inferior para elegir entre distintas categorías de juegoUsa el botón derecho del ratón para apuntar y el botón izquierdo para golpear la bola.Usa estas teclas del teclado para controlar la raqueta.Usuario: %sGestióndeususariosUsuario:Cuando el parpadeo se detenga se te pedirá que repitas la secuencia tocando los bloques coloreados.Cuando finalices todos los niveles sin demasiadas equivocacionesCuando detectes una diferencia tócala con tu dedo. Puedes pulsar en el interrogante del medio de la pantalla si necesitas una pista.Cuando toques la imagen oiras un sonido. Empareja la imagen con otras que hacen el mismo sonido para obtener puntos.LimpiaLimpia con tu dedo en la pantalla para descubrir la imagen.SíPuedes dejar caer una píldora roja en la columna deseada pulsando en esa misma columna.Has terminado el módulo de entrenamiento diario.Tienes que conseguir que la bola azul entre en el agujero (en el nivel 1)Juegas muy bien, ¿quieres intentar el siguiente nivel?Seleccionas las imágenes tocándolas. A medida que progresas en los niveles de estrellas más parejas parecen coincidir.Verás varios números repartidos por la pantalla.¡Has ganado!Tus resultados medios por grupo son:Tu imagen se guardó en: %sTus resultados son:y las rojas en los niveles 2 y 3.comienzan por la letra: puntos extra y divertidos sonidos :-)puntosidentificado de pregunta: %sfichero xml %s no encontrado, esto no debería suceder, contacte con los desarrolladores de %schildsplay-3.3/locale/de/0000755000175000017500000000000013271013626014051 5ustar stasstaschildsplay-3.3/locale/de/LC_MESSAGES/0000755000175000017500000000000013271013626015636 5ustar stasstaschildsplay-3.3/locale/de/LC_MESSAGES/childsplay.mo0000644000175000017500000002026013271013626020327 0ustar stasstasL|ep@q  :-;h(( 8BK O\n:q9- g s ? P ?Y    + ? 3 6 = B II ,     >- Ml W D W ,m % I K V,r7D:DWE3 F)p:t # n;  >2Nq-&0:k|N< 56?E X b4oIE.N}'JCKeQG,]$g.A\*>\J#4n  /, %2 9X   5$B / )K-E 3D7 9!H@? '"(<:.> 6=L%,0&;F*2#4+J8G1CAI(max two per word), you can play the last level which is a maze.Activity : %sAlphabetAlphabet/KeyboardtrainingBallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?FallinglettersFind all the letters in the right order.FindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginMathMemoryMiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sStopping timers, please wait...The aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: childsplay_sp_de_DE Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2009-01-26 16:56+0100 Last-Translator: Stas Zytkiewicz Language-Team: Language: de_DE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.11.4 (max zwei pro Wort), kommt als letzter Level ein Irrgarten.Aktivität: %sAlphabetAlphabet/TastaturtrainingBälleBilliardBilliard SpielChildsplay_sp LoginWähle ein Spiel:Klassisches Memoryspiel bei dem Paare gefunden werden müssen.Klassisches Memoryspiel bei dem gleichklingende Paare gefunden werden müssen.Korrektheit ist wichtiger als GeschwindigkeitAktuelle Aktivität: %sWollen Sie wirklich aufhören ?Fallende BuchstabenFinde alle Buchstaben in richtiger Reihenfolge. Geräusch-findenAquariumLustigesLustiges/AlphabetLustiges/SonstigesLustiges/MaustrainingDie Leertaste oder eine Maustaste drücken, um den Countdown zu überspringen.In den letzten beiden Levels sind Groß- und Kleinbuchstaben vermischt aber man muß sich nicht um die Groß- oder Kleinschreibung kümmern.Im Mehrspieler Modus gewinnt der Spieler, der 11 Punkte hat.InformationEs scheint keine Zugriffsmöglichkeit auf die Soundkarte zu geben und diese Anwendung wird abgebrochen, da man dazu die Klangausgabe bräuchte. Dieses Problem kann auch durch eine andere Anwendung verursacht werden, welche die Soundkarte blockiert.TastaturtrainingSpracheHören Sie auf den Buchstaben und klicken Sie darauf.AnmeldenMatheGedächtnis-MemorySonstigesMaustrainingMehrspieler - Mehrere Spieler spielen gegeneinander.Mehrspieler gegen den Computer - Versuche gegen den Computer zu gewinnen.NeinPacjungePongPuzzleWählen Sie eine Aktivität aus und klicken Sie darauf um zu starten.Einzelspieler - Spiel den Ball gegen die Wand.Akustisches MemoryStarte Level %sZähler werden beendet, bitte warten...Das Ziel dieser Aktivität:Das Ziel dieser Aktivität:Das klassische Pong Spiel, wo man den Ball mit dem Schläger treffen muß.Je weniger Schüsse man benötigt, desto höher ist die Punktezahl.Der letzte Level wird erst freigeschalten, wenn die ersten beiden Levels fehlerfrei vollendet wurden.Je länger man die linke Maustaste hält, desto härter wird der Ball geschossen.Das fertige Wort ist:Es gibt drei Levels mit jeweils drei Worten.Man kann aus drei Levels auswählen:Es gab einen Fehler in %s. Bitte untersuchen Sie die Log-Datei und informieren Sie die Programmautoren.Es gab einen Fehler in der Datenbankdatei. Dafür gibt es mehrere mögliche Ursachen, zumeist ist es jedoch verursacht durch einen Versionskonflikt wenn die Datenbankdatei nicht zur Version des Programmes passt. Es wird eine Sicherungskopie der aktuellen Datenbankdatei erstellt und diese durch eine neue Datei ersetzt. Die originale Datei hat den Namen sp.db_back und befindet sich in %sDie Aktivität hat %s LevelsDies ist das Auswahlmenü für die Aktivität.Versuche alle Buchstaben in der richtigen Reihenfolge zu sammeln.Man muß den Weg nach draußen finden während man die Früchte für Extrapunkte sammelt undVersuchen Sie die Fische zu treffen, damit diese verschwinden.Man muß die fallende Buchstaben auf der Tastatur drücken, bevor diese den Boden erreichen.Die rechte Maustaste ist zum Zielen und die linke Maustaste zum Schießen.Benutze folgende Tasten um den Schläger zu steuern.Benutzer: %sBenutzername:Wenn alle Levels fertig sind, ohne viele FehlerJaDer blaue Ball muss in das Loch (in Level 1)Du hast gewonnen !!Ihre Grafik wurde gespeichert als: %sund der rote Ball muss in Level 2 und 3 auch in das Loch.lustige Geräusche :-)Punktechildsplay-3.3/locale/ar/0000755000175000017500000000000013271013626014063 5ustar stasstaschildsplay-3.3/locale/ar/LC_MESSAGES/0000755000175000017500000000000013271013626015650 5ustar stasstaschildsplay-3.3/locale/ar/LC_MESSAGES/childsplay.mo0000644000175000017500000002145413271013626020347 0ustar stasstasGTa@ R`i :;(Dm  :q29  ?     $ +2 ?^     I , + 7 I ^ >x M D ,J %w I K 3,O7|D:D4Ey3 FM:Q #y 1+ ]jy,tVQ#%1L^gy `QQ'$y P  %22JK} DE*p[,j><>{\*JCEzD tI o `.!!!U!"k""#"@"!" #% G9 =,480 2'7-!<6*FD/+$;(?#">& @A)1C:. 5 3BE(max two per word), you can play the last level which is a maze.Activity : %sAlphabetAlphabet/KeyboardtrainingBallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?FallinglettersFindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.It seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginMathMemoryMiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sThe aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The longer you hold the left button the harder it will hit the ball.There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: childsplay_sp_latest Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2008-12-07 14:45+0100 Last-Translator: Stas Zytkiewicz Language-Team: Arabic <> Language: ar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Lokalize 0.2 Plural-Forms: nplurals=2; plural=(n != 1); (خطآن لكل كلمة كحد أقصى) يمكنك لعب المستوى الأخير والذي يمثل متاهةالنشاط : %sالحروف الأبجديةالأحرف/تدريب لوحة المفاتيحالكراتبلياردولعبة البلياردودخول البرنامجاختر اللعبة التي تريدها:لعبة ذاكرة تقليدية حيث يجب عليك إيجاد أزواج البطاقات المتشابهة.لعبة تقليدية حيث يمكنك إيجاد الأصوات المتشابهةالدقة أهم من السرعةالنشاط الحالي : %sهل تريد الخروج فعلا؟الأحرف المتساقطةالبحث عن الصوتحوض السمكمتعةمتعة/أحرفترفيه/منوعاتمتعة/تدريب الفأرةاضغط مفتاح "المسافة" أو زر الفأرة لتخطي العد التنازليفي المستويين الأخيرين تم خلط الأحرف الصغيرة والكبيرة لكن لا يتحتم عليك موافقة الحالة وإنما يكفي الحرف فقطفي اللعب المزدوج، يكسب اللاعب الذي له 11 نقطة.يبدو أنك غير قادر على استخدام بطاقة الصوت وبسبب أن هذا النشاط يعتمد اعتمادا أساسيا على الصوت فسنضطر للخروج. قد تكون هذه المشكلة أيضا بسبب أن برنامجا آخر يستخدم بطاقة الصوت في نفس اللحظة.تدريب لوحة المفاتيحاللغةاستمع للصوت واضغط على الصورة التي ينتمي لها.الدخولرياضياتالذاكرةمنوعاتتدريب الفأرةلعب مزدوج - العب ضد لاعب آخر.لعب مزدوج ضد الحاسوب - حاول هزيمة الحاسوب.لاPackidPongالغازاختر نشاطا واضغط على الزر لبدء النشاطلعب منفرد - اضرب الكرة في اتجاه الحائط.ذاكرة الأصواتمستوى البداية %sهدف اللعبة:هدف النشاطلعبة بونج التقليدية حيث يجب عليك ضرب الكرة بمضربك.كلما قلت عدد الضربات التي تحتاجها لإدخال الكرة في الحفرة كلما زادت النقاط التي تحصل عليها.كلما أمسكت بالزر الأيسر لفترة أطول كلما زادت شدة ضرب الكرةهناك ثلاث مستويات بثلاث كلمات لكل.هناك ثلاث مستويات للاختيار بينها: هناك خطأ في %s. نرجو فحص سجل الأخطاء وإخطار المطورينهنالك خطأ في قاعدة البيانات. قد يكون الخطأ لاسباب عديدة لكن في أغلب الأحيان بسبب أن إصدار قاعدة البيانات لا يتوافق مع إصدار البرنامج. سأقوم بنسخ قاعدة البيانات واستبدالها بواحدة جديدة. وسيكون اسم قاعدة البيانات الأصلية sp.db_back وسيتم وضعها في %sهذا النشاط له %s مستوياتهذه هي القائمة المستخدمة لاختيار النشاط.حاول التهام الأحرف بالترتيب المناسب.حاول إيجاد الطريق خارجا أثناء التهامك الفواكه للحصول على نقاط أكثرحاول إزالة السمك بالضغط عليه بالفأرة.اطبع الأحرف المتساقطة بواسطة لوحة المفاتيح قبل أن ترتطم بالأرض.استخدم زر الفأرة الأيمن للتصويب وزر الفأرة الأيسر لضرب الكرةاستخدم هذه المفاتيح من لوحة المفاتيح للتحكم بالمضرب.المستخدم: %sاسم المستخدم:عندما تنتهي من جميع المستويات بدون أخطاء كثيرةنعميتحتم عليك جعل الكرة الزرقاء تدخل الحفرة (في المستوى الأول)لقد ربحت!!تم حفظ الصورة على: %sوالحمراء في المستوى الثاني والثالثوأصوات أكثر متعة :)النقاطchildsplay-3.3/locale/cs/0000755000175000017500000000000013271013626014066 5ustar stasstaschildsplay-3.3/locale/cs/LC_MESSAGES/0000755000175000017500000000000013271013626015653 5ustar stasstaschildsplay-3.3/locale/cs/LC_MESSAGES/childsplay.mo0000644000175000017500000001740213271013626020350 0ustar stasstasL|ep@q  :-;h(( 8BK O\n:q9- g s ? P ?Y    + ? 3 6 = B II ,     >- Ml W D W ,m % I K V,r7D:DWE3 F)p:t # O   (;U3e4,,2@ s Gx$ C ,'2T  D*('B jt2:UDM) C4T)s<93=H[1  ":,g3k  5$B / )K-E 3D7 9!H@? '"(<:.> 6=L%,0&;F*2#4+J8G1CAI(max two per word), you can play the last level which is a maze.Activity : %sAlphabetAlphabet/KeyboardtrainingBallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?FallinglettersFind all the letters in the right order.FindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginMathMemoryMiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sStopping timers, please wait...The aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: Childsplay 1.4 Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: Last-Translator: Lubomír Ludvík Language-Team: Lubomír Ludvík Language: cs_CZ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: cs X-Poedit-Country: CZECH REPUBLIC (max. dvě za slovo), můžete hrát poslední úroveň, která je bludištěm.Aktivita : %sAbecedaAbeceda/Procvičení klávesniceKouleKulečníkKulečníková hraChildsplay přihlášeníVyberte si hru:Klasické pexeso, kde musíte najít dvojici karet.Klasické pexeso, kde musíte najít dvojici zvuků.Správnost je důležitější než rychlostAktuální činnost: %sOpravdu chcete skončit?Padající písmenaNajděte všechna písmena ve správném pořadí.Najít zvukAkváriumZábavaZábava/AbecedaZábava/RůznéZábava/Procvičení myšiStiskni 'mezerník', nebo tlačítkem myši přeskoč odpočítáváníV posledních dvou úrovních jsou dohromady velká i malá písmena, ale stačí stisknout jen klávesu (bez velikosti)Vyhrá ten, kdo má první 11 bodů.InformaceZdá se, že nemůžeme použít vaši zvukovou kartu a protože tato činnost je o zvuku, musíme končit.Tento problém může být také způsoben jinou aplikaci, která právě teď používá zvukovou kartu.Procvičení klávesniceJazykPoslechněte si zvuk a klikněte na obrázek, který mu odpovídá.VstoupitPočtyPaměťRůznéProcvičení myšiPro dva hráče - Hra proti jinému hráči.Hra proti počítači - Zkuste porazit počítač.NeBludištěTenisSkládačkaVyberte činnost a klikněte na tlačítko, činnost bude zahájena.Pro jednoho hráče - Pinkání proti zdi.Zvuková paměťPočáteční úroveň %sZastavení časovače, čekejte prosímCíl hry:Cíl této aktivity:Klasický tenis, kde musíte pálkou trefit míč.Čím méně úderů do koule, tím více bodů dostanete.Poslední úroveň je dostupná pouze po dokončení prvních tři úrovní bez chyb.Čím déle budete držet levé tlačítko tím větší bude úder.Hledané slovo je:Jsou zde tři úrovně s různými slovy.Máte na výběr tři druhy her:Došlo k chybě v %s. Zkontrolujte záznam a informujte vývojářeNastala chyba v databázi, což může být způsobeno mnoha důvody, ale většinou je to způsobeno tím, že vaše verze databáze neodpovídá verzi programu. Budu zálohovat vaši původní databázi a pak ji nahradím novou. Původní databázi bude sp.db_back a bude uložena v %sTato aktivita má % s úrovníToto menu slouží k výběru činností.Snažte se 'jíst' všechna písmena ve správném pořadí.Pokuste se najít cestu ven, jezte ovoce pro extra body aPokuste se odstranit ryby kliknutím na ně myší.Stiskněte písmeno na klávesnici před jeho dopadem na zem.Pravým tlačítkem myši udeříte do koule a levým tlačítkem si zobrazíte nápovědu.Pomocí kláves na klávesnici ovládáte pálku.Uživatel: %sUživatelPo dokončení všech úrovních, aniž by bylo mnoho chybAnoMusíte dostat modrý míč do otvoru (v úrovni 1)Vyhrál jsi!Váš obrázek je uložen na: %sa červený v úrovni 2 a 3.podivné zvuky :-)bodychildsplay-3.3/locale/ca/0000755000175000017500000000000013271013626014044 5ustar stasstaschildsplay-3.3/locale/ca/LC_MESSAGES/0000755000175000017500000000000013271013626015631 5ustar stasstaschildsplay-3.3/locale/ca/LC_MESSAGES/childsplay.mo0000644000175000017500000005546413271013626020340 0ustar stasstas, /@-&M t  4~KTn4}K84DmKBJAE@Ik]2DM Vdk{6:; \b()/7 T_g(   1.@o :@q89 ?+A1:s2P U _}k7 ( 6D+J?vJ _ t  q c 3X!l!+!%" ," 7"D"S"Ae" """&#.#(3#\# c#n#u# z# #h## $ $$"$I2$|$$i$,% -%9%I%O%g%y% %% %:%% &6#&>Z&7&M&&'WF'D''9',3(%`(I(K(*Q8*,*.**Y*jG++7F,c~,D,3'-:[-,-D-.; .B\.E.3./"/ 1/d;/F//un00;0%1U)1,1:171m292 2#223#"3F3b3s3z3H33.55K5;#62_6 66 6G6777 767)7#'8UK8>8O8U09H9R9S":Bv:X:j;6};; ;L;<< (<4<D<6L<<<<<;<-=%4=Z=1n=2== = >>/>7> N>Y> b>>>,>> >>???/?@?`?<p??$?M?#1@OU@o@7A MAYAnAPBjB:rB B?BABFyAFmF5)Gh_G3GGHH#H'3HB[H-H%H%H0III)NI xI I III IZI J $J1J @JLJGbJJJbJ..K]KnK}KKK-K K K KGLJL_L8{LGL5LJ2M!}MWMFM>N>[N.N'N[NMO P^P<]Q8Q QjQgIRR72S\jSRSCT9^T2TFTUM0U?~UWU@V WVbVtVfV?V},WoWX9!X[XU_X)X2X2YlEY3YY+Y&$ZKZgZZZZZ[Zb 8< ]`\_+I4Q Mef|zW!5FR%>3o{q uC:Dst0@wY~Z6Epi1)&G-;ydag=n,'}vNP(*r/#[KUhjVJ?"cTAX. 7 9HLBx$S^Ol2mk Touch the 'Play' button to continue the game. Touch the changed picture.(max two per word), you can play the last level which is a maze.A collection of braintrain games for seniors.Accuracy is more important than speed.Activity :Activity : %sActivity:All pills, both red and yellow, stack on each other.All the games have there own help page, just start a game and hit the stars on top of the screen to select another difficulty.AlphabetAlphabet/KeyboardtrainingAlready found:An error occurred and BraintrainerPlus was restartedAnswer the math questions.Answer the quiz questions.Are sure you want to quit the dailytraining ? All the results will be lost.At the bottom you'll see a image of the complete puzzle.At the top of the screen, you will see a general knowledge question.At the top of the screen, you will see a question about a member of RoyaltyAt the top of the screen, you will see a question about a picture.At the top of the screen, you will see a question about general knowledge.At the top of the screen, you will see a question about math problem.At the top of the screen, you will see a question about sayings.At the top of the screen, you will see a question about the song playing.At the top of the screen, you will see a question from general knowledge question from the selected period.At the top of the screen, you will see a question.BallsBeginBelow it are a choice of possible answers. Touch the correct answer.BilliardBilliard GameCancelChange passwordCheatChildsplay_sp - educational activities, using theme:%sChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.CloseCongratulations, try again ?Content importCorrectness is more important than speedCorrectness is more important than speed.Current activity : %sDaily training sequenceDefault group 1Default group 2DetailsDo you really want to quit ?Electro_spError !Error constructing activity %sError importing activity %sFallinglettersFind all the letters in the right order.FinditFindsoundFishtankFourrowFunFun/AlphabetFun/MiscellaneousFun/MousetrainingGamemanagementGenerated by %s version %s for the %s activityGroupmanagementHit the 'Begin' button to start.Hit the 'space' key or a mousebutton to skip the countdownHit the Escape key to stop.If you ready to start the next activity, hit the 'start' button.In the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationInformation about %sIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginLook carefully and try to remember their positions on the screen.Look closely at the complete puzzle picture at the bottom.Look closely at the pictures, when you have them memorized touch 'START'. The pictures turn over, you must match the pair of cards.Make a word with the letter: MathMath QuizMelody QuizMemorize the pictures. One of these pictures will be replaced by a new picture. Touch the 'Start' button to begin the game.MemoryMind the sound sequence as well as the colors sequence.MiscellaneousMousetrainingMovieMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NewNoNo photo albums found ! You should place your pictures inside directories called 'Album_1', 'Album_2' etc Place these directories inside %sNumber of levels : 1Number of levels : 6Numbers_spOKOn the next screen you'll find a keyboard, try to make as much words as possible that begin with the letter '%s'.On the next screen you'll find a keyboard, try to name as much %s as possible with the same letter.On the screen are four blocks of different colours.On the screen you will see two almost identical pictures. However, there are differences between the images.Only words from the dictionary are allowed.PackidPhotoalbumPicture QuizPicture importPity, try again ?Place the puzzle piece on the right where you think it belongs...Please enter your year of birth.Please, choose a set of cards.Please, choose a set of images.Please, choose a set of puzzle images.PongPress the Start button with your finger.PuzzleQuestion ?Quit ?QuizQuiz historyQuiz royalRemember, the order of operations is multiplication or division and followed by addition or subtraction.ResultsSave imageSayings QuizScore:Select LanguageSelect an activity and click on the button, the activity will be started.Set volume levelSettingsSeveral images from the past will appear on the screen. Look carefully at them and remember what you see.Single play - Hit the ball against the wall.SoundmemorySpin the bottleStartStarting a new exerciseStarting level %sStopping timers, please wait...Suggestions:SynonymsText QuizThe blocks will light up randomly along with sound clues.The aim of the game:The aim of this activity:The arrows to the left take you to the previous image.The classic pong game where you must hit a ball with your bat.The difficulty of the set increases from left to right.The fewer hits you need to get the ball in the hole, the more points you get.The game is to match pairs of picturesThe last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: Then push the 'BEGIN' button. The numbers will disappear.There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis activity is known as the daily training which is a collection of activities.This is the menu used to select an activity.Tip: Try creating multiple winning scenario's.Tip:%sTo little questions found in %s for locale '%s', found %s questions should be at least 10To win the game you'll need four red pills lined up after each other horizontally, vertically or diagonal.Touch the 'START' button on the right. The images will dissappear and when they return, one will have changed. Touch the picture which has changed.Try to 'eat' all the letters in the appropriated order.Try to find the numbers, in the correct order and from low to high, by touching them on the screen.Try to find the way out while eating the fruits for extra points andTry to get four in a row in any possible direction.Try to remove the fish by clicking on them with the mouse.Try to repeat the sequence of sounds played.Type the falling letters on the keyboard before they hit the ground.Update BrainTrainerPlusUse the 'sub menu' buttons for the different activity menusUse the menu below to choose between the different game categoriesUse the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsermanagementUsername:When the flashing stops you will be prompted to repeat the sequence by touching the coloured blocks.When you have finished all the levels, without making to much mistakesWhen you spot a difference, touch it with your finger. You can click the question mark in the middle of the screen if you need a hint.When you touch the picture you will hear a sound. Match the image with others that make the same sound,to get points.WipeWipe with your finger on the screen to uncover the picture.YesYou can vertically drop a red pill in a desired column by pressing that exact column.You have finished the daily training module.You have to make the blue ball enter the hole (in level 1)You play very good, do you want to try the next level ?You select the pictures by touching them. As you progress through the star levels more pairs appear to match.You will see various numbers scattered around the screen.You won!!Your average results per group are:Your image is saved at: %sYour results are:and the red ones in levels 2 and 3.beginning with the letter: funny sounds :-)pointsquestion id: %sxml file %s is missing, this shouldn't happen, contact the %s developersProject-Id-Version: childsplay_sp_ca_ES Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2009-01-09 07:48+0100 Last-Translator: Stas Zytkiewicz Language-Team: American English Language: cs_ES MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: Lokalize 0.2 Plural-Forms: nplurals=2; plural=n != 1; Prem el botó 'Play' per a continuar el joc. Toca la imatge modificada.( màxim 2 per paraula), podreu jugar el darrer nivell que és un laberint.Una col·lecció de jocs d'entrenament mental per a majors.La correcció és més important que la velocitat.Activitat :Activitat : %sActivitat:Totes les pindoles, vermelles i grogues, s'apilen unes sobre les altresTots els jocs tenen la seua pàgina d'ajuda, inicia el joc i pica als estels a la part superior de la pantalla per seleccionar un altra dificultat.Alfabet Alfabet/Entrenament al teclatJa trobat:Ha ocorregut un error i BraintrainerPlus fou reiniciatContesta les qüestions de matemàtiques.Contesta les qüestions de la provaEstà segur de que vol surtir de l'entrenament diari? Tots els resultats es perderan.A la part inferior voreu una imatge del trencaclosques completA la part superior de la pantalla voreu una qüestió de coneiximents generals.A la part superior de la pantalla voreu una qüestió sobre un membre de la reaialesaA la part superior de la pantalla voreu una qüestió sobre una pintura.A la part superior de la pantalla voreu una qüestió sobre coneiximents generals.A la part superior de la pantalla voreu una qüestió sobre un problema matemàtic.A la part superior de la pantalla voreu una qüestió sobre dites.A la part superior de la pantalla voreu una qüestió sobre la cançó que està sonant.A la part superior de la pantalla voreu una qüestió de coneiximents generals del periode sel·leccionat.A la part superior de la pantalla voreu una qüestió.BolesComençarSota teniu una selecció de respostes posibles. Toqueu la resposta correcta.BitllarJoc de bitllarCancel·larCanviar la clauTrampesChildsplay_sp - jocs educatius, fent servir el tema:%sUsuari de Childsplay_spEscull el joc per jugar:Clàssic joc de memòria on heu de trobar parelles de cartesClàssic joc de memòria on heu de trobar parelles de sons.TancarFelicitats, ¿provem un altra vegada?Important contingutLa correcció és més important que la velocitatLa correcció és més important que la velocitat.Activitat actual: %sSeqüencia d'entrenament diàriaGrup per defecte 1Grup per defecte 2DetallsRealment voleu eixir ?Electro_sp¡Error!Error construïnt l'activitat %sError important l'activitat %sLletres que cauenTroba totes les lletres en l'ordre correcte.Troba-hoTroba sonsTanc de peixosQuatre en ratllaDivertitDivertit/AlfabetDivertit/BarrejaDivertit/Entrenament de ratolíGestió de jocsGenerat per %s Childsplay_sp versió %s per a l'activitat %sGestió de grupsPren el botó 'Begin' per començar.Premeu la tecla espaiadora o el botó del ratolí per aturar el compte enrerePremeu la tecla escape per a parar.Si esteu preparats per a iniciar la següen activitat doneu-li al botó 'start'Als següents dos nivells les majúscules i les minúscules estan barrejades, no hi feu cas, sols a les lletresAl mode multijugador, el primer que fa 11 punts guanya.InformacióInformació sobre %sSembla que no podeu utilitzar la tarja de so ara i com aquesta activitat utilitza tota l'estona sons , cal que ajusteu la tarja. Aquest problema està probablement causat per una altra aplicació que empra la tarja de so ara.Entrenament amb el teclatLlenguaEscolteu el so i premeu sobre la imatge a la qual pertany.Nom d'usuariMira amb compte i intenta recordar les posicions en la pantallaMira amb atenció la imatge del puzzle complet a la part de baix.Mira les imatges amb atenció, quan les tingues memoritzades toca 'START'. Les imatges es donen la volta, tens que emparellar les cartes.Fes una paraula amb la lletra: MatesProva de matesProva de melodiesMemoritza les imatges. Una de les imatges será reemplaçada per una nova imatge. Toca el botó 'Start' per a començar el joc.MemòriaFixa't en la seqüencia de sons i colors.BarrejaEntrenament amb el ratolíPerlículaMultijugador - Juga contra un altre jugador humà.Multijugador contra l'ordinador - Intenta guanyar a la computadora.NouNoNo s'ha trobat cap album de fotos! Heu de colocar les fotos dins de directoris anomenats 'Album_1', 'Album_2', etc Coloca aquets directoris dins de %sNúmero de nivells : 1Número de nivells : 6Numbers_spOKA la pantalla següent trobareu un teclat, intenta fer tantes paraules com siga possible que comencen per la lletra '%s'.A la pantalla següent trobareu un teclat, intenta anomenar tantes %s com siga possible amb la mateix lletra.A la pantalla hi ha quatre blocs de colors diferents.A la pantalla voreu dos imatges quasi idèntiques. En cualsevol cas, hi diferències entre les imàtges.Només es poden fer servir paraules del diccionari.PackidAlbum de fotosProva de imatgesImportar imatgeÉs una pena, intentar-ho un altre cop?Col·loca la peça del puzzle de la dreta on penseu que pertany...Per favor introduixca el seu any de naiximentPer favor, trie un conjunt de cartes.Per favor, trie un conjunt d'imatges.Per favor, trie un conjunt de imatges de puzzle.PongPremeu el botó Inciar amb el vostre dit.Trecaclosques¿Pregunta?¿Surtir?ProvaProva d'historiaProva reialRecorda, el ordre de les operacións és multiplicació o divisió seguit de suma o resta.ResultatsDesar imatgeProva de ditesPuntuació:Sel·leccione llenguaSeleccioneu una activitat i premeu el botó , la activitat començarà.Ajustar nivell de volumAdjustosMúltiples imatges del pasat apareixeran a la pantalla. Mira-les amb compte i recorda el que veus.Jugador únic - Colpeja la bola contra el mur.Memòria de sonsGira l'ampollaIniciarIniciant un exercici noNivell inicial %sAturant els rellotges, si-us-plau espereu ...Sugerencies:SinònimsProva de textEls blocs s'il·luminaran aleatòriamente juntament amb pistes sonores.L'objectiu del joc :L'objectiu de l'activitat :Les fletxes de l'esquerra et porten a l'imatge anterior.El clàssic joc de Pong on heu de colpejar una bola amb el vostre bat. La dificultat del conjunt aumenta d'esquerra a dreta.Quan menys colps necessiteu per posar la bola al forat més punts tindreu.El joc és per aparellar imatges.El últim nivell sols és accessible qua acabeu els tres primers nivells sense errades.Quan més temps premeu el botó esquerre més ràpida eixirà la bola.La paraula per a trobar és:Aleshores pulsa el botó 'BEGIN'. Els números desapareixeran.Hi ha tres nivells amb tres paraules cadascun.Hi ha tres nivells per escollir des de:El error ha estat en %s. Si-us-plau comproveu el fitxer logs i informeu els desenvolupadorsHa ocorregut un error a la base de dades , aquest pot ser causat per molt motius però la major part de les vegades està provocat pel fet que la versió de la base de dades no concorda amb la versió del programa. Hauríeu de fer una còpia de seguretat de la base de dades original i reemplaçar-la per una altra nova. La base de dades original s'anomenada ara sp.db_back i està col·locada en %sAquesta activitat té %s nivellsAquesta activitat es coneguda com el entrenament diari, que és una col·lecció d'activitats.Aquest és el menú utilitzat per seleccionar una activitat.Consell: Intenta crear múltiples escenaris de victoria.Consell:%sTrobades molt poques questions en %s per al idioma '%s', trobades %s qüestions deurien de ser al menys 10Per a guanyar el joc necesites cuatre pindoles bermelles aliniades horizontal, vertical o diagonalment.Toca el botó 'START' de la dreta. Les imatges desapareixeran i quan retornen una haurà canviat. Toca la imatge que ha canviat.Intenteu 'menjar' totes les lletres en l'ordre correcteIntenta trobar els números en l'ordre corecte i de menor a major tocant-los en la pantalla.Intenta trobar el camí d'eixida mentre menges fruits per aconseguir punts extra iIntenta aconseguir cuatre en línea en cualsevol direcció posible.Intenteu traure el peix prement sobre ell amb el ratolí.Intenta repetir la seqüencia de sons reproduïts.Tecleja les lletres que cauen amb el teclat abans que arriben al sòl.Actualitzant BrainTrainerPlusFes servir els botons de 'sub menu' per als menus de les diferents activitatsFes servir el menu de baix per a triar entre categories de jocsUtilitzeu el botó dret del ratolí per girar i el botó esquerre per colpejar la bola.Utilitzeu aquestes tecles al vostre teclat per controlar el bat.Usuari: %sGestió d'usuarisNom de l'usuari:Quan el parpelleig s'ature se vos demanarà la repetició de la seqüencia tocant els blocs de colors.Quan hageu finalitzat tots els nivells, sense fer massa erradesQuan trobeu una diferència, toqueu-la amb el dit. Podeu picar a l'interrogant del mig de la pantalla si necesiteu una pista.Quan toqueu la imatge sentireu un só. Emparella la imatge amb altres que fan el mateix só per obtindre punts.NetejaNeteja amb el dit en la pantalla per a mostrar la imatge.SíPots deixar caure una pindola bermella en una columna pulsant a eixa mateixa columna.Heu acabat el módul d'entrenament diari.Heu de posar la bola blava al forat ( al nivell 1)Jugues molt bé, ¿vols provar el següent nivell?Sel·lecciona les imatges tocant-les. Mentre progresses als nivells d'estels mes parelles semblen coincidir.Veurás varios números repartitis per la pantalla.¡¡Heu guanyat!!La teua mitjana de resultats per grups és:La vostra imatge ha estat desada a: %sEls vostres resultats són:i la vermella al nivells 2 i 3començant per la lletra: sons divertits :-)puntsidentifcador de qüestió: %sel fitxer xml %s està desaparegut, no hauria de pasar, contacteu als desenvolupadors de %schildsplay-3.3/locale/it/0000755000175000017500000000000013271013626014075 5ustar stasstaschildsplay-3.3/locale/it/LC_MESSAGES/0000755000175000017500000000000013271013626015662 5ustar stasstaschildsplay-3.3/locale/it/LC_MESSAGES/childsplay.mo0000644000175000017500000001733613271013626020365 0ustar stasstasGTa@ R`i :;(Dm  :q29  ?     $ +2 ?^     I , + 7 I ^ >x M D ,J %w I K 3,O7|D:D4Ey3 FM:Q #Lx !  8DID?*BRa ju TC6T [fms1'?,<izI`Nh+*TXc19 DG:SS.o F: ?'J8r*% G9 =,480 2'7-!<6*FD/+$;(?#">& @A)1C:. 5 3BE(max two per word), you can play the last level which is a maze.Activity : %sAlphabetAlphabet/KeyboardtrainingBallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?FallinglettersFindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.It seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginMathMemoryMiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sThe aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The longer you hold the left button the harder it will hit the ball.There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: 0.80-pre1 Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2008-12-01 19:09+0100 Last-Translator: Stas Zytkiewicz Language-Team: Andrew Language: it_IT MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Italian X-Poedit-Country: ITALY (massimo 2 per parola), puoi giocare all'ultimo livello che è un labirinto.Attività: %sAlfabetoAllenamento per tastiera/alfabetoPalleBiliardoGioco del BiliardoAccesso a Childsplay_spScegli il gioco:Classico gioco del Memory nel quale devi trovare le coppie di carte.Classico gioco del memory nel quale devi trovare le coppie di suoni.Suggerimento: la correttezza è più importante della velocitàAttività corrente: %sVuoi veramente uscire ?Lettere CadentiTrova il suonoAcquarioDivertenteDivertente/AlfabetoVarie/DivertenteDivertente/allenamento per mousePremere la 'barra di spazio' o un tasto del mouse per evitare il conto alla rovesciaNegli ultimi due livelli in cui le lettere maiuscole e minuscole sono mischiate, bisognerà solo digitare la lettera corrispondente senza tenere conto se è maiuscola o minuscola.In modalità 'Più utenti', vince chi totalizza per primo 11 punti.Sembra impossibile utilizzare la scheda audio in questo momento, e poiché questa attività utilizza dei suoni, sarà chiusa. Questo problema può essere causato anche da un'altra applicazione che utilizza la scheda audio in questo momento.Allenamento per la tastieraLinguaAscolta i suoni e clicca sull'immagine corrispondente.AccediMatematicaMemoryVarieAllenamento per il mousePiù giocatori - Gioca contro un altro giocatore.Computer - Prova a battere il computer.NoPackidPongPuzzleSelezionare una attività e cliccare sul pulsante per avviarla.Singolo - Lancia la pallina contro il muro.Memory del suonoLivello di partenza %sScopo del gioco:Scopo di questa attività:Il classico gioco nel quale devi colpire la pallina con la tua racchetta.Meno colpi utilizzerai per far entrare in buca la palla, maggiore sarà il punteggio realizzato.Più a lungo tieni premuto il bottone sinistro e più forte colpirai la palla.Ci sono tre livelli da tre parole ciascuno.Puoi scegliere fra tre modalità di gioco:Si è verificato un errore in %s. Controllare i file log ed informare i sviluppatoriSi è verificato un errore nel database questo può essere causato da molte fattori, ma spesso è causato dal fatto che la versione del database non corrisponde alla versione del programma. Si creerà unl backup del database originale e poi verrà sostituito con uno nuovo. Il database originale verrà chiamato sp.db_back e sarà salvato in %sQuesta attività ha %s livelliQuesto è il menù per selezionare una attività.Prova a 'mangiare' tutte le lettere nell'ordine corretto.Cerca la via di uscita e mangia la frutta per ottenere un punteggio Prova ad eliminare i pesci cliccando su di essi col mouse.Digitare sulla tastiera le lettere cadenti sul monitor prima che raggiungano terra.Usa il pulsante destro del mouse per mirare e quello sinistro per colpire la palla.Usa questi tasti per controllare la racchetta.Utente: %sNome giocatore:Una volta terminati tutti i livelli, senza aver commesso troppi erroriSìNel livello 1 devi far entrare in buca la palla blu mentreHai vinto!La tua immagine è stata salvata in: %snei livelli 2 e 3 devi far entrare in buca quelle rosse.maggiore ed ascoltare suoni divertenti :-) punti!childsplay-3.3/locale/pt/0000755000175000017500000000000013271013626014104 5ustar stasstaschildsplay-3.3/locale/pt/LC_MESSAGES/0000755000175000017500000000000013271013626015671 5ustar stasstaschildsplay-3.3/locale/pt/LC_MESSAGES/childsplay.mo0000644000175000017500000002003613271013626020363 0ustar stasstasL|ep@q  :-;h(( 8BK O\n:q9- g s ? P ?Y    + ? 3 6 = B II ,     >- Ml W D W ,m % I K V,r7D:DWE3 F)p:t # rM ?BW@, :(H q~ Vi$:  , ".7 ?*L?wH*"M\.rFQ_l[(*B#mQlP1o.E.FEU9 +87p>t "!  5$B / )K-E 3D7 9!H@? '"(<:.> 6=L%,0&;F*2#4+J8G1CAI(max two per word), you can play the last level which is a maze.Activity : %sAlphabetAlphabet/KeyboardtrainingBallsBilliardBilliard GameChildsplay_sp loginChoose the game to play:Classic memory game where you have to find pairs of cards.Classic memory game where you have to find pairs of sounds.Correctness is more important than speedCurrent activity : %sDo you really want to quit ?FallinglettersFind all the letters in the right order.FindsoundFishtankFunFun/AlphabetFun/MiscellaneousFun/MousetrainingHit the 'space' key or a mousebutton to skip the countdownIn the last two levels the uppercase and lowercase are mixed but you don't have to match the case only the letterIn the multiplayer modes, the one who has 11 points wins.InformationIt seems that we cannot use the sound card right now and because this activity is all about sound, we just quit. This problem can also be caused by another application which uses the soundcard right now.KeyboardtrainingLanguageListen to the sound and click on the image to which it belongs.LoginMathMemoryMiscellaneousMousetrainingMulti player - Play against another player.Multi player against the computer - Try to defeat the computer.NoPackidPongPuzzleSelect an activity and click on the button, the activity will be started.Single play - Hit the ball against the wall.SoundmemoryStarting level %sStopping timers, please wait...The aim of the game:The aim of this activity:The classic pong game where you must hit a ball with your bat.The fewer hits you need to get the ball in the hole, the more points you get.The last level is only available when you finish the first three levels without errors.The longer you hold the left button the harder it will hit the ball.The word to find is: There are thee levels with three words each.There are three modes to choose from:There was an error in %s. Please check the logs and inform the developersThere was an error in the database this can be caused by many things but most of the time it's caused by the fact that your version of the database doesn't match the version of the program. I will backup your original database and then replace it with a new one. The original database is now called sp.db_back and it's placed in %sThis activity has %s levelsThis is the menu used to select an activity.Try to 'eat' all the letters in the appropriated order.Try to find the way out while eating the fruits for extra points andTry to remove the fish by clicking on them with the mouse.Type the falling letters on the keyboard before they hit the ground.Use the right mousebutton to aim and the left button to hit the ball.Use these keys on your keyboard to control the bat.User: %sUsername:When you have finished all the levels, without making to much mistakesYesYou have to make the blue ball enter the hole (in level 1)You won!!Your image is saved at: %sand the red ones in levels 2 and 3.funny sounds :-)pointsProject-Id-Version: childsplay_sp_pt_PT 1.1 Report-Msgid-Bugs-To: POT-Creation-Date: 2017-07-09 11:38+0200 PO-Revision-Date: 2009-03-16 12:56+0100 Last-Translator: Stas Zytkiewicz Language-Team: Language: pt_PT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.11.4 (máximo dois por palavra), podes jogar o último nível que é um labirinto.Actividade : %sAlfabetoAlfabeto/TreinodotecladoBolasBilharJogo de BilharAutenticação do Childsplay_spEscolhe o jogo a jogar:Jogo de memória clássico onde tens de encontrar pares de cartas.Jogo de memória clássico onde tens de encontrar pares de sons.Exactidão é mais importante que velocidadeActividade actual: %sDe certeza que queres sair?LetrasEmQuedaEncontra todas as letras na ordem certa.EncontrarsomAquárioDiversãoDiversão/AlfabetoDiversão/VáriosDiversão/TreinodoratoCarrega na tecla de 'espaço' ou num botão do rato para saltar a contagem decrescenteNos dois últimos níveis as maiúsculas e as minúsculas estão misturadas, mas basta acertares na letraNos modos multi-jogador, aquele que tiver 11 pontos ganha.InformaçãoParece que não conseguimos usar a placa de som neste momento e como esta actividade é fundamentalmente sobre som, então simplesmente saímos. Este problema pode também ser causado por outra aplicação que esteja a usar a placa de som neste momento.TreinodetecladoLinguagemOuve o som e clica na imagem a que pertence.EntrarMatemáticaMemóriaVáriosTreinoderatoMulti-jogador - Joga contra outro jogador.Multi-jogador contra o computador - Tenta ganhar ao computador.NãoPackidJogo de TénisPuzzleEscolhe uma actividade e clica no botão, a actividade vai ser iniciada.Um jogador - Atira a bola contra a parede.MemóriasonoraA iniciar o nível %sA parar os temporizadores, por favor espera...O objectivo do jogo:O objectivo desta actvidade:Clássico jogo de ténis onde tens de bater na bola com a tua raquete.Quanto menos pancadas precisares para meter a bola no buraco, mais pontos ganhas.O último nível apenas está disponível quando acabares os primeiros três níveis sem erros.Quanto mais tempo mantiveres premido o botão esquerdo, com mais força vais bater na bola.A palavra a encontrar é:Há três níveis com três palavras cada.Há três modos que podes escolher:Houve um erro em %s. Por favor verifica os históricos e informa os programadoresHouve um erro na base de dados. Isto pode ser causado por diversas coisas mas a maioria das vezes é causado pelo facto de a tua versão da base de dados não coincidir com a versão do programa. Vou criar uma salvaguarda da tua base de dados original e depois substitui-la por uma nova. A base de dados original chama-se agora sp.db_back e está disponível em %sEsta actividade tem %s níveisEste é o menu usado para escolher uma actividadeTentar 'comer' todas as letras na ordem certa.Tenta encontrar a saída enquanto comes as frutas para pontos extra eTenta tirar os peixes clicando neles com rato.Escreve no teclado as letras que caiem antes que elas atinjam o chão.Utiliza o botão direito do rato para apontar e o botão esquerdo para bater na bola.Usa estas teclas no teu teclado para controlar a raquete.Utilizador: %sUtilizador:Quando acabares todos os níveis, sem fazer muitos errosSimTens de fazer com que a bola azul entre no buraco(no nível 1)Ganhaste!!A tua imagem está guardada em: %se as vermelhas nos níveis 2 e 3.sons divertidos :-)pontoschildsplay-3.3/languageDefinitions.py0000644000175000017500000000535113271013626016557 0ustar stasstas# -*- coding: utf-8 -*- # Copyright (c) 2010 Rene Dohmen and Peter Govers # Copyright (c) 2010 Stas Zykiewicz # languageDefinitions.py # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # leave this line intact as it is _ = lambda x:x ################## Put your translatable words in this list ################### words = [ _("Good!"), _("Cheat"), _("Start"), _("Try again!"), _("New word"), _("New question"), _("Other category"), _("Did you enjoy this?"), _("Yes"), _("No"), _("Continue movie"), _("Next movie"), _("Memory"), _("New Games"), _("Puzzle"), _("Quiz"), _("Training"), _("Short Term"), _("Long Term"), _("Daily Training") ] ############################### End of word definitions ##################### # Don't change stuff below this line. # text from dailytraing.xml which is used in DT endscreen a = _("short-term") b = _("long-term") c =_("quiz") if __name__ == '__main__': import codecs import gettext from SPConstants import LOCALEDIR lang_nl = gettext.translation('seniorplay', LOCALEDIR, languages=['nl']) lang_fr = gettext.translation('seniorplay', LOCALEDIR, languages=['fr']) lang_de = gettext.translation('seniorplay', LOCALEDIR, languages=['de']) lang_sv = gettext.translation('seniorplay', LOCALEDIR, languages=['sv']) lines = ["Words from the languageDefinitions file"] sep = "-" * 80 for lang in [lang_nl, lang_de, lang_fr, lang_sv]: lines.append(sep) s = lang.info()['language-team'].split('_')[0].split('language: ')[0] lines.append("Language code: %s" % s) lines.append(sep) lang.install() _ = lang.ugettext for word in words: lines.append("%s = %s" % (word, _(word))) f = codecs.open('languageDefinitions_output.txt', 'wt', 'utf-8') f.write('\n'.join(lines)) f.close() childsplay-3.3/SPMainCore.py0000664000175000017500000021423613271013626014546 0ustar stasstas# -*- coding: utf-8 -*- # Copyright (c) 2006-2010 Stas Zykiewicz # # SPMainCore.py # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # The MainCoreCallbacks class, that's the thing that controls the events except # activity stuff, is using ocempgui. # The menu items are ocempgui buttons. # Sprites are only used in the activities. # The activity menu and the bottom menu bar are controlled by MainCoreGui import sys import gc import atexit import os import pygame import threading import textwrap import types import ConfigParser import subprocess import datetime from pygame.constants import * import time #create logger, logger was configured in SPLogging import logging module_logger = logging.getLogger("childsplay.SPMainCore") import utils ###### for debugging memoryleaks ########### #from guppy import hpy # #h = hpy() # ############################################ from SPSpriteUtils import SPInit, MySprite, set_big_mouse_cursor, set_no_mouse_cursor, SPGroup from SPGoodies import SPGoodies # This is a kludge to execute the toplevel code in SPConstants as it is already # imported in SPlogging before the loggers are set. import SPConstants reload(SPConstants) from SPConstants import * try: import psyco #@UnresolvedImport #psyco.log(PSYCOPATH, 'w') psyco.profile() except: pass else: module_logger.debug("We got psyco, we should go faster, but report any weird crashes.") import SPMenu import SPDataManager as SPDataManager import Version import SPVideoPlayer from SPWidgets import Init, Dialog, Label, MenuBar, VolumeAdjust, ExeCounter, \ Graph, TransImgButton #from SPVirtualkeyboard import VirtualKeyboard try: from sqlalchemy import exceptions as sqlae except ImportError: from sqlalchemy import exc as sqlae # Used to cleanup stuff when the Python vm ends def cleanup(): module_logger.info("cleanup called.") module_logger.info("flushing dbase to disk") # flush dbase? # remove any locks that been set utils._remove_lock() module_logger.info("logger stops.") # add cleanup stuff in here or register it like the Activity class does # index_off_php = os.path.join(WWWDIR, 'index_off.php') # index_php = os.path.join(WWWDIR, 'index.php') # if os.path.exists(index_php): # os.remove(index_php) # shutil.copy(index_off_php, index_php) atexit.register(cleanup) class MainEscapeKeyException(Exception): """Raised when the user decides to quit the maincore. This is catched by schoolsplay.py to check if we quit or go back to the login""" pass class EscapeKeyException(Exception): """ This is raised from the activity_loop when the user hits escape. We basically using this exception as a signal""" pass class LevelsEndException(Exception): """ This is raised from activity_loop when there are no more levels in the game.""" pass class GDMEscapeKeyException(Exception): """ This is raised from the activity_loop when the user hits escape. We basically using this exception as a signal""" pass class MainCoreGui: def __init__(self, resolution=(800, 600), dbmaker=None, options=None, fullscr=None, mainscr=None, error=False,session_id=None, start_splash=0, language='en'): """The main SP core. The idea is that we have a menubar and a activity area. The menu bar is the place for "our" gui widgets. The activity doesn't draw in the menu bar and we don't come into the activity area. We call from the eventloop first some local checks like pressing escape etc. Then we call the actives_group in which our activity sprites are held. Finally we call the the eventloop of the activity. """ self.logger = logging.getLogger("childsplay.SPMainCore.MainCoreGui") self.logger.debug("Start") self.myspritesactivated = None self.menubuttons_backup = [] self.volume_level = 50 self.levelcount = 1 self.DTmode = False self.DTactivity = None self.DTlevelscounter = 1 self.DTlevelcount = 3 self.DTact_is_finished = None self.COPmode = False self.cmd_options = options self.theme_rc = self.cmd_options.theme_rc self.logger.debug("Found menu rc options %s" % self.theme_rc) self.theme = self.cmd_options.theme # language = self.cmd_options.lang dbase = os.path.join(HOMEDIR, self.theme, 'quizcontent.db') self.foreign_observers = [] # we setup the stuff we need for the stats table data. # we collect evrything in a hash and when we done we put it into a # dbase table. self.statshash = {'session':session_id} # get our base options from a rc file. self.core_rc_path = os.path.join(ACTIVITYDATADIR, 'SPData', 'base', 'themes','core.rc') self.logger.debug("Parsing core rc file %s" % self.core_rc_path) d = {} config = ConfigParser.ConfigParser() config.read(self.core_rc_path) for k, v in dict(config.items(self.theme)).items(): d[k] = v d['theme'] = self.theme self.core_rc = d self.logger.debug("found core rc options %s" % d) if self.cmd_options.no_sound: self.logger.info("Disabling sound support as requested by user") pygame.mixer.quit() # set mouse cursor ? # TODO: use different cursors with an cmdline option if self.cmd_options.bigcursor: cursorfile = os.path.join(ACTIVITYDATADIR, 'SPData', 'base', 'icons', 'cursor_1.xbm') maskfile = os.path.join(ACTIVITYDATADIR, 'SPData', 'base', 'icons', 'cursor_1-mask.xbm') set_big_mouse_cursor(cursorfile, maskfile) if self.cmd_options.nocursor: set_no_mouse_cursor() self.resolution = resolution self.vtkb = None # will become the virtual keyboard object ## Set icon for the window manager ## ICONPATH = os.path.join(ACTIVITYDATADIR, 'SPData', 'themes', self.theme) DEFAULTICONPATH = os.path.join(ACTIVITYDATADIR, 'SPData', 'themes', 'childsplay') # TODO:change icon files to the ones we would use if sys.platform == 'darwin': file = 'logo_cp_180x180.png' elif sys.platform == 'win32': file = 'logo_cp_64x64.png' else: file = 'logo_cp_32x32.xpm' if not os.path.exists(os.path.join(ICONPATH, file)): icon_path = os.path.join(DEFAULTICONPATH, file) else: icon_path = os.path.join(ICONPATH, file) try: surface = pygame.image.load(icon_path) except pygame.error: self.logger.info('Could not load image "%s"\n %s' % (file, pygame.get_error())) else: surface.set_colorkey(surface.get_at((0, 0)), RLEACCEL) pygame.display.set_icon(surface) # Thread lock, must be used by activities to be able to block everything. self.lock = threading.Lock() while start_splash + 3 > time.time(): time.sleep(0.1) # setup main screen if self.cmd_options.fullscreen: if mainscr: self.screen = mainscr else: self.screen = pygame.display.set_mode(self.resolution, FULLSCREEN) else: if mainscr: self.screen = mainscr else: self.screen = pygame.display.set_mode(self.resolution) if self.theme_rc['menubar_position'] == 'bottom': y = 500 blitpos_y = 0 self.menu_rect = pygame.Rect(0, 500, 800, 100) else:# we only have two options: top or bottom y = 0 blitpos_y = 100 self.menu_rect = pygame.Rect(0, 0, 800, 100) captxt = _("Childsplay_sp - educational activities, using theme:%s") % self.theme if self.cmd_options.theme != 'childsplay': captxt = captxt.replace('Childsplay_sp', self.cmd_options.theme) pygame.display.set_caption(captxt.encode('utf-8')) self.backgroundimage = utils.load_image(os.path.join(ICONPATH, self.theme_rc['background'])) self.screen.blit(self.backgroundimage, (0, 0)) img = utils.load_image(os.path.join(ICONPATH, self.theme_rc['menubartop'])) self.backgroundimage.blit(img, (0, y)) self.screen.blit(self.backgroundimage, (0, 0)) self.backgr = self.screen.convert()# a real copy # init SpriteUtils, mandatory when using SpriteUtils self.actives_group = SPInit(self.screen, self.backgr, self.cmd_options.__dict__) self.actives_group.set_onematch(True) # Must be called before using SPWidgets Init(self.theme) # setup SPGoodies which we pass to the activities # from here on we set various attributes for the spgoodies instance self.screenclip = None self.spgoodies = SPGoodies(self, self.screen, \ self.get_virtkb, \ language, \ self.lock, \ self.activity_pre_level_end, \ self.activity_level_end, \ self.activity_game_end, \ self.activity_info_dialog, \ self.display_execounter, \ self.set_framerate, \ self.enable_dice, \ self.set_dice_minimal_level, \ self.theme_rc, \ self.cmd_options.theme,\ self.disable_menubuttons, self.enable_menubuttons,\ self.disable_level_indicator,self.enable_level_indicator, \ self.disable_exit_button, self.enable_exit_button, \ self.disable_score_button, self.enable_score_button, \ self.hide_level_indicator, self.show_level_indicator, \ self.get_orm,self.register_foreign_observer) # special goodies for the menu self.spgoodies._menu_activity_userchoice = self._menu_activity_userchoice self.spgoodies._cmd_options = self.cmd_options self.spgoodies.stats_hash = self.statshash # and one for the quizengine self.spgoodies._unmute_quiz_voice = True if error: # there was an error in sp and the core is restarted self.activity_info_dialog(_("An error occurred and BraintrainerPlus was restarted")) # we get a datamanager which will start the SPgdm/BTP login screen, if available, # and does some username and table checking. try: self.dm = SPDataManager.DataManager(self.spgoodies, dbmaker) except sqlae.SQLAlchemyError: self.logger.exception("Error while handling the dbase, try removing the existing dbase") except utils.MyError, info: self.logger.error("%s" % info) raise utils.SPError # # get locale setting from dbase and reset any locales already set to the # # commandline language option # if not self.cmd_options.lang: # language = self.dm._get_language() # self.spgoodies.localesetting = language # else: # language = (language, None) # self.spgoodies.localesetting = language # get session id, needed for the stats hash # get user data user_id = self.dm.get_user_id() name = self.dm.get_username() surf = utils.char2surf(name.replace('_', ' '), fcol=GREY ,fsize=12, bold=True) self.backgroundimage.blit(surf,((800 - surf.get_width()) / 2 ,70)) orm, session = self.dm.get_orm('users', 'user') row = session.query(orm).filter_by(user_id = user_id).first() self.statshash['user_id'] = user_id self.statshash['datetime'] = datetime.datetime.now()# we override it when something is loaded # we now have user data so we check to see if we should set some custom stuff # Set volume level if not row: self.logger.warning("Not found userdata for user id:%s" % user_id) self.volume_level = 75 else: self.volume_level = int(row.audio) self.logger.debug("found volume setting %s for user id %s" % (self.volume_level, user_id)) try: subprocess.Popen("amixer set Master %s" % self.volume_level + "%",shell=True) cmd=subprocess.Popen("amixer get Master",shell=True, \ stdout=subprocess.PIPE, \ stderr=subprocess.PIPE) output = cmd.communicate()[0] except Exception, info: module_logger.warning("program 'amixer' not found, unable to set volume levels: %s" % info) self.volume_level = 75 else: for line in output.split('\n'): if "%]" in line: self.volume_level = int(line.split("%]")[0].split("[")[1]) # Check to see if today it's the user birthday if row and row.birthdate: name = "%s %s" % (row.title, row.last_name) if not os.path.exists(os.path.join(TEMPDIR, 'birthday', name)): date = row.birthdate today = datetime.date.today() if today.day == date.day and today.month == date.month: age = int(today.year) - int(date.year) try: import birthday except ImportError: self.logger.warning("no birthday module found.") else: self.logger.debug("Start birthday show") bd = birthday.birthday(self.screen, self.backgr,name, age) bd.run() f = open(os.path.join(TEMPDIR, 'birthday', name), 'w') f.write('1') f.close() if row and row.levelup_dlg != 'true': self.no_levelup_dlg = True else: self.no_levelup_dlg = False if self.dm.are_we_cop(): self.COPmode = True self.statshash['is_cop'] = True # restore window title after the datamanager replaced it pygame.display.set_caption(captxt.encode('utf-8')) if self.COPmode: theme_dir = os.path.join('controlpanel_lgpl','lib', 'SPData') xmlname = self.dm.are_we_cop() self.logger.info("Using different xml for our menu, were in COP mode") # we must rebuild the screen before we construct the menu self.backgroundimage = utils.load_image\ (os.path.join(theme_dir, 'controlpanel_main.png')) self.screen.blit(self.backgroundimage, (0, 0)) img = utils.load_image(os.path.join(theme_dir, 'controlpanel_top.png')) self.backgroundimage.blit(img, (0, y)) self.screen.blit(self.backgroundimage, (0, 0)) self.backgr = self.screen.convert()# a real copy # init SpriteUtils, mandatory when using SpriteUtils self.actives_group = SPInit(self.screen, self.backgr) self.actives_group.set_onematch(True) # MustSPMainCore.py be called before using SPWidgets Init(self.theme) # and reset the screen used in spgoodies self.spgoodies.screen = self.screen else: theme_dir = self.spgoodies.get_home_theme_path() xmlname = 'SP_menu.xml' session.close() # We get the build menu activity here. # check if we have local_quizdata, if not we remove the menu button # orm, session = self.dm.get_orm('game_quizregional', 'content') # row = session.query(orm).first() # if row: # showlocalquiz = True # else: # showlocalquiz = False # session.close() # orm, session = self.dm.get_orm('game_quizpersonal', 'content') # row = session.query(orm).filter_by(user_id = user_id).first() # if row: # showpersonalquiz = True # else: # showpersonalquiz = False # session.close() showlocalquiz = False showpersonalquiz = False try: self.activity = SPMenu.Activity(self.COPmode, showpersonalquiz, showlocalquiz) except Exception, info: self.logger.exception("Failed to setup the menu") raise utils.MyError, info # First we parse the menu xml self.activity._parse_menu(os.path.join(ACTIVITYDATADIR, 'SPData', 'themes', self.theme), xmlname) # now we can build the menu buttons if self.COPmode: theme_dir = os.path.join('controlpanel_lgpl','lib', 'SPData') else: theme_dir = os.path.join(THEMESPATH, self.theme) self.activity._build_menu(theme_dir, self.theme_rc, language[0]) r = pygame.Rect(0, blitpos_y, 800, 500) # Add the rect to SPGoodies so that activities know where to blit. self.spgoodies.screenrect = r self.spgoodies.background = self.backgr # now we can finish the menu object self.activity._setup(self.spgoodies, self.dm, self.theme_rc['menubarbottom']) # Setup the menubar self.excludebuttons = self.theme_rc['exclude_buttons'] if self.theme_rc['level_indicator'] == 'star': usestar = True else: usestar = False if 'graph' in self.theme_rc['exclude_buttons']: usegraph = False else: usegraph = True self.menubar = MenuBar(self.menu_rect, \ self.actives_group, self.menubar_cbf,\ self.menubar_dice_cbf, self.lock, usestar, \ usegraph, volume_level=self.volume_level) self.infobutton = self.menubar.get_infobutton() if self.COPmode: self.infobutton.moveto((CORE_BUTTONS_XCOORDS[7], self.menubar.get_buttons_posy())) self.quitbutton = self.menubar.get_quitbutton() self.scoredisplay = self.menubar.get_scoredisplay() self.volumebutton = self.menubar.get_volumebutton() self.menubarbuttons = [self.infobutton, self.quitbutton, self.volumebutton] self.chartbutton = self.menubar.get_chartbutton() self.dicebuttons = self.menubar.get_dicebuttons() self.spgoodies.scoredisplay = self.scoredisplay self.spgoodies.infobutton = self.infobutton self.spgoodies.quitbutton = self.quitbutton self.spgoodies.dm = self.dm if not 'dice' in self.excludebuttons and not self.COPmode: self.dicebuttons.UseDice = True else: self.dicebuttons.UseDice = False if not 'graph' in self.excludebuttons and not self.COPmode: self.menubarbuttons.append(self.chartbutton) # disable the chartbutton self.chartbutton.enable(False) if not 'score' in self.excludebuttons and not self.COPmode: self.menubarbuttons.append(self.scoredisplay) self.actives_group.add(self.menubarbuttons) # add the current user, if it exists text = _("User: %s") % self.dm.get_username() # TODO: Do we do an andmin mode ? if self.cmd_options.adminmode: text = text + " (Adminmode)" if self.theme_rc['menubar_position'] == 'bottom': y = 500 else: y = 0 if not 'user' in self.excludebuttons: self.usernamelabel = Label(text, (CORE_BUTTONS_XCOORDS[1], y+10)) else: self.usernamelabel = None if not 'activity' in self.excludebuttons: text = _("Activity :") self.activitylabel = Label(text, (CORE_BUTTONS_XCOORDS[1], y+50)) else: self.activitylabel = None # Show the mainscreen and menubar self.clear_screen() # setup misc stuff self.clock = pygame.time.Clock() self.run_activity_loop = True self.run_event_loop = True self.run_main_loop = True self.framerate = 30 self.were_in_pre_level = False self.store_data = True if self.COPmode: self.clear_screen() self.disable_menubuttons() self.scoredisplay.UseMe = False self.enable_exit_button() self.quitbutton.display_sprite() def register_foreign_observer(self, obs): """You should register your observer that will take care of any cleanup in case of an error""" self.foreign_observers.append(obs) def call_foreign_observers(self): self.logger.warning("Calling foreign_observers to cleanup their own mess") for obs in self.foreign_observers: apply(obs) def start(self): # start menu self.activity.start() #For memoryleak debugging #h.setrelheap() self.start_main_loop() def get_mainscreen(self): return self.screen def get_current_user(self): return self.dm.get_username() ############################################################################ ## Methods for internal use def clear_screen(self): self.logger.debug("clear_screen called") # rebuild screen with the standard background x, y = self.spgoodies.screenrect.left, self.spgoodies.screenrect.top pygame.display.update(self.screen.blit(self.backgroundimage, (0, 0))) self.backgr.blit(self.screen.convert(),(0, 0) ) # reset the screens in SPGoodies so that any activities gets a proper screen. self.spgoodies.screen = self.screen self.spgoodies.background = self.backgr if self.COPmode: self.quitbutton.display_sprite() if self.activity.get_name() != 'menu': self.enable_info_button() self.infobutton.display_sprite() else: self.disable_info_button() return for b in self.menubarbuttons: b.display_sprite() if self.dicebuttons: #self.dicebuttons.next_level(self.levelcount) self.dicebuttons.show() if self.usernamelabel: self.usernamelabel.display_sprite() if self.activitylabel: self.activitylabel.display_sprite() def load_activity(self, name): # This will replace self.activity with the chosen activity self.logger.debug("load_activity called with %s" % name) self.set_framerate() try: if self.COPmode: p = os.path.join('controlpanel_lgpl', 'lib') else: p = 'lib' self.activity_module = utils.import_module(os.path.join(BASEDIR, p, name)) self.activity = self.activity_module.Activity(self.spgoodies) if self.COPmode: if self.activity.get_name() == 'menu': self.disable_info_button() else: self.enable_info_button() self.infobutton.display_sprite() except (utils.MyError, ImportError, AttributeError), info: self.logger.exception("Error importing activity %s" % name) dlg = Dialog(_("Error importing activity\n%s" % info),dialogwidth=500, \ buttons=[_("OK")], title=_('Error !')) dlg.run() self.activity = self.menu_saved self.activity.refresh_sprites() self.start_main_loop() except (utils.MyError, StandardError), info: self.logger.exception("Error constructing activity: %s" % info) dlg = Dialog(_("Error constructing activity\n%s" % info), dialogwidth=500, \ buttons=[_("OK")], title=_('Error !')) dlg.run() self.activity = self.menu_saved self.activity.refresh_sprites() self.start_main_loop() else: self.logger.debug("Loaded %s activity succesfull" % self.activity) text = _("Activity : %s") % self.activity.get_helptitle() if self.activitylabel: self.activitylabel.settext(text) if self.activity.get_name() == 'dltr': self.logger.debug("Got dltr, putting myself in DT mode") self.DTmode = True self.DTactivity = self.activity mapper = self.dm.get_mapper(self.activity.get_name()) self.DTactivity._set_up(mapper) self.hide_level_indicator() self.enable_dice(False) elif self.activity.get_name() == 'quiz_general': self.logger.debug("Got the general, putting myself in DT mode") self.DTmode = True self.DTactivity = self.activity mapper = self.dm.get_mapper(self.activity.get_name()) self.DTactivity._set_up(mapper) self.DTlevelcount = 1 else: self.enable_dice(True) self.statshash['datetime'] = datetime.datetime.now() self.statshash['activity_name'] = name self.logger.debug("Resetting all sqla sessions") self.dm.reset() self.start_main_loop() def start_start(self): self.logger.debug("Calling activity start") self.statshash['game_start_called'] = True self.show_level_indicator() self.levelcount = 1 self.store_data = True try: self.activity.start() except Exception, info: self.logger.exception("Error in %s start" % self.activity.get_name()) raise utils.MyError, info if 'graph' not in self.excludebuttons: # as were datacollectors we also add a chart button to the menubar self.chartbutton.enable(True) def display_levelstart(self, level): """Displays a 'ready 3-2-1' screen prior to starting the level. It also displays a blocking 'Start' button.""" self.logger.debug("Starting display_levelstart") if self.cmd_options.no_text or self.cmd_options.nocountdown or self.DTmode: return org_screen = pygame.display.get_surface().convert() org_backgr = self.backgr.convert() self.screen.set_clip() # disable the dice to prevent users clicking it # dim the screen sdim = utils.Dimmer(keepalive=0) sdim.dim(darken_factor=200, color_filter=(51, 10, 10)) # display text txt = _("Starting level %s") % level txt_s0 = utils.char2surf(txt, TTFSIZE + 20, fcol=GREEN, ttf=TTF, bold=True) self.screen.blit(txt_s0, ((780-txt_s0.get_width()) / 2, 100)) txt = self.activity.get_help()[1] txt_s1 = utils.char2surf(txt, TTFSIZE + 2, fcol=GREEN, ttf=TTF, bold=True) self.screen.blit(txt_s1, ((780-txt_s1.get_width()) / 2, 200)) txt = utils.txtfmt([_("Hit the 'space' key or a mousebutton to skip the countdown")], 60) txtlist = [] for line in txt: txtlist.append(utils.char2surf(line, TTFSIZE + 2, fcol=GREEN, ttf=TTF, bold=True)) y = 260 for s in txtlist: self.screen.blit(s, (40, y)) y += s.get_height() pygame.display.update() # we have a animated sprite so we need to adjust the backgr screen self.backgr.blit(self.screen, (0, 0)) # we re-init the sprite stuff as we use a different background SPInit(self.screen, self.backgr) # i is used as a counter. The loop runs at approx 30 times a second so # when i == 30 we decrease the counter. i = 0 counter = 4# used for 4-3-2-1 spr = None# will hold the sprite # local eventloop clock = pygame.time.Clock() runloop = True while runloop: # runloop is set to False by the a event or when the counter == 0 pygame.event.pump() events = pygame.event.get() for event in events: if event.type is KEYDOWN and event.key is K_SPACE or\ event.type is MOUSEBUTTONDOWN: runloop = False break if i >= 29: if spr: spr.erase_sprite() if counter == 0: runloop = False else: num_s = utils.char2surf(str(counter), 72, fcol=RED, ttf=TTF, bold=True) spr = MySprite(num_s) spr.display_sprite((350, 300)) i = 0 counter -= 1 i += 1 clock.tick(30) # restore the screens # undim the screen sdim.dim(darken_factor=255, color_filter=(0, 0, 0)) self.screen.blit(org_screen, (0, 0)) self.backgr.blit(org_backgr, (0, 0)) # reset the screens in SPGoodies so that any activities gets a proper screen. SPInit(self.screen, self.backgr) pygame.display.update() def start_next_level(self, store_db=None, nextlevel=None, levelup=False, no_question=False): """store_db is used to signal normal ending and that we should store the data""" self.logger.debug("start_next_level called with: %s, %s, %s,%s" % (store_db,nextlevel,levelup, no_question)) self.statshash['game_nextlevel_called'] = True self.clear_screen() self.screen.set_clip() if nextlevel < 1: nextlevel = 1 if nextlevel + (self.dicebuttons.get_minimal_level() - 1) > 6: nextlevel = 6 - (self.dicebuttons.get_minimal_level() - 1) self.logger.info("activity %s only has %s level, reset nextlevel to %s" % (self.activity.get_name(),\ self.dicebuttons.get_minimal_level() + 1,\ nextlevel)) if nextlevel and self.activity.get_name() != 'dltr': if levelup and (self.levelcount + self.dicebuttons.get_minimal_level() -1) < 6: if not no_question and not self.no_levelup_dlg: dlg = Dialog(_("You play very good, do you want to try the next level ?"), \ buttons=[_("No"), _("Yes")], title=_('Question ?'), dialogwidth=300) dlg.run() c = dlg.get_result()[0] else: c = _('Yes') if c == _('Yes'): self.levelcount = nextlevel else: self.levelcount = nextlevel if nextlevel and self.DTactivity and self.DTactivity.get_name() == 'dltr': self.DTlevelcount = nextlevel # are we in the data collecting bussiness ? if self.activity.get_name() != 'menu': # Here we fetch our data colletor object, we collect data per level, # so it's the best place to start datacollecting # get_mapper returns always an object, in case of anonymous mode the # object is a fake. self.mapper = self.dm.get_mapper(self.activity.get_name()) self.mapper.insert('level', self.levelcount) self.mapper.insert('start_time', utils.current_time()) else: self.mapper = self.dm.get_mapper(None) try: if self.activity.get_name() == 'menu': self.activity.next_level(self.levelcount) else: if not self.menubuttons_backup: if self.DTmode and self.DTactivity.get_name() == 'dltr': level = self.DTlevelcount + (self.dicebuttons.get_minimal_level() -1) else: level = self.levelcount if self.activity.get_name() not in ('dltr', 'quiz_general') and self.DTmode: if self.DTlevelscounter > 0: self.DTactivity.refresh_sprites() self.logger.debug("Calling %s dailytraining_next_level, level:%s,counter:%s" % \ (self.activity.get_name(), self.DTlevelcount, self.DTlevelscounter)) result = self.activity.dailytraining_next_level(self.DTlevelcount, self.mapper) self.DTlevelscounter -= 1 else: self.DTact_is_finished = True # we don't store the scores as it differs from normal act results # the DT act stores the results self.activity_game_end(store_db=False) result = True else: self.logger.debug("Calling %s next_level, level:%s" % (self.activity.get_name(), self.levelcount)) result = self.activity.next_level(self.levelcount, self.mapper) # we pass the db mapper so that the activity can store it's data if not result: if self.DTmode: self.logger.debug("End the DT") self.DTmode = False self.DTactivity = None self.logger.debug("start_activity_loop: Levels ended") #self.activity_info_dialog(self.activity.get_helplevels()) self.activity_game_end(store_db=False) else: # We display a blocking ready-start screen self.display_levelstart(self.levelcount) # set the level indicator self.dicebuttons.next_level(self.levelcount) # and call the post_next_level self.activity.post_next_level() except MainEscapeKeyException: self.activity.stop_timer() raise MainEscapeKeyException except utils.MyError, info: self.logger.error("MyError in %s next_level" % self.activity.get_name()) self.activity.stop_timer() raise utils.MyError, info except StandardError, info: self.logger.exception("StandardError in %s next_level" % self.activity.get_name()) self.activity.stop_timer() raise utils.MyError, info except Exception, info: self.logger.exception("Exception in %s next_level" % self.activity.get_name()) self.activity.stop_timer() raise utils.MyError, info def ask_exit(self): self.logger.debug("ask_exit called") if not self.cmd_options.noexitquestion: dlg = Dialog(_("Do you really want to quit ?"), fsize=20, dialogwidth=300,\ buttons=[_("Cancel"), _("OK")], title=_('Quit ?')) dlg.run() c = dlg.get_result()[0] self.activity.refresh_sprites() else: c = _("OK") if c == _("OK"): self.logger.info("User wants exit") if self.activity.get_name() != 'menu': try: self.activity_game_end(store_db=False) except: pass # any cleanup is done by atexit functions # except this one :-) self.dm._cleanup() # dim the screen sdim = utils.Dimmer(keepalive=0) sdim.dim(darken_factor=200, color_filter=(51, 10, 10)) # display text txt = utils.txtfmt([_("Stopping timers, please wait...")], 50) y = 240 for line in txt: s = utils.char2surf(line, TTFSIZE + 12, fcol=GREEN, ttf=TTF, bold=True) self.screen.blit(s, (10, y)) y += s.get_height() pygame.display.update() self.store_stats() #pygame.time.wait(1000)# just to show the text in case there are no timers raise MainEscapeKeyException # let schoolsplay.py decide what next def store_stats(self): orm, session = self.spgoodies.get_orm('stats', 'user') session.query(orm) session.add(orm(**self.statshash)) session.commit() session.close() ########################################################################### # Main menubar button callbacks. # These are called when the user hits the buttons in the lower menu bar of # screen. def menubar_cbf(self, sprite, event, data): """Callback function for the menubar buttons: quit, info, chart. Here we decide which button has called us and we call the appropriate method for further event handling.""" self.logger.debug("menubar_button_pressed: %s" % sprite.name) if hasattr(self.activity, 'stop_sound'): self.activity.stop_sound() try: if sprite.name == 'Info': self.core_info_button_pressed() sprite.mouse_hover_leave() elif sprite.name == 'Quit': sprite.mouse_hover_leave() if self.DTmode and self.DTactivity.get_name() == 'dltr': self.lock.acquire() text = _("Are sure you want to quit the dailytraining ? All the results will be lost.") dlg = Dialog(text, buttons=[_("No"), _("Yes")], title=_('Question ?'), dialogwidth=300) dlg.run() c = dlg.get_result()[0] if c == _('No'): self.lock.release() return raise utils.StopGameException #self.core_quit_button_pressed() elif sprite.name == 'Chart' and self.activity.get_name() != 'menu': self.core_chart_button_pressed() sprite.mouse_hover_leave() elif sprite.name == 'Volume': self.core_volume_button_pressed() self.volumebutton.mouse_hover_leave() except StandardError, info: self.logger.exception("System error: %s" % info) self.lock.release() self.clear_screen() self.activity.refresh_sprites() def menubar_dice_cbf(self, sprite, event, data): """Callback function for the menubar dicebutton.""" self.logger.debug("core_dice_button_pressed: %s" % data) if hasattr(self.activity, 'stop_sound'): self.activity.stop_sound() self.myspritesactivated = True if self.DTmode and self.DTactivity.get_name() != 'dltr': self.DTactivity.act_hit_levelindicator(data) self.DTlevelcount = data if data: if 1 > data > 6: data = 1 if self.were_in_pre_level: self.levelcount = data else: self.activity_level_end(nextlevel=data, score_audit=False) else: self.activity.refresh_sprites() def core_info_button_pressed(self): self.myspritesactivated = True self.lock.acquire() # Construct the help text from the activity's various get_help* methods help = self.activity.get_help() if self.activity.get_name() != 'menu' and not self.COPmode: tip = self.activity.get_helptip() if tip: help.append(_("Tip:%s") % tip[0]) help.append(self.activity.get_helplevels()) #help.append(_("This activity belongs to the category: %s") % self.activity.get_helptype()) if hasattr(self.activity, 'get_extra_info'): help.append("%s" % self.activity.get_extra_info()) buttons = [_("OK")] if hasattr(self.activity, 'get_moviepath'): if os.path.exists(self.activity.get_moviepath()): buttons.append(_("Movie")) # make sure all lines can fit the screen newlines = utils.txtfmtlines(help, 80) dlg = Dialog(newlines, dialogwidth=600, buttons=buttons, \ title= _("Information about %s") % self.activity.get_helptitle()) dlg.run() if dlg.result[0] == _("Movie"): # play movie self.logger.debug("Start videoplayer") vpl = SPVideoPlayer.Player(os.path.join(THEMESPATH, self.theme,'btp_800x600.vlt')) mv = self.activity.get_moviepath() self.logger.debug("playing %s" % mv) result = vpl.start(mv) if not result[0]: self.logger.error("Failed to start player, %s" % result[1]) self.activity.refresh_sprites() self.lock.release() return True def core_volume_button_pressed(self): self.myspritesactivated = True self.lock.acquire() dlg = Dialog('',dialogwidth=300, dialogheight=300, \ buttons=[_("Close")], title=_('Set volume level')) r = dlg.get_action_area()['action_area'] x, y = r.topleft x += 50 y += 30 va = VolumeAdjust((x, y), volume=int(self.volume_level), voice_unmute=self.spgoodies._unmute_quiz_voice) va.set_use_current_background(True)# it will use the current screen as background as we blit over a dialog va.display() dlg.run(va.get_actives()) self.volume_level = va.get_volume() self.spgoodies._unmute_quiz_voice = va.get_voice_state() if hasattr(self.activity, 'quiz_voice_changed'): self.activity.quiz_voice_changed(self.spgoodies._unmute_quiz_voice) self.logger.debug("quiz voice unmute: %s" % self.spgoodies._unmute_quiz_voice) pos = (CORE_BUTTONS_XCOORDS[7], self.menu_rect.top+8) self.volumebutton.erase_sprite() self.actives_group.remove(self.volumebutton) if self.volume_level != 0: bname = 'core_volume_button.png' hbname = 'core_volume_button_ro.png' p = os.path.join(ACTIVITYDATADIR, 'SPData', 'themes', self.theme, bname) hp = os.path.join(ACTIVITYDATADIR, 'SPData', 'themes', self.theme, hbname) self.volumebutton = TransImgButton(p, hp,pos, name='Volume') else: bname = 'core_volmute_button.png' hbname = 'core_volmute_button_ro.png' p = os.path.join(ACTIVITYDATADIR, 'SPData', 'themes', self.theme, bname) hp = os.path.join(ACTIVITYDATADIR, 'SPData', 'themes', self.theme, hbname) self.volumebutton = TransImgButton(p, hp,pos, name='Volume') self.volumebutton.connect_callback(self.menubar_cbf, MOUSEBUTTONUP, 'Volume') self.actives_group.add(self.volumebutton) self.menubarbuttons[2] = self.volumebutton self.logger.info("setting volume to %s" % self.volume_level) orm, session = self.get_orm('users', 'user') query = session.query(orm).filter_by(user_id = self.dm.get_user_id()) query.update({orm.audio:self.volume_level}, synchronize_session=False) session.commit() session.close() self.lock.release() return True # Callback for the chart button in the menubar. Passed to SPCoreButtons.ChartButton def core_chart_button_pressed(self): if not hasattr(self, 'mapper'): self.logger.warning("core_chart_button_pressed, no mapper found.") return self.myspritesactivated = True self.lock.acquire() if self.DTmode and self.DTactivity.get_name() == 'dltr': mapper = self.DTactivity.dbmapper name = self.DTactivity.get_name() else: mapper = self.mapper name = self.activity.get_name() # get data, user AND level query = mapper._get_level_data(levelnum=self.levelcount) # get the score and date data from the objects scorelist = filter(None, [(getattr(item, 'start_time'), getattr(item, 'score')) for item in query]) self.logger.debug("scorelist from SQL query: %s" % scorelist) # get the mu and sigma for this activity. norm = self.dm.get_mu_sigma(self.activity.get_name()) # apply the Z-TRANSFORMATION as described in the post: # [Schoolsplay-devel] score mathematic # See also the "z - Score (zS)" at http://cse.yeditepe.edu.tr/~eozcan/webTools/grading/stat.html prclist = utils.score2percentile(scorelist, norm[0], norm[1]) self.logger.debug("percentile list: %s" % prclist) # turn the data into a graph blitted on a SDL surface htext = _("Generated by %s version %s for the %s activity") % (self.theme, Version.version, name) s = Graph(prclist, self.levelcount, norm=norm, headertext=htext) dlg = Dialog(s, buttons=[_("OK")], title=_('Results')) dlg.run() result = dlg.get_result() if result[0] == _('Save image'): name = self.activity.get_name() user = self.dm.get_username() level = self.levelcount path = os.path.join(HOMEDIR, '%s-%s-level_%s.BMP' % (user, name, level)) pygame.image.save(s.get_surface(), path) dlg = Dialog(_("Your image is saved at:\n%s" % path),dialogwidth=500, \ buttons=[_("OK")], title=_('Information')) dlg.run() self.activity.refresh_sprites() # and release the lock again self.lock.release() ############################################################################# # SPGoodies callbacks that are passed to the activity and are used as observers # by the maincore. The activity calls one of these callbacks from within the # activity_loop. This means that when we don't set the # run_*_loop to False we will return back to the activity_loop. # The whole communication between the core and the activity is based on the # observer pattern. The dbase mapper object is not part of SPGoodies but is passed # in the activity.start method. def disable_menubuttons(self): """Activity wants to disable the menu buttons. We enable the buttons when the activity ends.""" self.logger.debug("disabled menubar buttons") self.menubuttons_backup = self.actives_group.sprites() self.enable_dice(False) for s in self.menubuttons_backup: s.erase_sprite() self.actives_group.empty() def enable_menubuttons(self): """Activity wants to enable the menu buttons again.""" if self.menubuttons_backup and not self.COPmode: self.logger.debug("enable menubar buttons") for s in self.menubuttons_backup: s.display_sprite() self.actives_group.add(self.menubuttons_backup) self.menubuttons_backup = [] def disable_level_indicator(self): self.dicebuttons.enable(False) def enable_level_indicator(self): self.dicebuttons.enable(True) def disable_exit_button(self): self.actives_group.remove(self.quitbutton) def enable_exit_button(self): self.actives_group.add(self.quitbutton) def disable_score_button(self): self.actives_group.remove(self.scoredisplay) def enable_score_button(self): self.actives_group.add(self.scoredisplay) def hide_level_indicator(self): self.dicebuttons.erase() def show_level_indicator(self): self.dicebuttons.show() def disable_info_button(self): self.actives_group.remove(self.infobutton) def enable_info_button(self): self.actives_group.add(self.infobutton) def get_orm(self, tname, dbase): self.logger.debug("get_orm called with %s, %s" % (tname, dbase)) return self.dm.get_orm(tname, dbase) def activity_pre_level_end(self): """The pre_level is ended. The core will call next_level on the activity. """ self.logger.debug("activity_pre_level_end called, stopping eventloop") self.run_event_loop = False def activity_level_end(self, store_db=None, nextlevel=1, levelup=False, no_question=False, score_audit=True): """The level is ended. The core will call next_level on the activity. @store is used by the activity to signal a normal level end.""" self.logger.debug("activity_level_end called with: %s,%s,%s,%s" % \ (store_db, nextlevel, levelup, no_question)) # reset any clipping self.screen.set_clip() sc = False if hasattr(self,'mapper') and str(self.mapper) != "BogusMapper" and self.activity.get_name() != 'quiz_general': self.logger.debug("store dbase data for %s" % self.activity.get_name()) self.mapper.insert('end_time', utils.current_time()) # calculate the time spend inside the level and score stime = utils.calculate_time(self.mapper._get_start_time(), \ self.mapper._get_end_time()) self.mapper.insert('timespend', stime) sc = self.activity.get_score(stime) self.logger.debug('got activity score: %s' % sc) self.statshash['final_score'] = sc self.store_stats() self.mapper.insert('score', sc) if not self.DTactivity and score_audit: if sc < 5.0: self.logger.debug('score < 5.0 or None, set levelup to false') if nextlevel > 1: self.logger.debug('decrease nextlevel value with one') nextlevel -= 1 if nextlevel < 1: nextlevel = 1 levelup = False elif 5 < sc < 7: self.logger.debug('set levelup to false') levelup = False else: if nextlevel < 6 and levelup: self.logger.debug("Increase nextlevel with one") nextlevel += 1 self.logger.debug("activity_level_end final values: %s,%s,%s,%s" % \ (store_db, nextlevel, levelup, no_question)) if store_db and sc and sc <= 10:# If we don't get a score we store nothing. # You MUST call commit to write the contents of the mapper to disk. self.mapper.commit() else: self.logger.debug("not storing or score > 10, nothing committed to dbase") self.mapper.close() if self.DTmode: self.DTactivity.act_next_level_stopped(sc) # we try to stop any timers or execounter, just in case try: self.activity.stop_timer() except: pass try: self.execounter.erase() except Exception: pass # add a little pause between levels. if not self.cmd_options.no_level_pause: p = os.path.dirname(self.core_rc_path) if self.core_rc.has_key('level_change_sound') and self.core_rc['level_change_sound']: snd = utils.load_music(os.path.join(p, self.core_rc['level_change_sound'])) snd.play() if self.core_rc.has_key('level_change_image') and self.core_rc['level_change_image']: img = utils.load_image(os.path.join(p, self.core_rc['level_change_image'])) self.screen.blit(img, (275, 200)) pygame.display.update() if not self.core_rc.has_key('level_change_pause'): pause = 0 else: pause = int(self.core_rc['level_change_pause']) if pause: pygame.time.wait(pause*1000) self.clear_screen() self.start_next_level(store_db=store_db, nextlevel=nextlevel, levelup=levelup, no_question=no_question) def activity_game_end(self, store_db=True): """Tthe game is ended. The core will start the menu, delete the activity and cleans the tmp dir. @store is used by the activity to signal a normal level end.""" self.logger.debug("activity_game_end called") self.statshash['game_end_called'] = True self.store_stats() try: self.lock.release()# release any locks that were set prior to this except Exception, info: #print info pass try: self.chart_but.erase() except Exception, info: #print info pass try: self.activity.stop_timer() except Exception, info: #print info pass try: self.activity.stop() except Exception,info: #print info pass try: self.execounter.erase() except Exception, info: #print info pass self.levelcount = 1 # reset framerate self.set_framerate() # datacollecting if not self.activity.get_name() == 'menu' and store_db and hasattr(self, 'mapper'): self.logger.debug("commiting data to dbase") self.mapper.commit()# write any sql stuff to disk else: self.logger.debug("Not commiting data to dbase") # check if we are the menu, if so we in deep shit and theres a big problem # in the menu if self.activity and self.activity.get_name() == 'menu': self.logger.critical("I'm the menu, I shouldn't be here, bail out") self.logger.exception("Check the logs, there's a problem in the menu") sys.exit(1) # # It seems that Python doesn't free all the memory like expected. # # we must delete the activity to prevent memoryleak. # # explicitly set the ref count to 0 for the activity # del self.activity # # And tell the garbage collector to free the memory # gc.collect() self.dicebuttons.enable(False) if self.DTmode and self.DTact_is_finished: self.DTactivity.act_stopped(self.activity) self.DTactivity.dt_restarting() self.logger.debug("Restarting DT") self.activity = self.DTactivity self.DTact_is_finished = None else: # Now we can start the menu self.logger.debug("Restarting menu") self.activity = self.menu_saved self.DTactivity = None self.DTmode = None self.set_dice_minimal_level(1) self.levelcount = 1 if os.path.exists(os.path.join(TEMPDIR, 'previous_screenshot.jpeg')): os.remove(os.path.join(TEMPDIR, 'previous_screenshot.jpeg')) text = _("Current activity : %s") % self.activity.get_helptitle() if self.activitylabel: self.activitylabel.settext(text) self.activitylabel.display_sprite() self.run_main_loop = True #self.clear_screen() self.start_main_loop() def activity_info_dialog(self, text): self.logger.debug("activity_info_dialog called") dlg = Dialog(text,buttons=[_('OK')], title=_('Information'), dialogwidth=300) dlg.run() if hasattr(self, 'activity'): self.activity.refresh_sprites() def display_execounter(self, total): self.logger.debug("display_execounter called") self.execounter = ExeCounter((CORE_BUTTONS_XCOORDS[5], 8), total) return self.execounter # Creates a virtual keyboard gui to be used when running in kioskmode def get_virtkb(self): """return a virtual keyboard object. As this takes some time to create you should not destroy it but calls it's hide method to hide it. """ # do we already have a kb? if self.vtkb: return self.vtkb # are we in kioskmode? if not self.cmd_options.kioskmode: return None # setup a new vt kb pos = (250, 480) fsize = 22 vkb = VirtualKeyboard(self.screen, fsize, pos) self.vtkb = vkb return self.vtkb def set_framerate(self, rate=30): """Used by activities to set a lower framerate. Only use this if you know why you want to alter the framerate. The core resets the framerate to 30 fr/min when loading a activity. """ self.logger.debug("set_framerate called with rate %s" % rate) if rate > 30: rate = 30 self.logger.critical("framerate set to %s, which is not allowed as it could run the CPU to 100%" % rate) self.framerate = rate def enable_dice(self, enable=True): if self.menubuttons_backup or self.COPmode or self.DTmode and self.DTactivity.get_name() == 'dltr': self.logger.debug("menubuttons disabled or we in COPmode, not enabling dice") return self.logger.debug("enable_dice called with: %s" % enable) self.dicebuttons.enable(enable) def set_dice_minimal_level(self, level): self.dicebuttons.set_minimal_level(level) # Added to the spgoodies for the menu and dltr activity def _menu_activity_userchoice(self, activity, level=None, cycles=None): self.logger.debug("menu_activity_userchoice called with act:%s, level:%s, cycles:%s"\ % (activity, level, cycles)) if self.DTmode: self.DTlevelcount = level self.DTlevelscounter = cycles else: self.menu_saved = self.activity self.load_activity(activity) ############################################################################ # Here we start the loop. This loop will call activity.start and the calls # the activity eventloop. # # The way to get out of the start_main_loop is when the user hits the escape # key which will raise an exception that we catch in start_main_loop. # We will ask to really quit or not, if not we don't break but call the # activity_loop again. The hitting of the quit button works the same as # the escape key. # # The other way to get out of activity_loop is when the activity level is ended # then the activity calls the callback: activity_level_end (see above) # The activity is passed a class object called SPGoodies which holds a number # of 'observer' methods which calls methods in the core. So when we talk about # the activity that calls callbacks, we mean SPGoodies observers. # This callback will determine what's next, but in fact were now out of the # start_main_loop. If there are more levels the activity_level_end method # will call the activity_loop again. # # Finally we can break out when the activity is ended because all levels are done. # Then the activity will call the callback: activity_game_end (see above) # This callback will call activity.cleanup() to force any cleanup by the activity # and delete the activity. Then it will restart the menu and call the start_main_loop # which will run the menu again. # # In short: # The menu is constructed and start_main_loop is called. # Menu is started and the activity_loop is called which will loop the menu loop # until the user hits a button. # Then the menu will call SPGoodies.menu_activity_userchoice which will end # the menu and start the choosen activity. # Then the start_main_loop is called by menu_activity_userchoice and the # activity is started and the activity_loop is called. This will loop until # the activity calls one of the SPGoodies callbacks which will jump out the loop # and determine what's next. def start_main_loop(self): error = False store = True # we only break this loop on SP quit or escape key # The menu activity starts this also from _menu_activity_userchoice while self.run_main_loop: if self.activity.get_name() != 'menu': self.logger.debug("Start activity start") try: self.start_start() except (utils.MyError, utils.StopGameException), info: self.logger.error("%s" % info) self.run_event_loop = False self.run_activity_loop = False self.run_main_loop = False self.run_activity_loop = True try: self.logger.debug("Start activity pre_level_loop") self.start_pre_level_loop() except EscapeKeyException: # user hits escape self.logger.info("User hits escape") self.ask_exit()# if this returns the user said no. self.store_data = False except utils.StopGameException: self.logger.debug("User hits quit menubutton") self.run_event_loop = False self.run_activity_loop = False self.run_main_loop = False self.store_data = False except utils.MyError, info: # trouble in paradise self.logger.error("start_main_loop: MyError, %s" % info) self.run_event_loop = False self.run_activity_loop = False self.run_main_loop = False error = True self.store_data = False except StandardError, info: # even more trouble in paradise self.logger.exception("start_main_loop: StandardError, %s, %s" % (self.activity.get_name(), info)) self.run_event_loop = False self.run_main_loop = False error = True self.store_data = False except KeyboardInterrupt: try: utils.load_music(os.path.join(CORESOUNDSDIR, 'hal.ogg')).play() pygame.time.wait(10000) except: pass self.logger.exception("KeyboardInterrupt stopping all threads") try: self.activity.stop_timer() except: pass self.logger.warning("Raising SystemExit to quit") raise SystemExit self.logger.debug("Break out of start_main_loop") if self.activity.get_name() != 'menu' or error: self.activity_game_end(store_db=self.store_data) else: self.ask_exit()# if this returns the user said no self.logger.debug("Restarting menu") self.activity.start() text = _("Current activity : %s") % self.activity.get_helptitle() if self.activitylabel: self.activitylabel.settext(text) self.activitylabel.display_sprite() self.run_main_loop = True self.start_main_loop() def start_pre_level_loop(self): # Start the pre_level method once and calls the eventloop. self.were_in_pre_level = False self.were_in_pre_level = True if self.activity.get_name() not in ('dltr', 'quiz_general') and self.DTmode: if not self.menubuttons_backup: self.dicebuttons.next_level(self.DTlevelcount) self.logger.debug("Calling dailytraining_pre_level with level: %s" % (self.DTlevelcount)) self.run_event_loop = self.activity.dailytraining_pre_level(self.DTlevelcount) else: if not self.menubuttons_backup: self.dicebuttons.next_level(self.levelcount) self.logger.debug("Calling pre_level with level: %s" % (self.levelcount+1)) self.run_event_loop = self.activity.pre_level(self.levelcount + 1) # enter activity level eventloop if run_event_loop == True if self.run_event_loop: self.logger.debug("Enter pre_level eventloop") self._main_loop() self.logger.debug("run_event_loop done") self.were_in_pre_level = False self.run_activity_loop = True self.run_event_loop = False self.start_activity_loop() def start_activity_loop(self): # start stepping throught the activity levels while self.run_activity_loop: try: self.logger.debug("Start next_level") if self.DTmode and self.DTactivity.get_name() in ('dltr', 'quiz_general'): levelcount = self.DTlevelcount else: levelcount = self.levelcount self.start_next_level(store_db=True, nextlevel=levelcount) except utils.MyError, info: self.logger.error("Exception raised in the activity %s: %s" % (self.activity.get_name(), info)) if self.activity.get_name() == 'menu': self.logger.error('Exception occurred in the menu, quiting') raise utils.SPError self.run_event_loop = False self.run_activity_loop = False self.run_main_loop = False self.store_data = False #self.activity_game_end() # block events from entering the queue. # Pro: cpu usage drops dramaticly. # Con: gui can't show fancy color changes in the widgets as the # mouse passes over them. # if self.activity.get_name() == 'menu': # # we need mousemotion for the tooltips # pygame.event.set_allowed([KEYDOWN, MOUSEBUTTONDOWN, MOUSEMOTION]) # else: # # and here we block mousemotion to conserve cpu usage # pygame.event.set_blocked(MOUSEMOTION) else: self.run_event_loop = True # enter activity level eventloop self.logger.debug("Enter eventloop") self._main_loop() self.logger.debug("run_event_loop done") def _main_loop(self): self.logger.debug("Starting main_loop with framerate %s" % self.framerate) pygame.event.clear() self.myspritesactivated = None while self.run_event_loop: self.clock.tick(self.framerate) pygame.event.pump() events = pygame.event.get() for event in events: if event.type is QUIT: self.run_event_loop = False raise EscapeKeyException if event.type == KEYDOWN: if event.key is K_ESCAPE or event.type is QUIT: self.run_event_loop = False raise EscapeKeyException elif event.key == K_F1 and self.logger.isEnabledFor(logging.DEBUG) and not utils.WEAREPRODUCTION: self.start_F1_screen() # Only for debugging memoryleaks #elif event.key == K_F9: # utils.memory_profile(h) self.actives_group.update(event) if self.myspritesactivated: self.myspritesactivated = None continue # Call the activity loop. try: self.activity.loop(events) # prevent 'old' events too be reprocessed. # we now fixed this is findit and quizgeneral, for now just leave it # commented out #pygame.event.clear() except utils.StopGameException, info: self.logger.debug("_main_loop, StopGameException") # stop loops self.run_event_loop = False self.run_activity_loop = False self.activity_game_end(store_db=False) except StandardError, info: self.activity.stop_timer() self.logger.exception("%s raised an unhandled exception: %s traceback follows:" % \ (self.activity.get_name(), info)) self.activity_info_dialog(_("There was an error in %s. Please check the logs and inform the developers") % self.activity.get_name()) # make sure we have enabled menubuttons self.enable_menubuttons() # stop loops self.run_event_loop = False self.run_activity_loop = False self.activity_game_end(store_db=False) #### stuff for beta testers ##################################################### def start_F1_screen(self): import SPDebugDialog org_screen = self.screen.convert() org_back = self.backgr.convert() self.lock.acquire() try: db = SPDebugDialog.Debugscreen(self.activity.get_name(), MILESTONE, self.screen) actives = SPGroup(self.screen, self.backgr) actives.add(db.get_actives()) runloop = 1 while runloop: pygame.time.wait(100) pygame.event.pump() events = pygame.event.get() for event in events: if event.type is KEYDOWN: if event.key == K_ESCAPE: runloop = 0 result = actives.update(event) if result and result[0][1] == -2: runloop = False if result and result[0][1] == -3: # git pull, restart myself raise utils.RestartMeException except utils.MyError, info: self.activity_info_dialog("There was an error: %s" % info) self.screen.blit(org_screen, (0, 0)) self.backgr.blit(org_back, (0, 0)) pygame.display.update() self.lock.release() ################################################################################# if __name__ == '__main__': utils.set_locale()# TODO: add lang argument try: mcgui = MainCoreGui((800, 600)) except SystemExit, status: if str(status) == '0': module_logger.info("clean exit") else: module_logger.info("not a clean exit") except Exception, status: module_logger.exception("unhandled exception in toplevel, traceback follows:") childsplay-3.3/SPConstants.py0000664000175000017500000001177013271013626015023 0ustar stasstas# -*- coding: utf-8 -*- # Copyright (c) 2006-2011 Stas Zykiewicz # # SPConstants.py # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Set the NoGtk constants to True if you don't want to use gtk stuff. NoGtk = True # Set this to which dbase we use. # Currently these are supported: 'sqlite' and 'mysql' WHICHDBASE = 'sqlite' # Set the default milestone for the mail tickets script MILESTONE = 'BT2.3' # DON'T CHANGE ANYTHING BELOW THIS LINE !!!! # If you want to change the paths, change SPBasePaths.py import sys import SPBasePaths import logging import os import time import shutil import pygame import glob SPCmodule_logger = logging.getLogger("childsplay.SPConstants") # module_logger.debug("Contents of os.environ: %s" % os.environ) # module_logger.debug("Contents of sys.argv %s " % sys.argv) from SPColors import * # Import keymaps as they are now in a seperate module. from SPKeyMaps import KeyMaps # Which themes do we have? SUPPORTEDTHEMES = ['default', 'childsplay', 'cognitionplay', 'seniorplay', 'braintrainer'] # Which keymaps do we have? SUPPORTEDKEYMAPS = KeyMaps.supportedmaps # The base of the schoolsplay installation, only used on win98? BASEDIR = SPBasePaths.BASEDIR # here are the activities data directories installed ACTIVITYDATADIR = SPBasePaths.SHARELIBDATADIR # gettext mo files location LOCALEDIR = SPBasePaths.LOCALEDIR # Localized soundfiles ALPHABETDIR = SPBasePaths.ALPHABETDIR WWWDIR = SPBasePaths.WWWDIR GUITHEMESPATH = os.path.join(ACTIVITYDATADIR, 'SPData', 'gui', 'themes') DEFAULTGUITHEMESPATH = os.path.join(GUITHEMESPATH, 'default') THEMESPATH = os.path.join(ACTIVITYDATADIR, 'SPData', 'themes') DEFAULTTHEMESPATH = os.path.join(THEMESPATH, 'default') CORESOUNDSDIR = os.path.join(ACTIVITYDATADIR, 'SPData', 'base', 'sounds') ACTDATADIR = os.path.join(ACTIVITYDATADIR, 'CPData') # Users sp dir HOME_DIR_NAME = '.schoolsplay.rc' # Name of the SQLite users dbase DBASE = 'sp_users.db' # name of the SQLite content dbase CONTENTDBASE = 'sp_content.db' # language LANG = 'en' LOCALE_RTL = None # Check if there's a schoolsplay dir in the home directory if sys.platform == 'win32': PLATFORM = 'win32' try: HOMEDIR = os.path.join(os.environ['HOMEDRIVE'], os.environ['HOMEPATH'], HOME_DIR_NAME) except: # for win 98 ?? HOMEDIR = os.path.join(BASEDIR, HOME_DIR_NAME) if not os.path.exists(HOMEDIR): os.makedirs(HOMEDIR) else: PLATFORM = 'All your platform are belong to us' if os.path.exists('/data/userdata'): # BTP production machine HOMEDIR = os.path.join('/data/userdata', HOME_DIR_NAME) else: try: HOMEDIR = os.path.join(os.environ['HOME'], HOME_DIR_NAME) except KeyError, info: print info HOMEDIR = os.path.abspath(sys.path[0]) # Create a schoolsplay directory and subdirectories. START_POSTPULL = 1 if not os.path.exists(HOMEDIR): os.makedirs(HOMEDIR) ppl = ["%s\n" % f for f in glob.glob(os.path.join(BASEDIR, 'post_pull', '*.sh'))] ppl.sort() START_POSTPULL = len(ppl) f = open(os.path.join(HOMEDIR, 'post_pull'), 'w') f.writelines(ppl) f.close() PSYCOPATH = os.path.join(HOMEDIR, 'schoolsplay_psyco.log') DBASEPATH = os.path.join(HOMEDIR, DBASE) TEMPDIR = os.path.join(HOMEDIR, 'tmp') if os.path.exists(TEMPDIR): shutil.rmtree(TEMPDIR) os.makedirs(TEMPDIR) os.chmod(TEMPDIR, 0777) os.makedirs(os.path.join(TEMPDIR, 'birthday')) os.chmod(os.path.join(TEMPDIR, 'birthday'), 0777) BASEPATH = os.getcwd() # lockfile path used to set a lock to prevent multiple instances of childsplay LOCKFILE = os.path.join(HOMEDIR, '.splock') HOMEIMAGES = os.path.join(HOMEDIR, 'my_images') # set font path and fontsize TTFSIZE = 19 # used for default ttf TTF = os.path.join(ACTIVITYDATADIR, 'SPData', 'base', 'DejaVuSansCondensed-Bold.ttf') TTFBOLD = os.path.join(ACTIVITYDATADIR, 'SPData', 'base', 'DejaVuSansCondensed-Bold.ttf') if os.path.exists(TTF): # default size for DejaVuSansCondensed TTFSIZE = 12 # [6, 94, 182, 270, 358, 446, 534, 622, 710] CORE_BUTTONS_XCOORDS = range(6, 800, 91) SPLC_TIMESTAMP = time.strftime("%y-%m-%d_%H-%M-%S", time.localtime()) IMAGE_EXT_PATTERN = ['*.jpg', '*.JPG', '*.jpeg', '*.png', '.*tiff', '*.gif', '*.bmp'] IMAGE_EXT = ['.jpg', '.JPG', '.jpeg', '.png', '.tiff', '.gif', '.bmp'] XML_FILES_WE_MUST_HAVE = ["SP_menu.xml"] BUTTON_FEEDBACK_TIME = 200 childsplay-3.3/SPlogCheck.py0000664000175000017500000000532513271013626014565 0ustar stasstas# -*- coding: utf-8 -*- # Copyright (c) 2010 Stas Zykiewicz # # SPlogCheck.py # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import os, re, glob from SPConstants import SPLC_TIMESTAMP, HOMEDIR FILEPATH = os.path.join(HOMEDIR, "SPErrorLog_" + SPLC_TIMESTAMP +".log") from SPLogging import LOGPATH from utils import SPError, MyError import logging SPLCmodule_logger = logging.getLogger("childsplay.SPlogCheck") SPLCmodule_logger.debug("Starting to parse SP log %s for warning messages and higher" % LOGPATH) oldfiles = glob.glob(os.path.join(HOMEDIR, "SPErrorLog_*")) oldfiles.sort() if len(oldfiles) > 20: SPLCmodule_logger.warning("Removing older error files") for i in range(20, len(oldfiles)): try: f = oldfiles.pop(0) os.remove(f) except (IOError, IndexError): SPLCmodule_logger.warning("Can't remove file %s" % f) else: SPLCmodule_logger.warning("removed %s" % f) # Which messages to look for pattern = re.compile("ERROR|CRITICAL") lines = [] try: f = open(LOGPATH, 'r') #f = open('/home/stas/.schoolsplay.rc/test.log', 'r') lines = f.readlines() except IOError: SPLCmodule_logger.warning("Can't find the SP logfile ?") SPLCmodule_logger.warning("Start schoolsplay with minimal loglevel info to get a logfile.") SPLCmodule_logger.warning("Stopping the log parsing.") if not lines: SPLCmodule_logger.warning("The logfile %s hasn't any content ?" % LOGPATH) SPLCmodule_logger.warning("Stopping the log parsing.") lines =[] notifycaller = False for line in lines: if re.search(pattern, line): SPLCmodule_logger.warning("Found error messages in the log file, please contact the developers") SPLCmodule_logger.warning("Saving the SP log to %s" % FILEPATH) f = open(FILEPATH, 'w') f.writelines(lines) f.close() notifycaller = True break if notifycaller: raise MyError, _("Found error messages in the log file, please contact the developers.") childsplay-3.3/Version.py0000664000175000017500000000006613271013626014225 0ustar stasstas#version stuff # seniorplay version version = '3.3' childsplay-3.3/BorgSingleton.py0000644000175000017500000000132213271013626015346 0ustar stasstas""" Borg and more than one module, Jan Wender, 2001/10/11 If you want to use the Borg pattern from more than one module, it works as follows: Extract the Borg Pattern into a module and a class of its own: borg.py: Let your class in a separate module inherit from Borg and call Borg's initializer in your __init__: import BorgSingleton class Test(BorgSingleton.Borg): def __init__(self): BorgSingleton.Borg.__init__(self) Although sounding like a swedish chef, it works now. The state is shared across all modules using the Test class. """ class Borg: __shared_state = {} def __init__(self): self.__dict__ = self.__shared_state # and whatever else you want in your class -- that's all! childsplay-3.3/SPMoviePlayer.py0000664000175000017500000001256413271013626015305 0ustar stasstas# -*- coding: utf-8 -*- # Copyright (c) 2010 Stas Zykiewicz # # SPMoviePlayer.py # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import pygame from pygame.constants import * from SPWidgets import Button, Label import logging from SPColors import * from SPSpriteUtils import SPSprite class MoviePlayer: def __init__(self, file, actives, rect, observer, hidebuttons=False): """rect must be a pygame.Rect indicating the position and screen size the player can use for the movie and buttons. TODO: add more info""" self.logger = logging.getLogger('schoolsplay.SPMoviePlayer.MoviePlayer') self.maxW = rect.width butH = 50 self.maxH = rect.height - butH # leave room for buttons self.observer = observer self.posX, self.posY = rect.topleft self.actives = actives self.file = file self._movie = pygame.movie.Movie(file) w, h = self._movie.get_size() w = min(int(w * 1.3 + 0.5), self.maxW) h = min(int(h * 1.3 + 0.5), self.maxH) self._surf = pygame.Surface((w, h)) pygame.draw.rect(self._surf, GREY, self._surf.get_rect(), 4) self._movie.set_display(self._surf, pygame.Rect(4, 4, w-8, h-8)) self.butlist = [] # TODO: these coords are hardcoded and depend on a certain surf size. # make it dynamic y = self.posY + self.maxH +10 butXpos = (self.posX + 60, self.posX + 170, self.posX + 340, self.posX + 510) # TODO: We should use images iso text but = Button('Quit', (butXpos[0], y), padding=6) but.connect_callback(self._on_quit_but_cbf, MOUSEBUTTONDOWN) self.butlist.append(but) but = Button('Play movie', (butXpos[1], y), padding=6) but.connect_callback(self._on_play_movie_but_cbf, MOUSEBUTTONDOWN) self.butlist.append(but) but = Button('Pause movie', (butXpos[2], y), padding=6) but.connect_callback(self._on_pause_movie_but_cbf, MOUSEBUTTONDOWN) self.butlist.append(but) if not hidebuttons: self.show_buttons() def _on_quit_but_cbf(self, *args): self.logger.debug('on_quit_but_cbf called') self._stop() self._surf.fill(BLACK) self.observer('stop') def _on_play_movie_but_cbf(self, *args): self.logger.debug('_on_play_movie_but_cbf called') if not self._movie.get_busy(): self._pause() def _on_pause_movie_but_cbf(self, *args): self.logger.debug('_on_pause_movie_but_cbf called') self._pause() def _stop(self): if self._movie.get_busy(): self._movie.stop() pygame.mixer.init() def _pause(self): self._movie.pause() def start(self): pygame.mixer.quit() self._movie.set_volume(1.0) self._movie.play() def stop(self): self._on_quit_but_cbf() def hide_buttons(self): self.actives.remove(self.butlist) for s in self.butlist: s.erase_sprite() def show_buttons(self): self.actives.add(self.butlist) for s in self.butlist: s.display_sprite() def get_movie_surface(self): return self._surf if __name__ == '__main__': import __builtin__ __builtin__.__dict__['_'] = lambda x:x import SPLogging SPLogging.set_level('debug') SPLogging.start() from SPWidgets import Init import pygame from pygame.constants import * pygame.init() from SPSpriteUtils import SPInit scr = pygame.display.set_mode((800, 600)) back = scr.convert() actives = SPInit(scr, back) Init('seniorplay') def observer(state): global runloop print "observer called with state", state if state == 'stop': runloop = 0 ####### movieplayer stuff, the rest is crap to mimic a CP environment ########## mprect = pygame.Rect(0, 80, 800, 500) mppos = mprect.topleft hidebuttons = False mp = MoviePlayer('test1.mpg', actives, mprect, observer, hidebuttons) mp.start() msurf = mp.get_movie_surface() ########################### runloop = 1 clock = pygame.time.Clock() while runloop: clock.tick(30) pygame.event.pump() events = pygame.event.get() for event in events: if event.type is KEYDOWN: if event.key == K_ESCAPE: print "escape hit, stopping loop" runloop = 0 actives.update(event) r = scr.blit(msurf, mppos) pygame.display.update(r) childsplay-3.3/SQLTables.py0000664000175000017500000003721213271013626014375 0ustar stasstas# -*- coding: utf-8 -*- # Copyright (c) 2006-2010 Stas Zykiewicz # # SQLTables.py # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Put all the tables that are used in the dbase here # ACTIVITY DEVELOPERS, BE SURE YOU UNDERSTAND WHAT YOU MUST ADD HERE TO GET YOUR # ACTIVITY UP AND RUNNING. # PLEASE CONTACT THE AUTHOR OF THIS FILE OR THE SCHOOLSPLAY MAILINGLIST FOR # ADDITIONAL INFO OR HELP. # PLEASE DON'T CHANGE ANYTHING IN THIS MODULE WITHOUT DISCUSSING IT ON THE # SCHOOLSPLAY MAILINGLIST. # THE CreateTemplate SCRIPT and Datamanager DEPENDS ON CERTAIN SYNTAX TO BE # PRESENT IN HERE. # Make sure to add a ORM class to SPORMs.py if you add new sql tables. import datetime from sqlalchemy import * import sqlalchemy.orm as sqlorm import SPORMs as ORMS def create_contentdb_orms(metadata): tables = {} for name in [k for k in ORMS.__dict__.keys() if k.startswith('game_')]: t = Table(name, metadata, autoload=True) orm = getattr(ORMS, name) orm._name = name sqlorm.mapper(orm, t) tables[name] = orm return tables class SqlTables: """Class that holds the dbase table definitions and creates the tables for the content dbase and user dbase.""" def _create_userdb_tables(self, metadata): """Called by the datamanager to setup the dbase tables. We also map the ORM classes to the dbase tables. Returns a dict with the keys set to the dbase table names and the values set to the ORM classes.""" tables = {} sqlorm.clear_mappers() for table in self.tableslist: self._appendcolumns(table) if hasattr(ORMS, table.name): orm = getattr(ORMS, table.name) orm._name = table.name sqlorm.mapper(orm, table) tables[table.name] = orm metadata.create_all() return tables def _appendcolumns(self, t): # These are the skipped Tables for default columns if t.name in ['users', 'options', 'activity_options', 'menu', 'served_content', 'group_names', 'change_pass', 'zorgenquete', 'spconf', 'users_faces', 'dt_sequence', 'stats', 'stats_session']: return # Columns added to all act tables t.append_column(Column('table_id', Integer, primary_key=True)) t.append_column(Column('user_id', Integer, nullable=False)) t.append_column(Column('timespend', Unicode(6))) t.append_column(Column('start_time', Unicode(17))) t.append_column(Column('end_time', Unicode(17))) t.append_column(Column('level', Integer)) t.append_column(Column('score', Float)) def __init__(self, metadata): # table to hold user data, mandatory for any sp dbase. # All other tables are regarded as activity tables. # Used by the core, don't change it self.users = Table('users', metadata, Column('user_id', Integer, primary_key=True), Column('login_name', Unicode(20), unique=True, nullable=False), Column('title', Unicode(20)), Column('first_name', Unicode(20)), Column('last_name', Unicode(40)), Column('birthdate', DateTime), Column('group', Integer), Column('profile', Unicode(200)), Column('passwrd', Unicode(10)), Column('activities', Unicode(250)), Column('audio', Integer, default=50), Column('dt_target', Unicode(250), default=u'default'), Column('levelup_dlg', Unicode(4), default=u'true') ) # The graph image needs two values: # average (greek: mu-value) and the standard deviation (greek: sigma-value) # mu is a integer between 1-10 and sigma is an integer between 0-100 which # stand for the percentage deviation. (Probably always 50%) self.activity_options = Table('activity_options', metadata, Column('table_id', Integer, primary_key=True), Column('activity', Unicode(20)), Column('mu', Float, default=6.5), Column('sigma', Float, default=1.63) ) # served content table used by the acts to store content they serve so that # we can make sure we don't serve the same content twice. # This is meanly intended for the quizzes as the rest of the acts don't # have much content, yet ? self.served_content = Table('served_content', metadata, Column('table_id', Integer, primary_key=True), Column('user_id', Integer, nullable=False), Column('CID', Integer, nullable=False), Column('game_theme_id', Integer, nullable=False), Column('module', Unicode(25)), Column('start_time', DATETIME(timezone=True)), Column('count_served', Integer, default=0), Column('wrong', Integer, default=0) ) # Table to convert group name to an id self.group_names = Table('group_names', metadata, Column('group_id', Integer, primary_key=True), Column('group_name', Unicode(50), unique=True, nullable=False)) self.spconf = Table('spconf', metadata, Column('table_id', Integer, primary_key=True), Column('activity_name', Unicode(50)), Column('key', Unicode(20)), Column('value', Unicode(200)), Column('theme', Unicode(20), default=u'default'), Column('comment', Unicode(200))) self.faces = Table('users_faces', metadata, Column('face_id', Integer, primary_key=True), Column('user_id', Integer), Column('shape_diff', Float), Column('temp_diff', Float), Column('pic_name', Unicode(10)), Column('datetime', DATETIME)) self.stats = Table('stats', metadata, Column('ID', Integer, primary_key=True), Column('datetime', DATETIME), Column('activity_name', Unicode(50)), Column('message', Unicode(255)), Column('game_start_called', Boolean, default=False), Column('game_nextlevel_called', Boolean, default=False), Column('game_end_called', Boolean, default=False), Column('is_cop', Boolean, default=False), Column('user_id', Integer), Column('final_score', Integer), Column('session', Integer)) self.stats_session = Table('stats_session', metadata, Column('ID', Integer, primary_key=True), Column('datetime', DATETIME)) ################ Activity tables ########################## # Every activity *must* have a sql table set. # The name of the table must be the same as the activity modules name # The following cols are mandatory for any activity table. # 'table_id' to hold the id # 'user_id' to hold the user id (set by DM) # 'timespend' to hold the time it took to complete the level. (set by core) # 'start_time' to hold the time the level is started (set by core) # 'end_time' to hold the time the level is finished (set by core) # 'level' to hold the level number (set by core) # 'score' to hold the score value. # The mandatory columns are provided by the BaseTable class, # the reporter tool expect them to be present so please extend the BaseTable # instead of creating your own. # The rest of the cols are set/used by the activity. # LEAVE THESE COMMENTS IN HERE, THE CreateTemplate SCRIPT NEEDS THEM. # @splitpoint@ self.math_test = Table('math_test', metadata) self.flashcards = Table('flashcards', metadata) self.BlockBreaker = Table('BlockBreaker', metadata) self.TicTacToe = Table('TicTacToe', metadata) self.fourrow = Table('fourrow', metadata, Column('stonesplayed', Integer), ) self.numbers_sp = Table('numbers_sp', metadata) self.test_act = Table('test_act', metadata) self.fishtank = Table('fishtank', metadata, Column('fish', Integer), Column('clearfish', Integer), ) self.ichanger = Table('ichanger', metadata, Column('wrongs', Integer), Column('extra', Integer), ) self.puzzle = Table('puzzle', metadata, Column('total_pieces', Integer), Column('wrongs', Integer), ) self.simon_sp = Table('simon_sp', metadata, Column('sounds', Integer)) self.soundmemory = Table('soundmemory', metadata, Column('sounds', Integer), Column('knownsounds', Integer), ) self.memory_sp = Table('memory_sp', metadata, Column('cards', Integer), Column('knowncards', Integer), ) self.quiz_royal = Table('quiz_royal', metadata, Column('total_questions', Integer), Column('total_wrongs', Integer), ) self.quiz_history = Table('quiz_history', metadata, Column('total_questions', Integer), Column('total_wrongs', Integer), ) self.quiz_picture = Table('quiz_picture', metadata, Column('total_questions', Integer), Column('total_wrongs', Integer), ) self.quiz_math = Table('quiz_math', metadata, Column('total_questions', Integer), Column('total_wrongs', Integer), ) self.quiz_text = Table('quiz_text', metadata, Column('total_questions', Integer), Column('total_wrongs', Integer), ) self.quiz = Table('quiz', metadata, Column('total_questions', Integer), Column('total_wrongs', Integer), ) self.quiz_general = Table('quiz_general', metadata, Column('total_questions', Integer), Column('total_wrongs', Integer), ) self.quiz_melody = Table('quiz_melody', metadata, Column('total_questions', Integer), Column('total_wrongs', Integer), ) self.quiz_sayings = Table('quiz_sayings', metadata, Column('total_questions', Integer), Column('total_wrongs', Integer), ) self.findit_sp = Table('findit_sp', metadata, Column('total_diffs', Integer), Column('wrongs', Integer), ) self.electro_sp = Table('electro_sp', metadata, Column('knowncards', Integer), Column('cards', Integer)) self.video = Table('video', metadata, Column('movie', Unicode(20)), Column('answer', Integer)) self.dt_sequence = Table('dt_sequence', metadata, Column('fortune', Integer), Column('act_name', Unicode(255)), Column('group', Unicode(255)), Column('level', Integer), Column('cycles', Integer), Column('target', Unicode(255)), Column('table_id', Integer, primary_key=True), Column('order', Integer)) # TODO: This table is not finished, as soon as the specs are known we must update this self.dltr = Table('dltr', metadata, Column('activity', Unicode(20)), Column('done', Integer), Column('cycles', Integer), Column('epoch', Numeric)) ############ Setup an activity list ################################# # Now we put all the tables we have into this list. # The Datamanager uses this list to setup the dbase tables. self.tableslist = [self.users, self.activity_options, self.served_content, self.spconf, self.stats, self.stats_session, self.group_names, self.findit_sp, self.electro_sp, self.quiz_text, self.quiz_melody, self.quiz_math, self.quiz_picture, self.quiz_history, self.quiz_royal, self.quiz, self.quiz_general, self.quiz_sayings, self.memory_sp, self.simon_sp, self.puzzle, self.soundmemory, self.ichanger, self.fishtank, self.dltr, self.test_act, self.numbers_sp, self.fourrow, self.dt_sequence, self.TicTacToe, self.BlockBreaker, self.flashcards, self.math_test] if __name__ == '__main__': # test code from SPConstants import DBASEPATH import sqlalchemy as sqla engine = sqla.create_engine('sqlite:///%s' % DBASEPATH) metadata = sqla.MetaData(engine) # metadata.engine.echo = True sqltb = SqlTables(metadata) tables = sqltb._create_tables(metadata) print tables childsplay-3.3/SPBasePaths.py0000644000175000017500000000070013271013626014706 0ustar stasstas# AUTO-GENERATED MODULE, DON'T EDIT # This module holds all the paths needed for childsplay_sp. import os, sys try: import IamBinary except ImportError: print "No binary" BASEDIR = sys.path[0] os.chdir(BASEDIR) DOCDIR = 'doc/childsplay_sp' BASEDIR = os.getcwd() SHARELIBDATADIR = os.path.join(BASEDIR, 'lib') ALPHABETDIR = os.path.join(BASEDIR,'alphabet-sounds') LOCALEDIR = os.path.join(BASEDIR, 'locale') WWWDIR = 'www/backend' childsplay-3.3/SPWidgets/0000775000175000017500000000000013271013627014076 5ustar stasstaschildsplay-3.3/SPWidgets/test.py0000644000175000017500000001004513271013627015425 0ustar stasstas import sys sys.path.insert(0, '..') from base import * from buttons import * from dialogs import * from funcs import * from text import * from gtk_widgets import * import pygame from pygame.constants import * import logging from SPSpriteUtils import SPSprite, SPGroup import utils from SPConstants import * import SPLogging if __name__ == '__main__': import __builtin__ __builtin__.__dict__['_'] = lambda x:x SPLogging.set_level('debug') SPLogging.start() pygame.init() from SPSpriteUtils import SPInit def cbf(sprite, event, data=''): print 'cb called with sprite %s, event %s and data %s' % (sprite, event, data) print 'sprite name: %s' % sprite.get_name() print 'data is %s' % data def cbf_but(sprite, event, data=''): back = pygame.Surface((300,300)) back.fill(GREEN) but = Button('Dialog Button', (10, 10), padding=6) but.connect_callback(cbf, MOUSEBUTTONUP, 'Dialog Button') objects =[but] dlg = DialogWindow(back,objects) dlg.run() scr = pygame.display.set_mode((800, 600)) scr.fill(GREY90) pygame.display.flip() back = scr.convert() actives = SPInit(scr, back) Init('braintrainer') # but = Button('Button', (10, 80), padding=6) # but.connect_callback(cbf_but, MOUSEBUTTONUP, 'Button') # actives.add(but) # lbl = Label('Hit escape key to continue', (10, 130)) # r = pygame.Rect(0, 0, 500, 240) # txt = "This program is free software; you can redistribute it and/or modify it under the terms of version 3 of the GNU General Public License as published by the Free Software Foundation. A copy of this license should be included in the file GPL-3." # # tv = TextView(txt, (290, 180), r, autofit=True, border=True) # tv.display_sprite() # # va = VolumeAdjust((200, 20)) # va.display() # # pnb = PrevNextButton((150, 180), cbf) # # actives.add([but, lbl, va.get_actives(), pnb.get_actives()]) # for s in actives: # s.display_sprite() # ec = ExeCounter((600, 10), 20) # ec.display_sprite() # box = TextEntryBox((10, 100), height=10, length=500) # box.display_sprite() # actives.add(box.get_actives()) # # TI = TextEntry((10, 10), message="BT2.1") # TI.display_sprite() # actives.add(TI) # objects = [] # for i in range(30): # t = "Label %s" % i # lbl = Label(t, (0, 0)) # lbl.connect_callback(cbf, MOUSEBUTTONUP, t) # actives.add(lbl) # objects.append(lbl) # # sw = ScrollWindow((100, 100), (400, 400), objects, border=2) # actives.add(sw) # actives.add(sw.get_actives()) # rb = RadioButton(None, "test radiobutton", (100, 100), name='rb') # rb.display_sprite() # actives.add(rb) # # rb0 = RadioButton(rb, "test radiobutton", (100, 130), name='rb0') # rb0.display_sprite() # actives.add(rb0) runloop = 1 pb = ProgressBar((100,200), (300,30), steps=10) pb.display_sprite() count = 0 while runloop: if count > 5: count = 0 steps = pb.update() print steps if steps == False: runloop = False else: count += 1 pygame.time.wait(100) pygame.event.pump() events = pygame.event.get() for event in events: if event.type is KEYDOWN: if event.key == K_ESCAPE: runloop = 0 # elif event.key == K_F1: # but.enable(False) # print "button disabled" # elif event.key == K_F2: # but.enable(True) # print "button enabled" # elif event.key == K_F3: # pnb.toggle() # print "prevnext toggled" result = actives.update(event) if result and result[0][1] == -1: break # print TI.get_text() # print box.get_text() raw_input("hit any key to stop") childsplay-3.3/SPWidgets/base.py0000664000175000017500000001375313271013627015373 0ustar stasstas#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (c) 2010-2011 Stas Zykiewicz # # base.py # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. from SPSpriteUtils import SPSprite import os import types import subprocess import glob import ConfigParser from SPConstants import * import logging module_logger = logging.getLogger("childsplay.SPWidgets") WEHAVEAUMIX = False THEME = None def Init(theme): """Must be called before using anything in this class""" global THEME, WEHAVEAUMIX module_logger.debug('Init called with:%s' % theme) # theme is used by the widgets config = ConfigParser.RawConfigParser() rc = os.path.join( GUITHEMESPATH, theme, 'SPWidgets.rc') if not os.path.exists(rc): module_logger.info('theme file %s does not exists' % rc) rc = os.path.join('..', GUITHEMESPATH, theme, 'SPWidgets.rc') module_logger.info('trying one step higher, %s' % rc) if not os.path.exists(rc): module_logger.info('theme file %s does not exists, using default file' % rc) rc = os.path.join(DEFAULTGUITHEMESPATH,'SPWidgets.rc') module_logger.debug("Using rc file %s" % rc) d = {} config.read(rc) for k, v in dict(config.items('default')).items(): try: d[k] = eval(v, {'__builtins__': None}, {}) except NameError: # v is a string d[k] = v d['theme'] = theme d['themepath'] = os.path.dirname(rc) d['defaultpath'] = os.path.join( GUITHEMESPATH,'default') module_logger.debug("rc file contents: %s" % [d]) THEME = d volume_level = 50 try: cmd=subprocess.Popen("amixer get Master",shell=True,\ stdout=subprocess.PIPE,\ stderr=subprocess.PIPE) output = cmd.communicate()[0] except Exception, info: module_logger.warning("program 'amixer' not found, unable to set volume levels: %s" % info) WEHAVEAUMIX = False else: for line in output.split('\n'): if "%]" in line: volume_level = line.split("%]")[0].split("[")[1] WEHAVEAUMIX = volume_level return THEME class Widget(SPSprite): def __init__(self, image=None, name=None): global THEME, WEHAVEAUMIX if image: SPSprite.__init__(self, image, name=name) else: SPSprite.__init__(self, name=name) self._mygroups = None self._amienabled = True self.trans = False self._oldimage = None self._IamWidget = True #special property, used in the SPSprite class update method self._CanHaveInputFocus = False self.MinimalDragTreshold = 20 self._DragEnabled = False self._DropEnabled = False self.mouse_hover_leave_action = False # related to drag and drop self._prev_mouse_pos = None self.THEME = THEME self.WEHAVEAUMIX = WEHAVEAUMIX def enable(self, enable): """Set wetter the sprite can react to events. enable - True or False When enable is set to False the sprite is disconnected from the callback function as well as 'greyed-out'. When enable is True the sprite is connected again and redisplayed. """ if not enable and self._amienabled: if hasattr(self, 'mouse_hover_leave'): self.mouse_hover_leave() # TODO: find a good solution for alpha trans for trans buttons. # problem lies in the per pixel alpha the buttons are using. # if self.trans: # print "im a trans widget", self.name # self._oldimage = self.image.convert_alpha() # self.image.blit(self.trans, (0, 0)) # else: # self.image.set_alpha(80) self.image.set_alpha(80) self._mygroups = self.groups() self.remove(self._mygroups) self.erase_sprite() self.display_sprite() self._amienabled = False elif enable and not self._amienabled: if hasattr(self, 'mouse_hover_leave'): self.mouse_hover_leave() # if self.trans and self._oldimage: # self.image = self._oldimage.convert_alpha() # else: # self.image.set_alpha(255) self.image.set_alpha(255) if self._mygroups: self.add(self._mygroups) self.erase_sprite() self.display_sprite() self._amienabled = True def set_drag_enabled(self, enabled): self._DragEnabled = enabled self._org_center = self.rect.center def set_drop_enabled(self, enabled): self._DropEnabled = enabled def get_actives(self): return self def _DnDreset(self): self.moveto(self._org_pos,False) # These methods should be overridden in your derived class def start_drag_event(self, widget, mouseposition): self.logger.debug("start_drag_event: widget %s, position %s" % (widget,mouseposition)) def end_drag_event(self, widget, mouseposition): self.logger.debug("end_drag_event: widget %s, position %s" % (widget,mouseposition)) def drop_event(self, widget, mouseposition): self.logger.debug("end_drag_event: widget %s" % widget,mouseposition) childsplay-3.3/SPWidgets/__init__.py0000664000175000017500000000227713271013627016217 0ustar stasstas# -*- coding: utf-8 -*- # Copyright (c) 2010 Stas Zykiewicz # # SPWidgets.py # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. from base import * from buttons import * from dialogs import * from funcs import * from text import * from SPConstants import NoGtk if not NoGtk: from gtk_widgets import * LOCALE_RTL = utils.get_locale_local()[1] if LOCALE_RTL: ALIGN_RIGHT = True ALIGN_LEFT = False else: ALIGN_LEFT = True ALIGN_RIGHT = False class TextRectException(Exception): pass childsplay-3.3/SPWidgets/buttons.py0000664000175000017500000007703613271013627016163 0ustar stasstas#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (c) 2010-2011 Stas Zykiewicz # # buttons.py # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import utils import types import glob import pygame from pygame.constants import * from base import Widget from SPConstants import * from text import Label from funcs import get_boxes, make_button_bg_dynamic from SPSpriteUtils import SPSprite, SPGroup class RadioButton(Widget): """Radiobuttons are buttons that has two states, selected or not selected. The differences with other 'state' buttons is that these buttons are usually grouped so that only one can be selected at a time.""" def __init__(self, group, text, pos, fsize=18, padding=8, name='', **kwargs): """Radiobutton with a optional text label. group - the widget to which this button belongs. (must be None or another radiobutton) text - string to display pos - position to display the box fsize - Font size padding - space in pixels around the text name - string to indicate this object kwargs - bgcol, fgcol """ self.box_pos = pos self.image_pos = (pos[0]+1, pos[1]+1) self.name = name if not group: self._rb_group = [self] else: self._rb_group = group._rb_group + [self] for rb in self._rb_group: rb._rb_group = self._rb_group self._rb_selected = False box = pygame.Surface((18, 18)) box.fill(WHITE) rect = box.get_rect() lbl = Label(text, (pos[0] + 10 + rect.width, pos[1]), fsize=18, transparent=True, \ fgcol=WHITE, bold=True) lbl.display_sprite() pygame.draw.line(box, GREY30, (0, 0), (18, 0), 1) pygame.draw.line(box, GREY30, (0, 0), (0, 18), 1) pygame.draw.line(box, GREY30, (17, 0), (17, 17), 1) pygame.draw.line(box, GREY30, (1, 17), (17, 17), 1) self.box = box.convert() Widget.__init__(self, box, name=name) self.selected_image = utils.load_image(os.path.join(self.THEME['defaultpath'], 'radiobut_selected.png')) self.moveto(self.box_pos) self.connect_callback(self._cbf_on_select, MOUSEBUTTONUP) def _rb_select(self): print 'selecting:', self.name self.image = self.selected_image self.moveto(self.image_pos) self._rb_selected = True self.display_sprite() def _rb_unselect(self): print 'unselecting:', self.name self.image = self.box self.moveto(self.box_pos) self._rb_selected = False self.display_sprite() def _cbf_on_select(self, *args): print "_cbf %s: selection = %s" % (self.name, self._rb_selected) if self._rb_selected: self._rb_unselect() else: for rb in self._rb_group: if not rb is self: rb._rb_unselect() self._rb_select() def get_selected_name(self): for rb in self._rb_group: if rb._rb_selected: return rb.name return '' def get_group(self): return self._rb_group class Button(Widget): def __init__(self, txt, pos=(0, 0), fsize=18, padding=4, name='', fbold=True, **kwargs): """Button which shows a text txt - string to display pos - position to display the box fsize - Font size padding - space in pixels around the text name - string to indicate this object kwargs - bgcol, fgcol """ Widget.__init__(self) if kwargs.has_key('fgcol'): fgcol = kwargs['fgcol'] else: fgcol = self.THEME['button_fg_color'] self.kwargs = kwargs self.ImSelected = False if type(txt) in (types.StringType, types.UnicodeType): s = utils.char2surf(txt, fcol=fgcol, fsize=fsize, ttf=TTF, bold=fbold) r = s.get_rect() r.w += padding*2 r.h += padding*2 else: s = txt r = s.get_rect() r.w += padding*2 r.h += padding*2 if kwargs.has_key('maxlength') and r.w > kwargs['maxlength']: r.w = kwargs['maxlength'] self.pos = pos self.padding = padding self.name = name self.r = r self._setup(s) def _setup(self, s): if self.kwargs.has_key('bgcol'): bgcol = self.kwargs['bgcol'] else: bgcol = self.THEME['button_bg_color'] self._but, self._but_hover, self._but_selected = get_boxes(\ bgcol,\ self.THEME['button_color_hover'],\ self.r, \ self.THEME['button_selected_color']) self._but.blit(s, (self.padding, self.padding)) self._but_hover.blit(s, (self.padding, self.padding)) self._but_selected.blit(s, (self.padding, self.padding)) self.image = self._but self.rect = self.image.get_rect() self.rect.move_ip(self.pos) def mouse_hover_enter(self): if self.ImSelected: return self.hover_active = True self.image = self._but_hover self.erase_sprite() self.display_sprite() def mouse_hover_leave(self): if self.ImSelected: return self.hover_active = False self.image = self._but self.erase_sprite() self.display_sprite() def select(self): self.ImSelected = True self.erase_sprite() self.image = self._but_selected self.display_sprite() def unselect(self): self.ImSelected = False self.erase_sprite() self.image = self._but self.display_sprite() def get_button_rect(self): return self.rect class ImgButton(Button): def __init__(self, path, pos=(0, 0),padding=4, name='', **kwargs): """Button which shows an image. path - must be the path to the image file or a pygame surface pos - position to display the box rect - Rect indicating the size of the box padding - space in pixels around the text name - string to indicate this object """ if type(path) in types.StringTypes: image = utils.load_image(path) else: image = path Button.__init__(self, image, pos, None, padding=padding, name=name) class ImgTextButton(ImgButton): def __init__(self, path, text, pos=(0, 0), textpos=2, padding=4, fsize=24,\ fgcol=BLACK, name='', **kwargs): """Button which shows an image with text. path - must be the path to the image file or a pygame surface pos - position to display the box rect - Rect indicating the size of the box padding - space in pixels around the text name - string to indicate this object text - text to display. String will be split on \n. textpos - position of the text, 1 means left from the image, 2 means right from the image """ if type(path) in types.StringTypes: image = utils.load_image(path) else: image = path surflist = [] for line in text.split('\n'): if line == '': line = ' ' surflist.append(utils.char2surf(line, fcol=fgcol, fsize=fsize, ttf=TTF)) w = max([s.get_width() for s in surflist]) h = surflist[0].get_height() totalh = h * len(surflist) textsurf = pygame.Surface((w, totalh), SRCALPHA) y = 0 for s in surflist: textsurf.blit(s, (0, y)) y += h w = image.get_width() + w + padding * 2 h = max(image.get_height(), totalh) surf = pygame.Surface((w, h), SRCALPHA) image_y = (surf.get_height() - image.get_height()) / 2 text_y = (surf.get_height() - textsurf.get_height()) / 2 if textpos == 1: surf.blit(textsurf, (0, text_y)) surf.blit(image, (textsurf.get_width() + padding, image_y)) else: surf.blit(image, (0, image_y)) surf.blit(textsurf, (image.get_width() + padding, text_y)) ImgButton.__init__(self, surf, pos, padding=padding, name=name) class TransImgButton(ImgButton): def __init__(self, path, hpath, pos=(0, 0), padding=4,text='',fsize=24, fcol=BLACK, name='', **kwargs): """Button which shows an image but has a fully transparent background. When a hover event occurs the image is changed. path - must be the path to the image file or a pygame surface hpath - must be the path to the image file or a pygame surface that will be shown when a hover event occurs. pos - position to display the box rect - Rect indicating the size of the box padding - space in pixels around the text name - string to indicate this object text - when a sting is given it will be blitted over the image. fsize - fontsize. """ self.text = text self.fsize = fsize if type(path) in types.StringTypes: image = utils.load_image(path) else: image = path if hpath: if type(hpath) in types.StringTypes: self.hs = utils.load_image(hpath) else: self.hs = hpath else: self.hs = utils.grayscale_image(image.convert_alpha()) if self.text: s = utils.char2surf(text, fsize, fcol) r = image.get_rect() sr = s.get_rect() sr.center = r.center image.blit(s, sr) self.hs.blit(s, sr) ImgButton.__init__(self, image, pos, padding=padding, name=name) def _setup(self, s): self.trans = True self._but = pygame.Surface(self.r.size,SRCALPHA) #self._but.fill((0, 0, 0, 0)) self._but_hover = pygame.Surface(self.r.size, SRCALPHA) self._but.blit(s, (self.padding, self.padding)) self._but_hover.blit(self.hs, (self.padding, self.padding)) self._but_selected = self._but_hover self.image = self._but self.rect = self.image.get_rect() SPSprite.__init__(self, self.image, name=self.name) self.rect.move_ip(self.pos) class TransImgTextButton(TransImgButton): def __init__(self, path, hpath, text, pos=(0, 0), textpos=2, padding=4, fsize=24,\ fgcol=BLACK, name='', **kwargs): """Button which shows an image and text. path - must be the path to the image file. hpath - 'rollover' image path. pos - position to display the box rect - Rect indicating the size of the box padding - space in pixels around the text name - string to indicate this object text - text to display. String will be split on \n. textpos - position of the text, 1 means left from the image, 2 means right from the image """ image = utils.load_image(path) imageh = utils.load_image(hpath) surflist = [] surfhlist = [] for line in text.split('\n'): if line == '': line = ' ' surflist.append(utils.char2surf(line, fcol=fgcol, fsize=fsize, ttf=TTF)) surfhlist.append(utils.char2surf(line, fcol=GREY, fsize=fsize, ttf=TTF)) w = max([s.get_width() for s in surflist]) h = surflist[0].get_height() totalh = h * len(surflist) textsurf = pygame.Surface((w, totalh), SRCALPHA) y = 0 for s in surflist: textsurf.blit(s, (0, y)) y += h textsurf_h = pygame.Surface((w, totalh), SRCALPHA) y = 0 for s in surfhlist: textsurf_h.blit(s, (0, y)) y += h w = image.get_width() + w + padding * 2 h = max(image.get_height(), totalh) surf = pygame.Surface((w, h), SRCALPHA) hsurf = surf.copy() image_y = (surf.get_height() - image.get_height()) / 2 text_y = (surf.get_height() - textsurf.get_height()) / 2 if textpos == 1: surf.blit(textsurf, (0, text_y)) surf.blit(image, (textsurf.get_width() + padding, image_y)) hsurf.blit(textsurf_h, (0, text_y)) hsurf.blit(imageh, (textsurf_h.get_width() + padding, image_y)) else: surf.blit(image, (0, image_y)) surf.blit(textsurf, (image.get_width() + padding, text_y)) hsurf.blit(imageh, (0, image_y)) hsurf.blit(textsurf_h, (imageh.get_width() + padding, text_y)) TransImgButton.__init__(self, surf, hsurf, pos=pos, padding=padding, \ fsize=fsize, fcol=fgcol, name=name) class ButtonDynamic(Button): def __init__(self, txt, pos=(0, 0), fsize=18, bold=False, padding=8, name='', \ length=None, colorname='blue', sizename='54px', fgcol=WHITE, **kwargs): """Button which shows a text on a background with round corners. txt - string to display pos - position to display the box fsize - Font size padding - space in pixels around the text sizename - name for the kind of image set to use. supported size names are: '36px','54px','81px'. name - string to indicate this object kwargs - bgcol, fgcol """ self.colorname = colorname self.sizename = sizename self.padding = padding self.kwargs = kwargs Button.__init__(self, txt,pos=pos, fsize=fsize, padding=padding, name=name, fbold=bold, fgcol=fgcol,**kwargs) def _setup(self, s): self._but, self._but_hover = make_button_bg_dynamic(self.r.width + self.padding*2, \ self.sizename, \ self.colorname,\ colorname_ro='black',\ THEME=self.THEME) r = self._but.get_rect() size = r.size sr = s.get_rect() sr.center = r.center self._but.blit(s, sr) self._but_hover.blit(s, sr) self.image = self._but self.rect = self.image.get_rect() SPSprite.__init__(self, self.image, name=self.name) self.rect.move_ip(self.pos) class ImgButtonDynamic(ButtonDynamic): def __init__(self, path, pos=(0, 0),padding=4, name='', \ length=None, colorname='blue', sizename='54px', **kwargs): """Button which shows an image on a background with round corners. path - must be the path to the image file or a pygame surface pos - position to display the box rect - Rect indicating the size of the box padding - space in pixels around the text sizename - name for the kind of image set to use. supported size names are: '36px','54px','81px'. name - string to indicate this object """ if type(path) in types.StringTypes: image = utils.load_image(path) else: image = path ButtonDynamic.__init__(self, image, pos, None, padding=padding, name=name, \ length=length, colorname=colorname, sizename=sizename) class SimpleButton(Button): """Button which shows a text and returns the value given by 'data' when a MOUSEBUTTONUP event occurs. This differs from a normal Button which should be connect a function.""" def __init__(self, txt, pos=(0, 0), fsize=18, padding=4, data=True, **kwargs): """ txt - string to display pos - position to display the box fsize - Font size padding - space in pixels around the text data - Optional data to pass to the caller, defaults to True. """ Button.__init__(self, txt, pos, fsize, padding) self.connect_callback(self._cbf, MOUSEBUTTONUP) self.data = data def _cbf(self, *args): return (self.data, ) class SimpleButtonDynamic(ButtonDynamic): """Button which extends ButtonDynamic and returns the value given by 'data' when a MOUSEBUTTONUP event occurs. This differs from a normal ButtonDynamic which should be connect a function.""" def __init__(self, txt, pos=(0, 0), fsize=18, padding=4, data=True, \ length=None, colorname='blue', sizename='54px', fgcol=WHITE,**kwargs): ButtonDynamic.__init__(self, txt, pos, fsize, padding, fgcol=fgcol, \ length=length, colorname=colorname, sizename=sizename) self.connect_callback(self._cbf, MOUSEBUTTONUP) self.data = data def _cbf(self, *args): return (self.data, ) class SimpleTransImgButton(TransImgButton): """Button which extends TransImgButton and returns the value given by 'data' when a MOUSEBUTTONUP event occurs. This differs from a normal TransImgButton which should be connect a function.""" def __init__(self, path, hpath, pos=(0, 0), padding=4,text='',fsize=24, fcol=BLACK,\ data=True, **kwargs): TransImgButton.__init__(self, path, hpath, pos, padding,text,fsize, fcol) self.connect_callback(self._cbf, MOUSEBUTTONUP) self.data = data def _cbf(self, *args): return (self.data, ) class PrevNextButton: """Button that can switch between two images in a toggle like fashion. The data returnt to the callback function is also changed when the button image is changed""" def __init__(self, pos, cbf, prevname, nextname, states=['prev','next']): self.pos = pos self._cbf = cbf self.prevname = prevname self.nextname = nextname self._setup() def _setup(self): pp = self.prevname np = self.nextname self.state = self.states[0] previmg = utils.load_image(pp) self.nextimg = utils.load_image(np) self.but = ImgButton(previmg, self.pos, name='prevnext') self.previmg = self.but._but.convert_alpha()# image is now blitted on a button surface self.previmg_hover = self.but._but_hover.convert_alpha() self.current = self.previmg temp = ImgButton(self.nextimg, self.pos, name='prevnext') self.nextimg = temp._but.convert_alpha() self.nextimg_hover = temp._but_hover.convert_alpha() self.rect = self.nextimg.get_rect() self.but.connect_callback(self._cbf, MOUSEBUTTONUP, self.states[1]) def get_actives(self): return self.but def toggle(self): """When called the button switch images.""" if self.current is self.previmg: self.current = self.nextimg self.but._but = self.nextimg self.but._but_hover = self.nextimg_hover self.state = self.states[1] self.but.connect_callback(self._cbf, MOUSEBUTTONUP, self.states[1]) else: self.current = self.previmg self.but._but = self.previmg self.but._but_hover = self.previmg_hover self.state = self.states[0] self.but.connect_callback(self._cbf, MOUSEBUTTONUP, self.states[0]) self.but.mouse_hover_leave() def get_state(self): return self.state # abstract methods so that this widget acts like a regular widget def enable(self, enable): self.but.enable(enable) def display_sprite(self, pos=None): self.but.display_sprite(pos) def erase_sprite(self): self.but.erase_sprite() class TransPrevNextButton(PrevNextButton): """Transparent button that can switch between two images in a toggle like fashion. The data returnt to the callback function is also changed when the button image is changed""" def __init__(self, pos, cbf, prevname, hprevname, nextname, hnextname, states=['prev','next']): self._cbf = cbf self.pos = pos self.prevname = prevname self.hprevname = hprevname self.nextname = nextname self.hnextname = hnextname self.states = states PrevNextButton.__init__(self, pos, cbf, prevname, nextname) def _setup(self): self.state = self.states[0] pp = self.prevname hpp = self.hprevname np = self.nextname hnp = self.hnextname self.but = TransImgButton(pp, hpp, self.pos, name='prevnext') # this is needed for Widet.enable, normal enable/disable doesn't work # for per pixel alphas s = pygame.Surface(self.but._but.get_size(), SRCALPHA) s.fill((0, 0, 0, 80)) self.but.trans = s self.previmg = self.but._but.convert_alpha()# image is now blitted on a button surface self.previmg_hover = self.but._but_hover.convert_alpha() self.current = self.previmg temp = TransImgButton(np, hnp, self.pos, name='prevnext') self.nextimg = temp._but.convert_alpha() self.nextimg_hover = temp._but_hover.convert_alpha() self.rect = self.nextimg.get_rect() self.but.connect_callback(self._cbf, MOUSEBUTTONUP, self.states[1]) class ChartButton(ImgButton): def __init__(self, pos, cbf): bname = 'core_chart_button.png' p = os.path.join(self.THEMESPATH, self.THEME['self.THEME'], bname) if not os.path.exists(p): p = os.path.join(DEFAULTTHEMESPATH, bname) ImgButton.__init__(self, p, pos, name='Chart') self.connect_callback(cbf, MOUSEBUTTONUP, 'Chart') class DiceButtons(Widget): def __init__(self, pos, actives, cbf, usebutton=True): Widget.__init__(self) self.logger = logging.getLogger("childsplay.SPSpriteGui.DiceButtons") self.actives = actives self.theme = self.THEME['theme'] self.minimallevel = 1 self.maxlevels = 6 self._isenabled = True self._setup(self.theme, pos, actives, cbf, usebutton=True) self.showme = True def _setup(self, THEME, pos, actives, cbf, usebutton=True): bname = 'dice-1.png' p = os.path.join(self.THEMESPATH, self.theme, bname) if not os.path.exists(p): p = DEFAULTTHEMESPATH else: p = os.path.join(self.THEMESPATH, self.theme) dicelist = glob.glob(os.path.join(p, 'dice*.png')) self._butdict = {} self._current_but = None self.UseDice = usebutton count = 1 try: dicelist.sort() for diceimg in dicelist: but = ImgButton(diceimg, pos, name='Dice') but.connect_callback(cbf, MOUSEBUTTONUP, count) self._butdict[count] = but count += 1 except StandardError, info: self.logger.exception("Can't load dice images for buttons: %s" % info) self.logger.error('Disable the dice') self._current_but = self._butdict[1] self.UseDice = False def isenabled(self): return self._isenabled def set_minimal_level(self, level): self.logger.debug("Minimallevel set to %s" % level) self.minimallevel = level self.next_level(1) def get_minimal_level(self): return self.minimallevel def next_level(self, level): self.logger.debug("level %s called" % level) if level == 0: self.logger.debug("level called with 0, set it to 1") level = 1 # if not self.UseDice: # self.logger.debug("self.theme doesn't use dice") # return if self._current_but: self._current_but.erase_sprite() self.actives.remove(self._current_but) level = min(self.maxlevels, level + self.minimallevel - 1) self._current_but = self._butdict[level] self.actives.add(self._current_but) if self._isenabled: self.actives.add(self._current_but) self._current_but.enable(True) self.show() def enable(self, enable): self.logger.debug("enable called with: %s" % enable) if not self.UseDice: self.logger.debug("self.theme doesn't use dice") return self._current_but.enable(enable) self._isenabled = enable def erase(self): self.logger.debug("erase called") if not self.UseDice: self.logger.debug("self.theme doesn't use dice") return self._current_but.erase_sprite() self.showme = False def show(self): # if not self._isenabled: # return self.logger.debug("display called") if not self.UseDice: self.logger.debug("self.theme doesn't use dice") return self._current_but.display_sprite() self.showme = True class StarButton(DiceButtons): """Special level indicator for the level indicator used by the braintrainer version. This uses a special dialog, SPWidgets.StarButtonsDialog. It derived from the DiceButtons class so that the changes to the core are minimal.""" def __init__(self, pos, actives, cbf, lock, usebutton=True, THEME='seniorplay'): self.maxlevels = 6 self.cbf = cbf self._current_but = None self.UseDice = usebutton self.minimallevel = 1 self.lock = lock DiceButtons.__init__(self, pos, actives, cbf, usebutton=True) self.logger = logging.getLogger("childsplay.SPSpriteGui.StarButton") def _setup(self, THEME, pos, actives, cbf, usebutton=True): self.imgstar0 = utils.load_image(os.path.join(THEMESPATH, self.theme,'star0.png')) self.imgstar1 = utils.load_image(os.path.join(THEMESPATH, self.theme,'star1.png')) self.rectstar = self.imgstar0.get_rect() #self.image = pygame.Surface((self.rectstar.w * self.maxlevels, self.rectstar.h)) #self.image.fill(self.THEME['starbutton_bg_color']) self.image = pygame.Surface((self.rectstar.w * self.maxlevels, self.rectstar.h), SRCALPHA) self.image.fill((0, 0, 0, 0)) self.pos = pos self._set_level(1) def next_level(self, level): self.logger.debug("level %s called" % level) if level == 0: self.logger.debug("level called with 0, set it to 1") level = 1 if not self.UseDice : self.logger.debug("THEME doesn't use dice") return self._set_level(level) def _start_dlg(self,sprite, event, data): self.lock.acquire() sbd = StarButtonsDialog(self.maxlevels, self.minimallevel) sbd.set_level(data[0]) sbd.run() result = sbd.get_result()[0] if result: self._set_level(result- (self.minimallevel - 1)) self.cbf(sprite, event, result - (self.minimallevel - 1)) else: self.cbf(sprite, event, result) self.lock.release() def _set_level(self, level): self.logger.debug("_set_level called with: %s" % level) if self._current_but: self.actives.remove(self._current_but) x = 0 level = min(self.maxlevels, level + self.minimallevel-1) if level < self.minimallevel: level = self.minimallevel for i in range(0, level): self.image.blit(self.imgstar1, (x, 0)) x += self.rectstar.w for i in range(level, self.maxlevels): self.image.blit(self.imgstar0, (x, 0)) x += self.rectstar.w self._current_but = TransImgButton(self.image, None, self.pos, name='Star') if self._isenabled: self._current_but.connect_callback(self._start_dlg, MOUSEBUTTONUP, level) self.actives.add(self._current_but) self.show() class StarButtonsDialog(Widget): """Special dialog with a level indicator used by the braintrainer version. This is intended to be controlled by the SPSpriteGui.StarButtons object""" def __init__(self, maxlevels, start_level): Widget.__init__(self) self.theme = self.THEME['theme'] self.runloop = True self.maxlevels = maxlevels self.start_level = start_level self.starlist =[] self.imgstar0 = utils.load_image(os.path.join(THEMESPATH, self.theme,'star0_b.png')) self.imgstar1 = utils.load_image(os.path.join(THEMESPATH, self.theme,'star1_b.png')) self.actives = SPGroup(self.screen, self.backgr) self.actives.set_onematch(True) self.scrclip = self.screen.get_clip() self.screen.set_clip((0, 0, 800, 600)) self.dim = utils.Dimmer() self.dim.dim(darken_factor=self.THEME['starbuttonsdialog_darkenfactor'], color_filter=self.THEME['starbuttonsdialog_dim_color']) x = 40 y = 200 for i in range(self.maxlevels): b = SPSprite(self.imgstar0) b.moveto((x, y), hide=True) b.connect_callback(self.cbf, MOUSEBUTTONUP, i+1) self.starlist.append(b) x += self.imgstar0.get_width() # set first star to active self.starlist[0].image = self.imgstar1 self.actives.add(self.starlist) self.buttons_list = [] x = 100 y = 400 for buttxt in [_("Cancel"), _("OK")]: b = Button(buttxt, (x, y), fsize=self.THEME['starbuttonsdialog_fsize'], name=buttxt) b.connect_callback(self.but_cbf, MOUSEBUTTONUP, buttxt) self.actives.add(b) self.buttons_list.append(b)# keep the users order for showing (see below) x += 300 def cbf(self, widget, event, data): self.result = data self.set_level(data[0]) def but_cbf(self, widget, event, data): if data[0] == _("Cancel"): self.result = [None] self.runloop = False def get_result(self): if not self.result: return [None] return self.result def run(self): self.result = None for b in self.actives: b.display_sprite() for b in self.buttons_list: b.display_sprite() clock = pygame.time.Clock() while self.runloop: clock.tick(30) pygame.event.pump() events = pygame.event.get() for event in events: if event.type is KEYDOWN and event.key is K_ESCAPE: self.runloop = False else: self.actives.update(event) self.dim.undim() self.screen.set_clip(self.scrclip) def set_level(self, level): if level < self.start_level: return for i in range(0, level): self.starlist[i].image = self.imgstar1 self.starlist[i].display_sprite() for i in range(level, self.maxlevels): self.starlist[i].image = self.imgstar0 self.starlist[i].display_sprite() childsplay-3.3/SPWidgets/funcs.py0000664000175000017500000003007713271013627015575 0ustar stasstas#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (c) 2010-2011 Stas Zykiewicz # # funcs.py # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import os if __name__ == '__main__': import sys sys.path.insert(0,'..') import subprocess import utils import pygame from pygame.constants import * from SPConstants import TTF, NoGtk def detect_keyboard(): process = subprocess.Popen(['lsusb -v | grep "Keyboard"'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) txt = list(process.communicate()) for line in txt[0].split('/n'): if "Keyboard" in line or "keyboard" in line: return True return False def make_button_bg_dynamic(width, sizename, colorname, colorname_ro='black', THEME={}): """width - integer for the total length of the button images. sizename - name for the kind of image set to use. supported size names are: '36px','54px','81px'. colorname - name for the color to use. colorname_ro - name for the 'rollover' color to use. Supported colornames are: 'black', 'blue', 'green'. When a name isn't found a Exception is raised.""" try: left = utils.load_image(os.path.join(THEME['themepath'], "%s_%s_%s.png" % (sizename, 'left', colorname))) right = utils.load_image(os.path.join(THEME['themepath'], "%s_%s_%s.png" % (sizename, 'right', colorname))) center = utils.load_image(os.path.join(THEME['themepath'], "%s_%s_%s.png" % (sizename, 'center', colorname))) hleft = utils.load_image(os.path.join(THEME['themepath'], "%s_%s_%s.png" % (sizename, 'left', colorname_ro))) hright = utils.load_image(os.path.join(THEME['themepath'], "%s_%s_%s.png" % (sizename, 'right', colorname_ro))) hcenter = utils.load_image(os.path.join(THEME['themepath'], "%s_%s_%s.png" % (sizename, 'center', colorname_ro))) except IOError, info: raise Exception, info partwidth = left.get_rect().w hight = left.get_rect().h x = width - partwidth*2 if x < 1: x = 1 width = partwidth *2 +1 but = pygame.Surface((4+width, 4+hight), SRCALPHA) buthov = pygame.Surface((4+width, 4+hight), SRCALPHA) newcenter = pygame.transform.scale(center, (x, center.get_rect().h)) hnewcenter = pygame.transform.scale(hcenter, (x, center.get_rect().h)) but.blit(newcenter, (partwidth, 2)) buthov.blit(hnewcenter, (partwidth, 2)) partwidth += newcenter.get_rect().w but.blit(left, (2, 2)) buthov.blit(hleft, (2, 2)) but.blit(right, (partwidth, 2)) buthov.blit(hright, (partwidth, 2)) return (but, buthov) def make_dialog_bg_dynamic(width, height, THEME): sizes = {} try: topleft = utils.load_image(os.path.join(THEME['themepath'], "dialog_top_left.png" )) topright = utils.load_image(os.path.join(THEME['themepath'], "dialog_top_right.png" )) topcenter = utils.load_image(os.path.join(THEME['themepath'], "dialog_top_center.png" )) botleft = utils.load_image(os.path.join(THEME['themepath'], "dialog_bottom_left.png" )) botright = utils.load_image(os.path.join(THEME['themepath'], "dialog_bottom_right.png" )) botcenter = utils.load_image(os.path.join(THEME['themepath'], "dialog_bottom_center.png" )) rightcenter = utils.load_image(os.path.join(THEME['themepath'], "dialog_center_right.png" )) leftcenter = utils.load_image(os.path.join(THEME['themepath'], "dialog_center_left.png" )) centcenter = utils.load_image(os.path.join(THEME['themepath'], "dialog_center_center.png" )) except IOError, info: raise Exception, info dlg = pygame.Surface((4+width, 4+height), SRCALPHA) partwidth = topleft.get_rect().w partheight = topleft.get_rect().h y = 0 centerwidth = width - partwidth * 2 centerheight = height - partheight * 2 dlg.blit(topleft,(0,y)) dlg.blit(pygame.transform.scale(topcenter,(centerwidth,partheight)), (partwidth,y)) dlg.blit(topright,(partwidth + centerwidth, y)) y += partheight sizes['title_area'] = pygame.Rect(0,0,centerwidth + partwidth * 2,y) temp_y = y dlg.blit(pygame.transform.scale(leftcenter,(partwidth,centerheight)), (0,y)) dlg.blit(pygame.transform.scale(centcenter,(centerwidth,centerheight)), (partwidth,y)) dlg.blit(pygame.transform.scale(rightcenter,(partwidth,centerheight)), (partwidth + centerwidth,y)) y += centerheight sizes['action_area'] = pygame.Rect(0,temp_y,centerwidth + partwidth * 2,y) partheight = botleft.get_rect().h dlg.blit(botleft,(0,y)) dlg.blit(pygame.transform.scale(botcenter,(centerwidth,partheight)), (partwidth,y)) dlg.blit(botright,(partwidth + centerwidth, y)) sizes['button_area'] = pygame.Rect(0,y,centerwidth + partwidth * 2, y +partheight ) return (dlg, sizes) def grey_it(img): red = False green = True blue = False for x in range(img.get_width()): for y in range(img.get_height()): c = list(img.get_at((x,y))[:3]) deg = (c[0]*red + c[1]*green + c[2]*blue) / (red + green + blue) img.fill( [deg]*3, ((x,y),(1,1)) ) return img def get_boxes(color, hover_color, rect, selected_color=None, invert=False): """Draws rectangles for the buttons and dialogs.""" s = pygame.Surface((rect.w, rect.h)) s_hover = s.convert() pygame.draw.rect(s, color, rect, 0) hcolor = [] rect.move_ip(-1, -1) for c in color: if c > 80: c -= 70 elif c < 180: c +=70 hcolor.append(c) h_color = tuple(hcolor) pygame.draw.rect(s, h_color, rect, 2) s_hover.fill(hover_color) hcolor = [] for c in color: if c > 80: c -= 70 elif c < 180: c += 70 hcolor.append(c) h_color = tuple(hcolor) pygame.draw.rect(s_hover, hcolor, rect, 2) if selected_color: hcolor = [] s_select = s_hover.convert() s_select.fill(selected_color) for c in color: if c > 80: c -= 70 elif c < 180: c += 70 hcolor.append(c) h_color = tuple(hcolor) pygame.draw.rect(s_select, hcolor, rect, 2) return (s, s_hover, s_select) return (s, s_hover) def render_textrect(string, fsize, family, rect, text_color, background_color,\ justification=0, autofit=False, border=False, padding=8, bold=False): """Returns a surface containing the passed text string, reformatted to fit within the given rect, word-wrapping as necessary. The text will be anti-aliased. Takes the following arguments: string - the text you wish to render. \n begins a new line. font - a Font object rect - a rectstyle giving the size of the surface requested. If a pygame.Surface is given iso a rect the surface is used to blit the text to. text_color - a three-byte tuple of the rgb value of the text color. ex (0, 0, 0) = BLACK background_color - a three-byte tuple of the rgb value of the surface. justification - 0 (default) left-justifiedSPWidgets.py 1 horizontally centered 2 right-justified autofit - When True any space left at the bottom of the surface will be discarded. border - A border is drawn around the surface.blit padding - Space around the text. Returns the following values: Success - a surface object with the text rendered onto it. Failure - raises a TextRectException if the text won't fit onto the surface. """ final_lines = [] requested_lines = string.splitlines() if NoGtk: font = pygame.font.Font(TTF, fsize) else: font = utils.pangofont.PangoFont(family=family, size=fsize, bold=bold) if type(rect) is not pygame.Rect: # we assume a surface if rect.get_alpha(): surface = rect.convert_alpha() else: surface = rect.convert() rect = rect.get_rect() else: if background_color == 'trans': surface = pygame.Surface(rect.size, SRCALPHA) surface.fill((0, 0, 0, 0)) else: surface = pygame.Surface(rect.size) surface.fill(background_color) # Create a series of lines that will fit on the provided # rectangle. # we keep an padding on both sides for requested_line in requested_lines: if font.size(requested_line)[0] > (rect.width - padding*2): words = requested_line.split(' ') # if any of our words are too long to fit, return. # for word in words: # if font.size(word)[0] >= rect.width-16: # raise TextRectException, "The word " + word + " is too long to fit in the rect passed." # Start a new line accumulated_line = "" for word in words: test_line = accumulated_line + word + " " # Build the line while the words fit. if font.size(test_line)[0] < rect.width-padding*2: accumulated_line = test_line else: final_lines.append(accumulated_line) accumulated_line = word + " " final_lines.append(accumulated_line) else: final_lines.append(requested_line) accumulated_height = 0 for line in final_lines: # if accumulated_height + font.size(line)[1] >= rect.height: # raise TextRectException, "Once word-wrapped, the text string was too tall to fit in the rect." if line != "": tempsurface = font.render(line, 1, text_color) if justification == 0: surface.blit(tempsurface, (8, accumulated_height+8)) elif justification == 1: surface.blit(tempsurface, ((rect.width-16 - tempsurface.get_width()) / 2, accumulated_height+8)) elif justification == 2: surface.blit(tempsurface, (rect.width-16 - tempsurface.get_width(), accumulated_height+8)) # else: # raise TextRectException, "Invalid justification argument: " + str(justification) accumulated_height += font.size(line)[1] if autofit: y = accumulated_height+16 if y > 500: y = 500 if background_color == 'trans': s = pygame.Surface((rect.w, y), SRCALPHA) s.fill((0, 0, 0, 0)) else: s = pygame.Surface((rect.w, y)) s.fill(background_color) s.blit(surface, (0, 0)) surface = s if border: pygame.draw.rect(surface, (0, 0, 0), surface.get_rect().inflate(-1, -1), 1) return surface if __name__ == '__main__': import SPLogging SPLogging.set_level('debug') SPLogging.start() from base import Init import pygame from pygame.constants import * pygame.init() from SPSpriteUtils import SPInit scr = pygame.display.set_mode((800, 600)) scr.fill((240,240,250)) pygame.display.flip() back = scr.convert() actives = SPInit(scr, back) THEME = Init('braintrainer') dlg = make_dialog_bg_dynamic(300,500,THEME) scr.blit(dlg,(100,100)) pygame.display.update() runloop = 1 while runloop: pygame.time.wait(100) pygame.event.pump() events = pygame.event.get() for event in events: if event.type is KEYDOWN: if event.key == K_ESCAPE: runloop = 0 childsplay-3.3/SPWidgets/dialogs.py0000664000175000017500000010733313271013627016101 0ustar stasstas#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (c) 2010-2011 Stas Zykiewicz # # dialogs.py # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import utils import pygame from pygame.constants import * from base import Widget from buttons import * from SPConstants import * from text import TextView from SPSpriteUtils import SPSprite, SPGroup from funcs import make_dialog_bg_dynamic import subprocess class Dialog(Widget): """Modal dialog which displays text and has one or two buttons. The dialog has it's own eventloop. Usage: dlg = Dialog(txt, (10, 200),buttons=["Cancel", "OK"], title='Information') dlg.run() # this blocks any other events loops answer = dlg.get_result() dlg.erase_sprite() """ def __init__(self, txt, pos=None, fsize=12, butfsize=20, buttons=['OK'], title='', \ dialogwidth=0, dialogheight=0, name='', fbold=True): """screen - current pygame screen surface txt - can be a string or a list of strings or a SPSprite object. pos - is a tuple with x,y grid numbers. If not set the dialog is centered. fsize - the fontsize (integer) buttons - a list with strings for the buttons (max two) dialog width and hight - 0 means dynamic. name - to identify this object (optional) """ Widget.__init__(self) self.scrclip = self.screen.get_clip() self.screen.set_clip((0, 0, 800, 600)) self.dim = utils.Dimmer() self.dim.dim(darken_factor=140, color_filter=CORNFLOWERBLUE) self.orgscreen = self.screen.convert() self.orgbackgr = self.backgr.convert() self.txt = txt self.pos = pos self.fsize = fsize self.buttons = buttons self.title = title self.dialogwidth = dialogwidth self.dialogheight = dialogheight self.name = name self.fbold = fbold self.result = None self.runloop = True self.buttons_list = [] self.butspace = 0 self.padding = 8 self.actives = SPGroup(self.screen, self.backgr) self.actives.set_onematch(True) for buttxt in self.buttons: b = ButtonDynamic(buttxt, (380,250), butfsize, padding=8, name=buttxt,\ fgcol=BLACK, colorname='green') b.set_use_current_background(True) b.connect_callback(self.cbf, MOUSEBUTTONUP, buttxt) self.actives.add(b) self.buttons_list.append(b)# keep the users order for showing (see below) self.butspace += b.rect.w + 8 if not self.dialogwidth: self.dialogwidth = self.butspace self.ImShowed = False self._setup() def _setup(self): # get all the surfaces title = utils.char2surf(self.title, 24, ttf=TTF, fcol=self.THEME['dialog_title_fg_color'], bold=True) if type(self.txt) == types.ListType or type(self.txt) in types.StringTypes: tv = TextView(self.txt, (0, 0), pygame.Rect(0, 0, self.dialogwidth, 400),\ bgcol='trans',fsize=self.fsize ,\ fgcol=self.THEME['dialog_fg_color'], autofit=True, bold=self.fbold) else: # we assume a SPWidget.Widget object tv = self.txt b = self.buttons_list[0] # start building dialog if self.dialogwidth and self.dialogheight: r = pygame.Rect(0, 0, self.dialogwidth, self.dialogheight) else: r = pygame.Rect(0, 0, max(self.butspace,(tv.rect.w + (self.padding * 2)),100), \ title.get_rect().h + 8 + b.rect.h + tv.rect.h + (self.padding*3)) if r.w > 750: r.w = 750 if r.h > 530: r.h = 530 dlgsurf, dlgsizes = make_dialog_bg_dynamic(r.w+50, r.h+70, self.THEME) r = dlgsurf.get_rect() if not self.pos: y = max(10, (600 - r.h) / 2) x = (800 - r.w) / 2 self.pos = (x, y) y = 10 x = 20 dlgsurf.blit(title, (x,y)) dlgsurf.blit(tv.image, (x, dlgsizes['title_area'].h)) Widget.__init__(self, dlgsurf) self.image = dlgsurf self.rect.move_ip(self.pos) for k, v in dlgsizes.items(): dlgsizes[k].move_ip(self.pos) x = self.rect.left + ((self.rect.w - (self.butspace + 16 * len(self.buttons_list))) / 2) y = self.rect.bottom - self.buttons_list[0].rect.h *2 if len(self.buttons_list) == 2: x = self.rect.left + 16 self.buttons_list[0].moveto((x, y), True) x = self.rect.right - (self.buttons_list[1].rect.w + 16) self.buttons_list[1].moveto((x, y), True) else: for b in self.buttons_list: b.moveto((x, y), True) x += b.rect.w + 16 self.dlgsizes = dlgsizes def cbf(self, widget, event, data): self.result = data self.runloop = False def get_result(self): return self.result def get_action_area(self): return self.dlgsizes def show(self, guests=None): if guests: self.actives.add(guests) self.display_sprite() for b in self.actives: b.display_sprite() self.ImShowed = True def run(self, guests=None): if not self.ImShowed: if guests: self.actives.add(guests) self.display_sprite() for b in self.actives: b.display_sprite() clock = pygame.time.Clock() while self.runloop: clock.tick(30) pygame.event.pump() events = pygame.event.get() for event in events: if event.type is KEYDOWN and event.key is K_ESCAPE: self.runloop = False else: self.actives.update(event) pygame.event.clear() self.erase_sprite() self.screen.blit(self.orgscreen, (0, 0)) self.backgr.blit(self.orgbackgr, (0, 0)) self.dim.undim() self.screen.set_clip(self.scrclip) if hasattr(self, 'reset_children'): # I'm a DialogWindow self.reset_children() class DialogWindow(Dialog): """Modal dialog which displays sprites and has one or two buttons of it's own. The dialog has it's own eventloop. This differs from a standard dialog which can only display a surface. This dialog can display and handle sprite objects which will be placed relativly to the dialogs' position. So if the dialog is displayed at 100,100 all sprites will be moved by 100,100. You must layout the sprites properly and make sure the dialog is big enough. The dialog will move all sprites by the dialogs display offset. The dialog calls the update method on all sprites in the eventloop. You can connect your sprites to callback functions to collect data or whatever. When the dialog quits all the sprite objects still exists so you can query them for data or states. Usage: TODO """ def __init__(self, sprites, pos=None, butfsize=20,dialogheight=200, dialogwidth=200,\ buttons=['OK'], title='', name=''): """screen - current pygame screen surface sprites - a list with all the sprites to display on the 'back' surface. The sprites must have the name attribute and position relative to the dialog set. You should connect the sprites to callbacks to get results. pos - is a tuple with x,y grid numbers. If not set the dialog is centered. buttons - a list with strings for the buttons (max two) name - to identify this object (optional) """ Dialog.__init__(self, ' ', pos=pos, fsize=12, butfsize=butfsize, buttons=buttons,\ title=title, dialogwidth=dialogwidth, dialogheight=dialogheight,\ name=name, fbold=True) self.show() self._org_pos = [] x, y = self.get_action_area()['action_area'].topleft for s in sprites: s.set_use_current_background(True) sx, sy = s.get_sprite_pos() self._org_pos.append((s,(sx,sy))) s.moveto((sx + x,sy + y)) s.display_sprite() self.sprites = sprites self.actives.add(sprites) def reset_children(self): """This wil reset the positions from the sprites back to their original postions.""" for s, pos in self._org_pos: s.moveto(pos) class MenuBar(Widget): def __init__(self, rect, actives, cbf, dice_cbf,lock, usestar=False, \ usegraph=False, usedice=False, volume_level=50): Widget.__init__(self) self.buttons_ypos = self.rect.top+8 bname = 'core_info_button.png' hbname = 'core_info_button_ro.png' p = os.path.join(THEMESPATH, self.THEME['theme'],bname ) hp = os.path.join(THEMESPATH, self.THEME['theme'],hbname ) pos = (CORE_BUTTONS_XCOORDS[0], self.buttons_ypos) if not os.path.exists(p): p = os.path.join(DEFAULTTHEMESPATH, bname) if not os.path.exists(hp): hp = None if hp: self.infobutton = TransImgButton(p, hp,pos, name='Info') else: self.infobutton = ImgButton(p, pos, name='Info') self.infobutton.mouse_hover_leave_action = True self.infobutton.connect_callback(cbf, MOUSEBUTTONUP, 'Info') bname = 'core_quit_button.png' hbname = 'core_quit_button_ro.png' p = os.path.join(THEMESPATH, self.THEME['theme'],bname ) hp = os.path.join(THEMESPATH, self.THEME['theme'],hbname ) pos = (CORE_BUTTONS_XCOORDS[8], self.buttons_ypos) if not os.path.exists(p): p = os.path.join(DEFAULTTHEMESPATH, bname) if not os.path.exists(hp): hp = None if hp: self.quitbutton = TransImgButton(p, hp,pos, name='Quit') else: self.quitbutton = ImgButton(p, pos, name='Quit') self.quitbutton.mouse_hover_leave_action = True self.quitbutton.connect_callback(cbf, MOUSEBUTTONUP, 'Quit') if volume_level == 0: bname = 'core_volmute_button.png' hbname = 'core_volmute_button_ro.png' else: bname = 'core_volume_button.png' hbname = 'core_volume_button_ro.png' p = os.path.join(THEMESPATH, self.THEME['theme'],bname ) hp = os.path.join(THEMESPATH, self.THEME['theme'],hbname ) pos = (CORE_BUTTONS_XCOORDS[7], self.buttons_ypos) if not os.path.exists(p): p = os.path.join(DEFAULTTHEMESPATH, bname) if not os.path.exists(hp): hp = None if hp: self.volumebutton = TransImgButton(p, hp,pos, name='Volume') else: self.volumebutton = ImgButton(p, pos, name='Volume') self.volumebutton.mouse_hover_leave_action = True self.volumebutton.connect_callback(cbf, MOUSEBUTTONUP, 'Volume') if usegraph: self.chartbutton = ChartButton((CORE_BUTTONS_XCOORDS[5], self.buttons_ypos), cbf) self.chartbutton.mouse_hover_leave_action = True else: self.chartbutton = None if usestar: self.dicebuttons = StarButton((CORE_BUTTONS_XCOORDS[1], self.buttons_ypos), \ actives, dice_cbf, lock, usedice) else: self.dicebuttons = DiceButtons((CORE_BUTTONS_XCOORDS[3], self.buttons_ypos),\ actives, dice_cbf, usedice) self.scoredisplay = ScoreDisplay((CORE_BUTTONS_XCOORDS[6], self.buttons_ypos+4), cbf=cbf) def get_buttons_posy(self): return self.buttons_ypos def get_scoredisplay(self): return self.scoredisplay def get_infobutton(self): return self.infobutton def get_quitbutton(self): return self.quitbutton def get_chartbutton(self): return self.chartbutton def get_dicebuttons(self): return self.dicebuttons def get_volumebutton(self): return self.volumebutton class Graph(Widget): """provides a SDL surface with a graph plotted onto. The surface will be, x*y, 502x302 and will hold up to 20 values. This can only be used to display scores from schoolsplay. """ def __init__(self, data, level, headertext='', norm=None): """@data must be a list with tuples (score,date). @norm is a tuple containing the mu and sigma value. """ # dates are stored like this: 07-09-09_10:44:27 # the data list is a list with tuples like (mu,sigma,date) self.logger = logging.getLogger("childsplay.SPWidgets_lgpl.Graph") # main surf is 500x300 the graph is a surf of 470x270. # 20 for the text bottom and left and 10 for a top and right offset gs = pygame.Surface((470, 270))# surf for the graph gs.fill((230, 230, 230)) self.s = pygame.Surface((500, 400))# main surf self.s.fill((200, 200, 200)) if not data: self.logger.warning("No data received to show in graph") ts = utils.char2surf(_("No data available for this level"), TTFSIZE + 8, ttf=TTF, split=35) y = 100 for s in ts: self.s.blit(s, (20, y)) y += s.get_height() Widget.__init__(self, self.s) return # border around the surf pygame.draw.rect(self.s, (100, 100, 100), self.s.get_rect().inflate(-1, -1), 2) # draw mu line and sigma deviation as a transparent box. if norm: mu, sigma = norm # line pygame.draw.line(gs, DARK_BLUE, (0, 270-mu * 27), (470, 270-mu * 27), 3) # deviation box, transparent blue top_y = mu + (mu / 100.0 * 30) bottom_y = mu - (mu / 100.0 * 30) darken = pygame.Surface((470, int((top_y-bottom_y) * 27))) darken.fill(BLUE) darken_factor = 64 darken.set_alpha(darken_factor) gs.blit(darken, (0, 270-top_y * 27)) # draw y-axes graph lines, initial y offset is 30 pixels to leave room for text. i = 10 for y in range(0, 270, 27): pygame.draw.line(gs, (0, 0, 0), (0, y), (470, y), 1) ts = utils.char2surf(str(i), TTFSIZE-2, ttf=TTF, bold=True) i -= 1 self.s.blit(ts, (4, y + 35)) ts0 = utils.char2surf(headertext, TTFSIZE-2, ttf=TTF, bold=True) ts1 = utils.char2surf(_("Percentile scores for level %s") % level, TTFSIZE, ttf=TTF) self.s.blit(ts0, (10, 2)) self.s.blit(ts1, (20, 20)) # Draw x-axes data # determine the size of the x graph steps. This depends on the number of data items. # as we fill the x axe. Y step is always the same as the y axe values are always 0-10. # The maximum is 470 items, one pixel per data item. x_step = 470 / len(data) dotslist = [] # draw dots and x-axes lines for x in range(0, 471-x_step, x_step): pygame.draw.line(gs, (0, 0, 0), (x, 270), (x, 0), 1) try: item = data.pop(0) #print item y = int(float(item[1]) * 27) #print "y position",y date = item[0] #print "date",date except (IndexError, TypeError): self.logger.exception("Troubles in the datalist, this shouldn't happen\n I try to continue but expect weird results :-)\n Traceback follows:") continue else: pygame.draw.circle(gs, DARK_BLUE, (x + 4, 270-y + 4), 4, 0) dotslist.append((x, 270-y)) # blit date, rotated 90 degrees clockwise ts = utils.char2surf(date, TTFSIZE-5, ttf=TTF) # rotate 90 degrees v_ts = pygame.transform.rotate(ts, 270) self.s.blit(v_ts, (x + 20, 320)) # connect the dots if there are more then one if len(dotslist) > 1: pygame.draw.lines(gs, BLUE, 0, dotslist, 2) pygame.draw.rect(gs, (0, 0, 0), gs.get_rect().inflate(-1, -1), 2) # finally blit the two surfaces self.s.blit(gs, (20, 40)) Widget.__init__(self, self.s) def _calculate_position(self, pos): new_pos = pos# finish this return new_pos def get_surface(self): return self.image class ExeCounter(Widget): # TODO: Finish this into a SPWidgets widget """Object that provides a, transparent, Pygame Surface that displays a simple exercise counter in the form, done/todo. It uses two label objects for the display and provides some methods to interact with these labels. The object places the labels in the menubar. """ def __init__(self, pos, total, fsize=10, text=''): """The width of the widget is determined by the width of the headertext with a minimal width of four spaces and a maximum of fourteen characters. total - the total number of exercises. fsize - Fontsize for the text text - Headertext defaults to 'Exercises' (localized) """ self.logger = logging.getLogger("childsplay.SPocwWidgets.ExeCounter") Widget.__init__(self) self.total = total self.done = 0 if not text: text = _("Exercises") if len(text) > 14:#prevent to large label when localized text = text[:14] fgcol=self.THEME['execounter_fg_color'] bgcol = self.THEME['execounter_bg_color'] s0 = utils.char2surf(text, fsize=fsize, fcol=fgcol) txt = "%s/%s" % (self.done, self.total) self.lbl = Label(txt, (pos[0]+2, pos[1]+s0.get_height()), fsize=12, padding=4, border=0, fgcol=fgcol, bgcol=bgcol) r = pygame.Rect(0, 0,s0.get_rect().w+4, s0.get_rect().h +\ self.lbl.rect.h+4) box, spam = get_boxes(bgcol, BLACK, r) box.blit(s0, (2, 2)) self.image = box Widget.__init__(self, box) self.rect.move_ip(pos) self.display_sprite() self.lbl.display_sprite() def increase_counter(self): """Increase the 'done' part of the counter. When the 'done' part is equal to the 'total' part no increase is performed.""" if self.done == self.total: return self.done += 1 text = "%s/%s" % (self.done, self.total) self.lbl.settext(text) self.lbl.display_sprite() def reset_counter(self, total): """Reset the total counter to @total. The 'done' part is reset to zero. """ self.total = total self.done = -1 self.increase_counter() class ScoreDisplay(Label): """Displays a sore value of max 4 digits. It provides methods to set, increase, clear and return the scores.""" def __init__(self, pos, score=0, cbf=None): self.scorestr = '%04d' % score # TODO: set fgcol and bgcol kwargs ? Label.__init__(self, self.scorestr, pos, fsize=20, padding=9, border=1) if cbf: self.connect_callback(cbf, MOUSEBUTTONUP, 'scoredisplay') # We disguise our selfs into a graphbutton self.name = 'Chart' else: self.name = 'ScoreDisplay' self.UseMe = True def _showme(self): if self.UseMe: self.display_sprite() def set_score(self, score=0): if score < 0: return if score > 9999: score = 9999 self.scorestr = '%04d' % score self.settext(self.scorestr) self._showme() def increase_score(self, score): if int(self.scorestr) + score > 9999: score = 0 if int(self.scorestr) + score < 0: score = 0 self.scorestr = '%04d' % (int(self.scorestr) + int(score)) self.settext(self.scorestr) self._showme() def clear_score(self): self.scorestr = '0000' self.settext('0000') self._showme() def return_score(self): return int(self.scorestr) class VolumeAdjust(Widget): """Widget that provides a volume change widget with on both ends a small button to increase or decrease and mute the volume level and in the middle a percentage display. """ def __init__(self, pos, volume=None, voice_unmute=True, defval=50): """defval - value between 0, silent, and 100, maximum, volume level.""" Widget.__init__(self) self.logger = logging.getLogger("childsplay.SPWidgets.VolumeAdjust") self.logger.debug("VolumeAdjust called with volume level %s" % volume) self.soundcheck = utils.load_sound(os.path.join(ACTIVITYDATADIR, 'CPData','volumecheck.wav')) self.theme = self.THEME['theme'] if volume or int(volume) == 0: #print "we have volume" self.volume = int(volume) elif self.WEHAVEAUMIX: #print "we have aumix" self.volume = int(self.WEHAVEAUMIX) else: #print "else defval" self.volume = int(defval) self.logger.debug("setting volume string to %s" % self.volume) self.volstr = '%02d' % self.volume + "%" # TODO: set fgcol and bgcol kwargs ? self.logger.debug("setting voice unmute to %s" % voice_unmute) imgup = os.path.join(THEMESPATH, self.theme,'core_volup_button.png') imgup_ro = os.path.join(THEMESPATH, self.theme,'core_volup_button_ro.png') imgdown = os.path.join(THEMESPATH, self.theme,'core_voldown_button.png') imgdown_ro = os.path.join(THEMESPATH, self.theme,'core_voldown_button_ro.png') px, py = pos prev = os.path.join(THEMESPATH, self.theme, 'core_volume_button.png') prev_ro = os.path.join(THEMESPATH, self.theme, 'core_volume_button_ro.png') next = os.path.join(THEMESPATH, self.theme, 'core_volmute_button.png') next_ro = os.path.join(THEMESPATH, self.theme, 'core_volmute_button_ro.png') self.lbl0 = Label(_("Quiz voice"), pos, fsize=18, padding=4, minh=48) px += self.lbl0.rect.w + 10 self.voicetoggle = TransPrevNextButton((px, py), self._cbf_toggle_voice, \ prev, prev_ro,\ next, next_ro, states=[True,False]) py += self.voicetoggle.rect.h + 20 px = pos[0] self.lbl1 = Label(self.volstr, pos, fsize=18, padding=4, border=1, minh=48) self.volumetoggle = TransPrevNextButton((px, py), self._cbf_toggle_volume, \ prev, prev_ro,\ next, next_ro) px += self.volumetoggle.rect.w + 20 self.voldownbut = TransImgButton(imgdown, imgdown_ro, (px, py)) self.voldownbut.mouse_hover_leave_action = True self.voldownbut.connect_callback(self._cbf, MOUSEBUTTONUP, -5) px += self.voldownbut.rect.w self.lbl1.moveto((px , py+4)) px += self.lbl1.rect.w self.volupbut = TransImgButton(imgup, imgup_ro, (px, py)) self.volupbut.mouse_hover_leave_action = True self.volupbut.connect_callback(self._cbf, MOUSEBUTTONUP, 5) if self.volume == 0: self.volumetoggle.toggle() self.volumetoggle.display_sprite() if not voice_unmute: self.voicetoggle.toggle() self.voicetoggle.display_sprite() def set_use_current_background(self, bool): self.voldownbut.set_use_current_background(bool) self.volupbut.set_use_current_background(bool) self.volumetoggle.but.set_use_current_background(bool) self.voicetoggle.but.set_use_current_background(bool) def _cbf_toggle_volume(self, widget, event, data): self.logger.debug("set volume %s" % data) if self.volume > 0: self.volume = 0 else: self.volume = 75 self.volumetoggle.toggle() self.volumetoggle.display_sprite() self.volstr = '%02d' % self.volume + "%" self.lbl1.erase_sprite() self.lbl1.settext(self.volstr) self.lbl1.display_sprite() subprocess.Popen("amixer set Master %s" % self.volume + "%",shell=True) def _cbf_toggle_voice(self, *args): self.voicetoggle.toggle() self.voicetoggle.display_sprite() def _cbf(self, widget, event, data): if self.volume >= 100 and data[0] > 0: return if self.volume <= 0 and data[0] < 0: return self.volume += data[0] if self.volume > 99: self.volume = 99 if self.volume < 0: self.volume = 0 if self.volume > 0 and self.volumetoggle.get_state() == 'next': self.volumetoggle.toggle() self.volumetoggle.display_sprite() self.volstr = '%02d' % self.volume + "%" self.lbl1.erase_sprite() self.lbl1.settext(self.volstr) self.lbl1.display_sprite() self.logger.debug("Volume set to %s" % self.volstr) #Here we set the actual volume (We do this with aumix) if self.WEHAVEAUMIX: subprocess.Popen("amixer set Master %s" % self.volume + "%",shell=True) self.soundcheck.play() else: self.logger.warning("Not possible to set volume level") def display(self): self.voldownbut.display_sprite() self.volupbut.display_sprite() self.lbl1.display_sprite() self.lbl0.display_sprite() self.volumetoggle.display_sprite() self.voicetoggle.display_sprite() def hide(self): self.voldownbut.erase_sprite() self.volupbut.erase_sprite() self.lbl1.erase_sprite() self.lbl0.display_sprite() self.volumetoggle.erase_sprite() self.voicetoggle.erase_sprite() def get_actives(self): return [self.voldownbut, self.volupbut, self.lbl0, self.lbl1,\ self.volumetoggle.get_actives(),self.voicetoggle.get_actives()] def get_volume(self): return int(self.volume) def get_voice_state(self): return self.voicetoggle.get_state() class ScrollWindow(Widget): """Widget that holds other widgets and scrolls them up or down.""" def __init__(self, pos, size, objects, padding=4, childpadding=20, \ scrollstep=0, border=0, cols=0, scrollbutton_size='64', \ bordercol=BLACK, autoscroll=False): """pos - position size - size of the scrollwindow objects - list with SPWidget object to display padding - space between the scrollwindow and the children childpadding - space between the children scrollstep - amount of pixels to scroll border - a border around the window thickness in pixels. 0 means no border cols - the amount of columns. 0 means that the amount of columns depends on the amount of children on a row. (Currently only 0 or 1 are supported) button_up and button_down - Defaults to None and than a text button is used. When it's not None a file path is assumed. scrollbutton_size - defaults to 64. Supported A special attribute is added to the child called _scroll_focus.""" # TODO: add append and insert methods Widget.__init__(self) self.image = pygame.Surface((1,1))# image is needed for a sprite object self.theme = self.THEME['theme'] self.rect = pygame.Rect(pos+size) self.border = border self.bordercol = bordercol self.button_up = os.path.join(self.THEME['themepath'], '%s_scroll_up.png' % scrollbutton_size) self.button_up_ro = os.path.join(self.THEME['themepath'], '%s_scroll_up_ro.png' % scrollbutton_size) self.button_down = os.path.join(self.THEME['themepath'], '%s_scroll_down.png' % scrollbutton_size) self.button_down_ro = os.path.join(self.THEME['themepath'], '%s_scroll_down_ro.png' % scrollbutton_size) if self.border: self._draw_border() self.autoscroll = autoscroll self.rect.topleft = pos self.visiblerect = self.rect.inflate((-border*2, -border*2)) start_x = pos[0] + padding start_y = pos[1] + padding max_x = pos[0] + size[0] max_y = pos[1] + size[1] x = start_x y = start_y biggest_width = 1 firstobject = cols == 1 _objects = [] for obj in objects: if obj.get_sprite_width() > biggest_width: biggest_width = obj.get_sprite_width() obj_per_row = (size[0] / (biggest_width + childpadding)) count = 0 for obj in objects: if firstobject: y = y - obj.get_sprite_height() - childpadding firstobject = False if count == obj_per_row or cols == 1: x = start_x + padding + childpadding y = y + obj.get_sprite_height() + childpadding count = 1 else: x += padding + childpadding count += 1 obj.moveto((x, y)) if self.rect.contains(obj.rect): obj._scroll_focus = True else: obj._scroll_focus = False x += biggest_width _objects.append(obj) if _objects: self.set_objects(_objects) if scrollstep == 0: self.scrollstep = objects[0].get_sprite_height() + childpadding else: self.scrollstep = scrollstep def _draw_border(self): pygame.display.update(pygame.draw.rect(self.screen, self.bordercol, self.rect, self.border)) def set_objects(self, objects): self._firstchild = objects[0] self._firstchild_start = self._firstchild.get_sprite_pos() self._lastchild = objects[-1] self._objects = objects # setup the scrollbuttons if self.button_up: # we assume the rest is also set self.upbut = TransImgButton(self.button_up, self.button_up_ro, \ (self.rect.right+4, self.rect.top)) self.downbut = TransImgButton(self.button_down, self.button_down_ro, \ (self.rect.right+4, self.rect.bottom)) else: self.upbut = Button("up", (self.rect.right+4, self.rect.centery)) self.downbut = Button("down", (self.rect.right+4, self.rect.centery)) self.downbut.moveto((self.rect.right+4, self.rect.bottom - self.downbut.get_sprite_height())) self.upbut.connect_callback(self._cbf, MOUSEBUTTONUP, 'up') self.upbut.display_sprite() self.downbut.connect_callback(self._cbf, MOUSEBUTTONUP, 'down') self.downbut.display_sprite() #self.display_sprite(pos) self.display_children() def _cbf(self, widget, event, data): if data[0] == 'down': if not self.rect.contains(self._lastchild.rect): self.scrollstep = -abs(self.scrollstep) self._scroll_children() else: if not self.rect.contains(self._firstchild.rect): self.scrollstep = abs(self.scrollstep) self._scroll_children() widget.mouse_hover_leave() def get_actives(self): if not self.rect.contains(self._lastchild.rect) or self.autoscroll: self.upbut.display_sprite() self.downbut.display_sprite() return [self.upbut, self.downbut,self] else: return [self] def display_children(self): for obj in self._objects: if obj._scroll_focus: obj.display_sprite() else: break def erase_children(self): for obj in self._objects: obj.erase_sprite() def _scroll_children(self): oldclip = self.screen.get_clip() self.screen.set_clip(self.visiblerect) self.erase_children() for obj in self._objects: if obj._scroll_focus:# displayed object obj.moveto((obj.rect.x, obj.rect.y + self.scrollstep)) if self.rect.contains(obj.rect): obj.display_sprite() else: obj._scroll_focus = False else:# not displayed obj.moveto((obj.rect.x, obj.rect.y + self.scrollstep)) if self.rect.contains(obj.rect): obj._scroll_focus = True obj.display_sprite() self.screen.set_clip(oldclip) pygame.display.update() # Override the methods from SPWidget.SPSprite # We use it to redraw the border if we have one def display_sprite(self,*args): if self.border: self._draw_border() def erase_sprite(self,*args): pass class ProgressBar(Widget): """Class which provides a surface with a progressbar.(400x100) """ ## TODO: the progress bar is full after 95 steps, not 100. ## The reason is that it's not possible to split pixels. :-) def __init__(self,pos, size, steps=10,\ transparent=False, backcol=GREY, barfcol=DEEPSKYBLUE4, barbcol=BLACK): """pos is the postion to place this widget size is a tuple with the width and height of the widget steps is the amount of steps that should be taken to fill the bar, defaults to 10 The update call returns the number of steps taken, when the bar is full it will return False """ Widget.__init__(self) self.end = size[0] self.step = self.end / steps self.steps = steps self.backcol = backcol self.barfcol = barfcol self.barbcol = barbcol self.image = pygame.Surface((size[0],size[1])) self.image.fill(backcol) self.rect = self.image.get_rect() pygame.draw.rect(self.image, barbcol, self.rect.inflate(-8,-8),0) self.barsurf = pygame.Surface((size[0]-8,size[1]-8)) self.barsurf.fill(barfcol) self.barrect = self.barsurf.get_rect() self.barend = self.step self._initbar() self.moveto(pos) def _initbar(self): self.x, self.progress = 0, 0 # used in update def update(self): """Update the progressbar with step. Returns the number of steps passed. """ if self.progress >= self.steps: return False self.image.blit(self.barsurf, (4,4), (0, 0, self.x + self.barend, self.barrect.h)) self.display_sprite() #self.refresh_sprite() self.progress += 1 self.barend = (self.progress+1) * self.step return self.progress def reset_bar(self, header=''): """This will set the bar to 0.""" self.erase_sprite() self._initbar() def clearbar(self, screen, backgr): """Remove the bar from the screen. @ backgr is blitted over @screen. This calls pygame.display.update""" self.erase_sprite() childsplay-3.3/SPWidgets/text.py0000664000175000017500000004146313271013627015444 0ustar stasstas#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (c) 2010-2011 Stas Zykiewicz # # text.py # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. from base import Widget from SPConstants import * from SPSpriteUtils import SPSprite import utils import pygame from pygame.constants import * import types from funcs import render_textrect if not NoGtk: import pangofont class Label(Widget): def __init__(self, txt, pos, fsize=18, padding=4, border=None, maxlen=0, name='', bold=False, transparent=False, ** kwargs): """Label which displays a line of text txt - string to display pos - position to display the box rect - Rect indicating the size of the box fsize - Font size padding - space in pixels around the text border - Integer. Draw a border around the label. name - string to indicate this object bold - set font to bold. Theres also a number of keyword arguments understood by this widget; fgcol - foreground color (other than the theme color) bgcol - Background color. minh - Minimal height of the widget. transparent - No background. """ Widget.__init__(self) self.fsize = fsize self.bold=bold self.transparent = transparent fgcol = self.THEME['label_fg_color'] bgcol = self.THEME['label_bg_color'] if kwargs.has_key('fgcol'): fgcol = kwargs['fgcol'] if kwargs.has_key('bgcol'): bgcol = kwargs['bgcol'] if kwargs.has_key('minh'): self.minh = kwargs['minh'] else: self.minh = None if kwargs.has_key('ttf'): self.ttf = kwargs['ttf'] else: self.ttf = TTF if padding < 2: padding = 2 self.padding = padding self.fgcol = fgcol self.bgcol = bgcol self.border = border self.settext(txt) self.rect = self.image.get_rect() SPSprite.__init__(self, self.image) self.rect.move_ip(pos) def settext(self, txt): self._txt = txt s = utils.char2surf(txt, fsize=self.fsize,ttf=self.ttf, fcol=self.fgcol, bold=self.bold) r = s.get_rect() if self.minh: y = self.minh x = r.w x += self.padding*2 surf = pygame.Surface((x, y)) else: x = r.w x += self.padding*2 y = r.h y += self.padding*2 surf = pygame.Surface((x, y)) x = (surf.get_rect().w - r.w) / 2 y = (surf.get_rect().h - r.h) / 2 surf.fill(self.bgcol) surf.blit(s, (x, y)) if self.transparent: self.image = s else: self.image = surf if self.border: pygame.draw.rect(self.image, BLACK, self.image.get_rect(), self.border) def get_text(self): return self._txt class TextView(Widget): def __init__(self, txt, pos, rect=None, fsize=12, padding=4, \ autofit=False, border=False, name='', \ bgcol=None, fgcol=None, shade=0, bold=False, **kwargs): """Box which displays a text, wrapped if needed. txt - string to display. When txt is a list of strings the lines are blitted on a surface big enough to hold the longest line. rect is not used in this case. pos - position to display the box rect - Rect indicating the size of the box. Only used in conjunction with txt if it's a string. fsize - Font size padding - space in pixels around the text fgcol - text color (R,G,B), if None the theme color will be used. bgcol - background color (R,G,B), if None the theme color will be used. If bgcol is set to 'trans' the background will be transparent. autofit - Discard the empty space around the text. name - string to indicate this object shade - The amount of "3D shade" the text should have, 0 means no shade. Beware that shading takes time. """ if not fgcol: fgcol = self.self.THEME['textview_fg_color'] if not bgcol: bgcol = self.self.THEME['textview_bg_color'] if type(txt) in types.StringTypes and rect != None: self.image = render_textrect(txt, fsize, TTF, rect, fgcol, \ bgcol, justification=0, bold=bold, \ autofit=autofit, border=border) elif txt and type(txt) is types.ListType: ll = [] w = 0 for line in txt: if not line.strip('\n'): line = ' ' s = utils.char2surf(line, fsize, fgcol, bold=bold) ll.append(s) if s.get_rect().w > w: w = s.get_rect().w h = s.get_rect().h if bgcol == 'trans': self.image = pygame.Surface((w, h * len(ll)), SRCALPHA) self.image.fill((0, 0, 0, 0)) else: self.image = pygame.Surface((w, h * len(ll))) self.image.fill(bgcol) x, y = 0, 0 for s in ll: self.image.blit(s, (x, y)) y += h self.rect = self.image.get_rect() Widget.__init__(self, self.image) self.rect.move_ip(pos) class SimpleView(Widget): """Simple object that displays a numbers of strings. Any strings that are longer than the widgets rect are disgarded. Use this as a view for command that produces text output repeatedly like a shell command. Use the TextView for proper text display.""" def __init__(self, rect, fsize, bgcol=None, fgcol=None, padding=8, border=2, lines=1): """Starts empty, use set_text to fill it. rect - Rect indicating the size of the box and position. fsize - Font size fgcol - text color (R,G,B), if None the theme color will be used. bgcol - background color (R,G,B), if None the theme color will be used. If bgcol is set to 'trans' the background will be transparent. padding - space in pixels around the text border - border in pixels, None means no border. lines - how many previous lines of text should be visible (cheap scroll effect) """ if not fgcol: fgcol = self.THEME['textview_fg_color'] if not bgcol: bgcol = self.THEME['textview_bg_color'] self.fgcol = fgcol self.bgcol = bgcol self.padding = padding self.fsize = fsize self.image = pygame.Surface(rect.size) self.image.fill(self.bgcol) self.rect = self.image.get_rect() if border: pygame.draw.rect(self.image, BLACK, self.rect, border) self.org_image = self.image.copy() Widget.__init__(self, self.image) self.rect.move_ip(rect.topleft) self.prevlines = [] self.lines = lines def set_text(self, text): """Add one line of text.""" self.prevlines.append(text) if len(self.prevlines) > self.lines: self.prevlines = self.prevlines[-self.lines:] self.image.blit(self.org_image, (0, 0)) y = 0 for line in self.prevlines: surf = utils.char2surf(line, self.fsize, self.fgcol) self.image.blit(surf, (self.padding, self.padding + y)) y += surf.get_height() class TextEntry(Widget): def __init__(self, pos, length=200, maxlen=0, message='', fsize = 28, border=None, \ bold=None, ttf='arial', fgcol=None, bgcol=None, password_mode=False, \ validationlist=[], validation_values_list=[]): """Box which displays a text input. The height of the box is determined by the fontsize used. message - input prompt pos - position to display the box maxlen - is the maximum number of input characters. length - length of the display in pixels. fsize - font size border - One pixel border around the box ttf - family of fonts fgcol - foreground color (defaults to theme) bgcol - background color (defaults to theme) password_mode - displays input in stars validitionlist - A list with characters that are allowed validation_values_list - A list with values that are allowed """ Widget.__init__(self) self.logger = logging.getLogger("childsplay.SPWidgets_lgpl.TextEntry") self.length = length self.maxlen = maxlen self.fsize = fsize self.message = message self.border = border self.ttf = ttf self.fgcol = fgcol if not self.fgcol: self.fgcol = self.THEME['textentry_fg_color'] self.bgcol = bgcol if not self.bgcol: self.bgcol = self.THEME['textentry_bg_color'] self.bold = bold self.password_mode = password_mode self.validationlist = validationlist self.validation_values_list = validation_values_list if NoGtk: font = pygame.font.Font(filename=None, size=fsize) else: font = pangofont.PangoFont(family=ttf, size=fsize, bold=bold) w, h = font.size(message) self.image = pygame.Surface((self.length, h)) self.rect = self.image.get_rect() self.image.fill(self.bgcol) if self.border: pygame.draw.rect(self.image, BLACK, self.image.get_rect(), self.border) self.orgimage = self.image.convert() self._CanHaveInputFocus = True self.connect_callback(self._cbf, [KEYDOWN, MOUSEBUTTONDOWN]) self.moveto(pos) self.xpadding = 6 self.ypadding = 0 if self.message: self._remove_prompt() def _cbf(self, widget, event, data): if event.type == MOUSEBUTTONDOWN: self._add_prompt() elif event.type == KEYDOWN: if event.key == K_BACKSPACE: self.backspace() elif event.key == K_RETURN: return self.get_text() elif event.unicode and ord(event.unicode) > 31: if self.validationlist: if event.unicode in self.validationlist: self.add(event.unicode) else: self.add(event.unicode) def _add_prompt(self): self.image.blit(self.orgimage, (0, 0)) self.draw() def _remove_prompt(self): self.image.blit(self.orgimage, (0, 0)) self.messagesurf = utils.char2surf(self.message, self.fsize, self.fgcol, bold=self.bold) self.image.blit(self.messagesurf, (self.xpadding, self.ypadding)) self.display_sprite() def add(self, c): if self.maxlen and len(self.message) > self.maxlen-1: return self.message += c self.draw() def backspace(self): self.message = self.message[:-1] self.draw() def draw(self): if self.password_mode: self.messagesurf = utils.char2surf('*' * len(self.message) +'_', self.fsize, self.fgcol, bold=self.bold) else: self.messagesurf = utils.char2surf(self.message+'_', self.fsize, self.fgcol, bold=self.bold) if self.messagesurf.get_size()[0] <= self.length: self.image.blit(self.orgimage, (0, 0)) self.image.blit(self.messagesurf, (self.xpadding, self.ypadding)) else: self.message = self.message[:-1] self.display_sprite() def clear(self): self.image.blit(self.orgimage, (0, 0)) self.message = "" self.display_sprite() def get_text(self): txt = self.message.strip() try: i = int(txt) txt = str(i) except ValueError: pass if self.validation_values_list: if txt in self.validation_values_list: return txt else: return '' return txt def set_text(self,txt): self.message = txt self._remove_prompt() def get_surface(self): return self.image class TEB_TextEntry(TextEntry): """This eidget is used internally by the TextEntryBox. Don't use this in your code, use the TextEntry """ __current = None def __init__(self, pos, length=200, maxlen=0, message='', fsize = 28, border=None, \ bold=None, ttf='arial', fgcol=None, bgcol=None, password_mode=False): TextEntry.__init__(self, pos, length=length, maxlen=maxlen, \ message=message, fsize=fsize, border=border, \ bold=bold, ttf=ttf, fgcol=fgcol, bgcol=bgcol,\ password_mode=password_mode) self.logger = logging.getLogger("childsplay.SPWidgets_lgpl.TEB_TextEntry") self._TEfocus = False def _cbf(self, widget, event, data): pass class TextEntryBox(Widget): def __init__(self, pos, maxlen=0, length=300, height=2, message='', fsize = 14, border=True, \ ttf='arial', fgcol=None, bgcol=None, bold=False, password_mode=False): """Text input box with multiple lines. The height of the box is determined by the fontsize used times the height. You can get the actual height in pixels by calling the "get_height" method. message - input prompt pos - position to display the box maxlen - is the maximum number of input characters. length - length of the display in pixels. height - height in characters lines, 2 means two lines of text. fsize - font size border - One pixel border around the box ttf - family of fonts """ self.height = height self.TEs = utils.OrderedDict() self.currentline = 0 self.maxline = height - 1 sizey = 0 tepos = (pos[0]+1, pos[1]+1) for line in range(height): te = TEB_TextEntry(pos=tepos, maxlen=maxlen, \ length=length, message=message,\ fsize = fsize, border=False, ttf='arial',\ fgcol=fgcol, bgcol=fgcol, bold=bold, \ password_mode=False) te.disconnect_callback() te.connect_callback(self._cbf, [KEYDOWN, MOUSEBUTTONDOWN]) sizey += te.get_sprite_height() tepos = (tepos[0], tepos[1] + te.get_sprite_height()) te.line = line self.TEs[line] = te sizex = te.get_sprite_width()# length stays the same for all lines self.image = pygame.Surface((sizex + 2, sizey + 2)) Widget.__init__(self, self.image) self.image.fill(self.THEME['textentry_bg_color']) y = 0 for te in self.TEs.values(): self.image.blit(te.get_surface(), (0, y)) y += te.get_sprite_height() if border: pygame.draw.rect(self.image, BLACK, self.rect, 1) self.moveto(pos) def _cbf(self, widget, event, data): if event.type == MOUSEBUTTONDOWN: if TEB_TextEntry._TEB_TextEntry__current: TEB_TextEntry._TEB_TextEntry__current._remove_prompt() TEB_TextEntry._TEB_TextEntry__current = widget self.currentline = widget.line widget._add_prompt() elif event.type == KEYDOWN: if TEB_TextEntry._TEB_TextEntry__current is not widget: return if event.key == K_BACKSPACE: widget.backspace() elif event.key == K_RETURN: if self.currentline < self.maxline: widget._remove_prompt() self.currentline += 1 newwidget = self.TEs[self.currentline] newwidget._add_prompt() TEB_TextEntry._TEB_TextEntry__current = newwidget elif event.unicode and ord(event.unicode) > 31: widget.add(event.unicode) def get_text(self): return [te.get_text() for te in self.TEs.values()] def get_actives(self): return self.TEs.values() childsplay-3.3/SPVirtkeyboard.py0000664000175000017500000003770313271013626015520 0ustar stasstas# -*- coding: utf-8 -*- # Copyright (c) 2010 Stas Zykiewicz # # SPVirtkeyboard.py # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import logging import random import pygame from pygame.constants import * import SPWidgets from SPConstants import * import utils import SPVirtkeyboardMap as VKM KEYCOL = 45, 83, 152 class SuperKey(SPWidgets.ImgButton): def __init__(self, s, pos, pad, value): SPWidgets.ImgButton.__init__(self, s, pos, pad, value) class Key(SuperKey): def __init__(self, value, pos, obs, fsize=28, butsize=(48, 48)): ci = utils.char2surf(value,fsize, WHITE, ttf=TTFBOLD) s = pygame.Surface(butsize) s.fill(KEYCOL) pygame.draw.rect(s, WHITE, s.get_rect(), 1) cir = ci.get_rect() cir.center = s.get_rect().center s.blit(ci, cir) SuperKey.__init__(self, s, pos, 4, value) self.connect_callback(obs, MOUSEBUTTONUP, value) class SpaceKey(SuperKey): def __init__(self, pos, obs, butsize=(100, 48)): s = pygame.Surface(butsize) s.fill(KEYCOL) pygame.draw.rect(s, WHITE, s.get_rect(), 1) SuperKey.__init__(self, s, pos, 4, 'space') self.connect_callback(obs, MOUSEBUTTONUP, 'space') class BackspaceKey(SuperKey): def __init__(self, pos, obs, butsize=(100, 50)): s = pygame.Surface(butsize) s.fill(KEYCOL) pygame.draw.rect(s, WHITE, s.get_rect(), 1) pygame.draw.line(s, WHITE, (15,31), (92,31),2) pygame.draw.line(s, WHITE, (15,31), (20,26),2) pygame.draw.line(s, WHITE, (15,32), (20,37),2) SuperKey.__init__(self, s, pos, 4, 'backspace') self.connect_callback(obs, MOUSEBUTTONUP, 'backspace') class EnterKey(SuperKey): def __init__(self, pos, obs, fsize=28, butsize=(100, 104)): text = utils.char2surf("Enter", fsize, WHITE, ttf=TTFBOLD) textpos = text.get_rect() s = pygame.Surface(butsize) s.fill(KEYCOL) sr = s.get_rect() blockoffx = (sr.width / 2) blockoffy = (sr.height / 2) offsetx = blockoffx - (textpos.width / 2) offsety = blockoffy - (textpos.height / 2) + 8 s.blit(text,(offsetx, (offsety-30))) pygame.draw.rect(s, WHITE, s.get_rect(), 1) pygame.draw.line(s, WHITE, (80,71), (80,81),2) pygame.draw.line(s, WHITE, (80,81), (25,81),2) pygame.draw.line(s, WHITE, (25,81), (30,76),2) pygame.draw.line(s, WHITE, (25,82), (30,87),2) SuperKey.__init__(self, s, pos, 4, 'enter') self.connect_callback(obs, MOUSEBUTTONUP, 'enter') class ShiftKey(SuperKey): def __init__(self, pos, obs, fsize=28, butsize=(48, 48)): s = pygame.Surface(butsize) s.fill(KEYCOL) sr = s.get_rect() pygame.draw.rect(s, WHITE, s.get_rect(), 1) pygame.draw.line(s, WHITE, (22, 10), (22,36),2) pygame.draw.line(s, WHITE, (22, 10), (16,16),2) pygame.draw.line(s, WHITE, (22, 10), (28,16),2) SuperKey.__init__(self, s, pos, 4, 'shift') self.connect_callback(obs, MOUSEBUTTONUP, 'shift') class KeyBoard(SPWidgets.Widget): """Class which provides a virtual on screen keyboard for use on touchscreens or in a kioskmode system. """ def __init__(self, cbf, actives, keyboard_mode='qwerty', password_mode=False,\ wordcompletion=None, threshold=3, maxanswers=10, \ theme='default', position=(0, 100), \ display_position=(0, 0), maxlen=22, display_length=0, display=True): """This class provides a onscreen keyboard (670x225) with keys that are placed in a SPGroup so that you can incorporate in your eventloop. The caller must call the update method on this group. The keyboard doesn't have an eventloop. The mandatory callback function must be able receive the following data from this object: self and a string with the text entered by the user when the user hits Enter. self and a list with strings from the wordcompleter if used. After Enter is clicked the widget is still fully functional. cbf - The callback function to call when the user hits enter. actives - A SPGroup instance. keyboard_mode - Define layout, possible values: 'qwerty', 'qwerty_square', 'numbers', 'abc','abc_square' password_mode - Boolean. Characters entered will be displayed as stars. wordcompletion - WordCompleter instance or None. (only used if threshold > 0) threshold - Threshold value for wordcompletion. (0 means no wordcompletion) maxanswers - The maximum number of completion suggestions. (defaults to 10) theme - Theme used. Values taken from SPData/base/themes/core.rc display_position - position in x,y coords for the text display. display_length - length of the display in pixels. 0 means equal to the keyboard length. maxlen - number of characters to display. display - If normal display is to be used. When set to None the entry which has the input focus. You must make sure to set some entry widget to have the input focus otherwise nothing is shown. """ SPWidgets.Widget.__init__(self) self.logger = logging.getLogger("childsplay.SPVirtkeyboard.Keyboard") self.cbf = cbf self.position = position self.password_mode = password_mode self.maxlen = maxlen self.display_length = display_length self.display_position = display_position self.actives = actives self.display = display self._ShiftActive = False self._KeepDisplay = False self.keyboard_mode = keyboard_mode self.set_keymap() # wordcompleter related stuff. if threshold == 0: self.WC = None else: self.WC = wordcompletion self.threshold = threshold self.text = ''# we also keep text in TI but local is faster (for wordcompletion) self.maxanswers = maxanswers self._IamShowed = False def set_keymap(self): kbmap = self.keyboard_mode if kbmap == 'qwerty': map = VKM.Qwerty() elif kbmap == 'abc': map = VKM.Abc() elif kbmap == 'numbers': map = VKM.Numbers() elif kbmap == 'qwerty_square': map = VKM.QwertySquare() elif kbmap == 'abc_square': map = VKM.AbcSquare() elif kbmap == 'abc_minus': map = VKM.AbcMinus() elif kbmap == 'qwerty_minus': map = VKM.QwertyMinus() but_x, but_y = 56, 56 # setup keys x = self.position[0] y = self.position[1] extrakeys_pos = [] self.keys = [] for line in map.getlines(): for k in line: if self._ShiftActive: k = k.upper() else: k = k.lower() k = Key(k,(x, y), self.observer) self.keys.append(k) x += but_x extrakeys_pos.append((x, y)) x = self.position[0] y += but_y # bacspace kb = BackspaceKey(extrakeys_pos[0], self.observer) self.keys.append(kb) # enter ke = EnterKey(extrakeys_pos[1], self.observer) self.keys.append(ke) # space if map != 'numbers': ks = SpaceKey(extrakeys_pos[3], self.observer) ksh = ShiftKey((extrakeys_pos[3][0] + ks.rect.w, extrakeys_pos[3][1]),\ self.observer) self.keys += [ks, ksh] correction = 8 if self.display_length == 0: self.display_length = extrakeys_pos[0][0] - x + kb.get_sprite_width() - correction # setup the text display if self._KeepDisplay: return if self.display: self.TI = SPWidgets.TextEntry(pos=self.display_position, \ length=self.display_length, maxlen=self.maxlen, \ message='', fsize = 28, border=True, ttf=TTFBOLD, \ fgcol=BLACK, password_mode=self.password_mode) self.actives.set_input_focus(self.TI) else: self.TI = self.actives.who_has_input_focus() self._KeepDisplay = True def _set_firstletter(self, c, snd): # special attributes set in TextEntry, only used by various Argos acts. self.TI._fl = c.upper() self.TI._snd = snd def show(self): for b in self.keys: b.display_sprite() self.TI.display_sprite() if self._IamShowed: return else: self.actives.add(self.keys) if not self._KeepDisplay: self.actives.add(self.TI) self._IamShowed = True def hide(self): for b in self.keys: b.erase_sprite() if not self._KeepDisplay: self.TI.erase_sprite() if not self._IamShowed: return else: self.actives.remove(self.keys) if not self._KeepDisplay: self.actives.remove(self.TI) self._IamShowed = False def visible(self): return self._IamShowed def destroy(self): self.clear_display() self.hide() def clear_display(self): self.TI.clear() def observer(self, widget, event, data): """Notified by the key class""" if self.TI is not self.actives.who_has_input_focus(): self.TI = self.actives.who_has_input_focus() c = data[0] if c == 'space': c = ' ' self.TI.add(c) elif c == 'backspace': self.TI.backspace() text = self.TI.get_text().lower() if self.WC and len(text) >= self.threshold: ans = self.WC.get_answers(text, self.maxanswers) self.cbf(self, ans) elif c == 'enter': # notify our parent observer result = self.cbf(self, self.get_text()) if result: self.hide() elif c == 'shift': self._KeepDisplay = True if self._ShiftActive: self._ShiftActive = False self.hide() self.set_keymap() self.show() else: self._ShiftActive = True self.hide() self.set_keymap() self.show() else: if self._ShiftActive: self._ShiftActive = False self.hide() self.set_keymap() self.show() self.TI.add(c) text = self.TI.get_text().lower() if self.WC and len(text) >= self.threshold: ans = self.WC.get_answers(text, self.maxanswers) self.cbf(self, ans) def get_text(self): return self.TI.get_text() def toggle_numbers(self, value): pass class WordCompleter: """Class which provides word completion. """ def __init__(self, wordlist, firstletter=''): """All the words from the list are converted to lowercase and doubles are removed. wordlist - list with strings firstletter - one character string indicating for which letter we look for suggestions.""" if firstletter: self._firstletter = firstletter.lower() else: self._firstletter = None self.set_wordlist(wordlist) def set_wordlist(self, wordlist): self.words = {} self.wordlist = wordlist for w in wordlist: w = w.lower() if not self.words.has_key(w[0]): self.words[w[0]] = [w] else: self.words[w[0]].append(w) def set_firstletter(self, c): if not c: self._firstletter = None else: self._firstletter = c.lower() def get_answers(self, part, max=0): """Get suggestions from the wordlist based on the string @part. part is the partial string. max - the number of possible answers we should return. More answers means more lookup time. Most of the time 10 answers is more than enough. 0 means all answers""" answers = [] #print self._firstletter if not self._firstletter: self._firstletter = part[0].lower() if part[0].lower() != self._firstletter: return [] try: for k in self.words[part[0].lower()]: if k.startswith(part): if k[-1] == '\n': k = k[:-1] answers.append(k) except KeyError: answers = [] else: if max: try: foundanswers = random.sample(answers, max) except ValueError: pass else: return foundanswers return answers return [] def lookup(self, word): """Check to see if @word is part of the wordlist. The words in the wordlist must end with a \n, not \r\n Returns True of False.""" if not word or not self._firstletter: return None if 47 < ord(word[0]) < 58: # The first letter is a number return True return word+'\n' in self.words[self._firstletter] if __name__ == '__main__': import __builtin__ __builtin__.__dict__['_'] = lambda x:x import SPLogging SPLogging.set_level('debug') SPLogging.start() import psyco psyco.full() # f = open('dictionary_nl.txt', 'r') # wordlist = f.readlines() # f.close() wordlist = [] wc = WordCompleter(wordlist) print wc.get_answers('aa') import pygame from pygame.constants import * pygame.init() from SPSpriteUtils import SPInit scr = pygame.display.set_mode((800, 600)) scr.fill((135,206,250)) back = scr.convert() s = utils.char2surf("Hit ESC to cycle trough the layouts, F1 to quit", 24) scr.blit(s, (20, 10)) actives = SPInit(scr, back) pygame.display.flip() SPWidgets.Init('braintrainer') def cbf(parent, data): print "cbf called with: ", parent, data kb = None for layout in ('qwerty', 'qwerty_square','numbers', 'abc', 'abc_square'): if kb: kb.hide() actives.empty() kb = KeyBoard(cbf, actives, keyboard_mode=layout, position=(80, 210), \ wordcompletion=wc, threshold=2, \ display_position=(80, 160), display_length=0, \ password_mode=False) kb.show() runloop = 1 while runloop: pygame.time.wait(100) pygame.event.pump() events = pygame.event.get() for event in events: if event.type is KEYDOWN: if event.key == K_ESCAPE: runloop = 0 elif event.key == K_F1: sys.exit(0) else: actives.update(event) childsplay-3.3/childsplay.py0000664000175000017500000002673713271013626014751 0ustar stasstas#!/usr/bin/env python # -*- coding: utf-8 -*- # Copyright (c) 2010 Stas Zykiewicz # # seniorplay # This program is free software; you can redistribute it and/or # modify it under the terms of version 3 of the GNU General Public License # as published by the Free Software Foundation. A copy of this license should # be included in the file GPL-3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Library General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. import sys, os, shlex, glob,shutil from SPBasePaths import SHARELIBDATADIR if len(sys.argv) > 2: if sys.argv[1] == '--plainversion': from SPVersion import version print version if os.path.exists('/data/userdata/.schoolsplay.rc/tmp'):# btp production only shutil.rmtree('/data/userdata/.schoolsplay.rc/tmp',True) sys.exit(0) # construct proper restart command if we need to restart prog = "python %s " % os.path.join(os.getcwd(), " ".join(sys.argv)) print sys.argv import subprocess #import gc #gc.set_debug(gc.DEBUG_COLLECTABLE | gc.DEBUG_UNCOLLECTABLE | gc.DEBUG_INSTANCES | gc.DEBUG_OBJECTS) # first parse commandline options from SPOptionParser import OParser # if this doesn't bail out the options are correct and we continue with schoolsplay op = OParser() # this will return a class object with the options as attributes CMD_Options = op.get_options() ######## Here we add options for debugging ##### ### Must be removed or at least discussed before release ##### #CMD_Options.loglevel = 'debug' import SPLogging SPLogging.set_level(CMD_Options.loglevel) SPLogging.start() #create logger, configuration of logger was done above import logging CPmodule_logger = logging.getLogger("childsplay.childsplay") CPmodule_logger.debug("Created schoolsplay loggers") import utils BTPPID = None BTPSTART = None try: BTPPID = CMD_Options.kill_btp BTPSTART = CMD_Options.restart_btp except AttributeError: CPmodule_logger.info("No kill_btp or restart_btp option given") else: if BTPPID and BTPSTART: CPmodule_logger.warning("Found BTP pid, killing BTP with pid: %s" % BTPPID) subprocess.Popen("kill -9 %s" % BTPPID, shell=True) utils._remove_lock() BTPSTART = 'cd .. && ' + BTPSTART else: CPmodule_logger.info("No pid for BTP") try: import sqlalchemy as sqla except ImportError: CPmodule_logger.exception("No sqlalchemy package found") sys.exit(1) else: if sqla.__version__ < '0.5.8': CPmodule_logger.error("Found sqlalchemy version %s" % sqla.__version__) CPmodule_logger.error("Your version of sqlalchemy is to old, please upgrade to version >= 0.6") sys.exit(1) CPmodule_logger.debug("using sqlalchemy %s" % sqla.__version__) import sqlalchemy.orm as sqlorm import time import datetime #CPmodule_logger.info("IMPORTANT READ THE FOLLOWING LINES") #CPmodule_logger.info("For debugging purposes we run with some cmdline options hardcoded.") #CPmodule_logger.info("These must be removed before releasing this to the real world") #CPmodule_logger.info("Look at the top of this module for these options") from SPConstants import * sys.path.insert(0, BASEDIR) sys.path.insert(0, os.path.join(BASEDIR, 'lib')) if CMD_Options.loglevel == 'debug': CPmodule_logger.debug("Paths defined in SPConstants:") for v in ['ACTIVITYDATADIR', 'ALPHABETDIR', 'BASEDIR',\ 'DBASEPATH', 'HOMEDIR', 'HOMEIMAGES', 'HOME_DIR_NAME',\ 'LOCALEDIR', 'LOCKFILE']: CPmodule_logger.debug("%s > %s" % (v, eval(v))) # Rudimentary language check, when it fails it sets the cmdline option to C # which is available on every proper GNU/Linux system. We don't have yet a dbase # connection at this stage so we just check if the locale is properly formed. # We don't care about windows of course that system locale handling sucks anyway. loc = CMD_Options.lang if loc.find('_') == -1 or loc.upper().find('utf8') == -1: pass # Make sure we have xml files in a writeable place name = 'childsplay' p = os.path.join(HOMEDIR, name) if not os.path.exists(p): os.makedirs(p) orgxmlfiles = glob.glob(os.path.join(THEMESPATH, name, '*.xml')) existingxmlfiles = os.listdir(p) for f in XML_FILES_WE_MUST_HAVE: if f not in existingxmlfiles and os.path.exists(os.path.join(THEMESPATH, name, f)): src = os.path.join(THEMESPATH, name, f) CPmodule_logger.debug("Copying %s to %s" % (src, p)) shutil.copy(src, p) ## We also want to have the default photo albums in a writable location #p = os.path.join(HOMEDIR, 'braintrainer', 'DefaultAlbums') #if not os.path.exists(p): # os.makedirs(p) #orgalbums = [a for a in glob.glob(os.path.join(ACTDATADIR, 'PhotoalbumData', '*_Album_*')) if os.path.isdir(a)] #existingxmlfiles = os.listdir(p) #for f in orgalbums: # if os.path.basename(f) not in existingxmlfiles and os.path.exists(f): # shutil.copytree(f, os.path.join(p, os.path.basename(f))) # for childsplay we must make sure we have a content dbase in sqlite3 format present. # if we want to use an sqlite content dbase we must make sure the default one is in the proper location. p = os.path.join(HOMEDIR, CMD_Options.theme, CONTENTDBASE) if not os.path.exists(p): if os.path.exists(CONTENTDBASE): shutil.copy(CONTENTDBASE, p) else: shutil.copy(os.path.join(SHARELIBDATADIR, CONTENTDBASE), p) import pygame ## set a bigger buffer, seems that on win XP in conjuction with certain hardware ## the playback of sound is scrambled with the "normal" 1024 buffer. ### XXXX this still sucks, signed or unsigned that's the question :-( pygame.mixer.pre_init(22050, -16, 2, 2048) pygame.init() # this will return the tuple (lang,rtl=bool) LANG = utils.set_locale(lang=CMD_Options.lang) # display a splash for 3 seconds start_splash = time.time() screen = pygame.display.set_mode((700, 200), pygame.NOFRAME) background = pygame.Surface(screen.get_size()) p = os.path.join(SHARELIBDATADIR, 'SPData/themes/childsplay/cp-btp-splash.png') backgroundimage = utils.load_image(p) background.blit(backgroundimage, (0, 0)) screen.blit(background, (0, 0)) pygame.display.update() if CMD_Options.checklog: try: import SPlogCheck except (ImportError, utils.SPError): sys.exit(1) except utils.MyError: sys.exit(1) sys.exit(0) if not utils._set_lock(): sys.exit(1) import SPMainCore from SPgdm import GDMEscapeKeyException # start the maincore, we only return here on an exit CPmodule_logger.debug("Start logging") CPmodule_logger.debug("commandline options: %s" % CMD_Options) CPmodule_logger.debug("SPMainCore running from: %s" % SPMainCore) from SPDataManagerCreateDbase import DbaseMaker DEBUG = False try: #This will setup the dbases and ORMS dbm = DbaseMaker(CMD_Options.theme, debug_sql=DEBUG) except (AttributeError, sqla.exceptions.SQLAlchemyError, utils.MyError), info: CPmodule_logger.exception("Failed to start the DBase, %s" % info) raise utils.MyError, info mainscreen = None abort = 0 tellcore_error = False while not abort: restartme = False try: if not tellcore_error: # query for a session id try: orm = dbm.get_all_orms()['stats_session'] content_engine, user_engine = dbm.get_engines() session = sqlorm.sessionmaker(bind=user_engine)() except Exception, info: CPmodule_logger.exception("Failed to get orm for stats_session: %s" % info) abort = True break orm = orm(datetime=datetime.datetime.now()) session.add(orm) session.commit() orm = dbm.get_all_orms()['stats_session'] result = session.query(orm).all()[-1] session_id = result.ID session.close() # there's no support for other resolutions then 800x600 mcgui = SPMainCore.MainCoreGui(resolution=(800, 600), options=CMD_Options, dbmaker = dbm, mainscr=mainscreen, error=tellcore_error, session_id=session_id, start_splash=start_splash, language=LANG) mainscreen = mcgui.get_mainscreen() mcgui.start() except SPMainCore.MainEscapeKeyException: CPmodule_logger.info("User hits exit/escape...") tellcore_error = False if CMD_Options.no_login or CMD_Options.user: # we have no login screen or the user was passed as a cmdline option so we exit #sys.exit(0) abort = True CPmodule_logger.info("nologin screen, clean exit") elif CMD_Options.theme == 'childsplay': CPmodule_logger.info("Theme is childsplay, clean exit") abort = True else: CPmodule_logger.info("restarting core.") restartme = True except GDMEscapeKeyException: CPmodule_logger.info("login screen, clean exit") tellcore_error = False break except utils.RestartMeException: CPmodule_logger.info("GIT pull occurred, need to restart myself.") restartme = True abort = True tellcore_error = False except (SystemExit, utils.StopmeException),status: if str(status) == '0': CPmodule_logger.info("systemexit, clean exit") abort = True else: CPmodule_logger.info("systemexit, not a clean exit") CPmodule_logger.info("restarting core.") tellcore_error = True mcgui.call_foreign_observers() except utils.SPError, info: CPmodule_logger.error("Unrecoverable error, not a clean exit") CPmodule_logger.info("restarting core.") tellcore_error = True mcgui.call_foreign_observers() except Exception,status: CPmodule_logger.exception("unhandled exception in toplevel, traceback follows:") CPmodule_logger.info("restarting core.") tellcore_error = True mcgui.call_foreign_observers() try: mcgui.activity.stop_timer() except Exception, info: CPmodule_logger.warning("Failed to stop activity timers") CPmodule_logger.info("Seniorplay stopped.") #from SPWidgets import Dialog # #try: # import SPlogCheck #except (ImportError, utils.SPError): # text = _("Failed to parse the logfile, please contact the developers.\nMessage was: %s" % info) # dlg = Dialog(text, buttons=[_('OK')], title=_('Warning !')) # dlg.run() #except utils.MyError, info: # text = "%s" % info # #dlg.run() CPmodule_logger.debug("quiting pygame and waiting 0.5 seconds.") pygame.quit() time.sleep(0.5) #if sys.platform == "linux2": # CPmodule_logger.info("Removing pyc files") # subprocess.Popen('find . -name "*.pyc" -exec rm {} \;',shell=True ) # BT+ specific stuff if (CMD_Options.theme == 'braintrainer' and restartme) or (BTPPID and BTPSTART): restartme = False CPmodule_logger.info("respawing with :%s" % BTPSTART) pid = subprocess.Popen(BTPSTART, shell=True).pid CPmodule_logger.debug("launched Control Panel with pid %s" % pid) sys.exit() childsplay-3.3/db.dev0000644000175000017500000000167713271013626013322 0ustar stasstas# Template conffile for mysql dbases used by BT+ # This file is named db.dev and doesn't contain passwords # as we use the root user without password while developing. # For production machines we place a db.conf file in the root # directory which contains usernames and passwords for the # dbases. # The idea is that the DataManager uses db.dev but when a db.conf # exists the latter is used. # db.conf is never added to git. # db.conf must have the same layout as this db.dev file. # The layout used is the same as a Python ConfParser file. [default] # production indicates if this is a production machine. # Possible values: 0 or 1. # If production == 1 then certain parts of the code are disabled. production = 0 # the users dbase host_users = localhost user_sp_users = root user_sp_users_pass = dbasename_users = sp_users # the content dbase host_content = localhost user_btp_content = root user_btp_content_pass = dbasename_content = sp_content childsplay-3.3/Changelog0000664000175000017500000000200213271013626014030 0ustar stasstaschildsplay (3.3): * Fixed #53772 childsplay: 1+1 =2 quiz not working * Fixed #53771 childsplay: backgroundimage / splashimage is hardcoded * Fixed #53768 childsplay: PyGame QUIT event not working childsplay (3.2): * Fixed #53734 childsplay: Depends on unmaintained pygtk * Fixed #53755 childsplay: No module named pangofont * Fixed #53756 childsplay: includes non-free arial.ttf font * Fixed #53757 childsplay: only low resolution desktop icon available childsplay (2.6.3): * Apply patches from Debian. childsplay(2.6): * Apply FOSS changes from braintrainerplus. childsplay(2.5): * Total rewrite develop (2.2): * Replaced SPWidgets.TextEntry with the code from the SPVirtkeyboard.TextInput so that it doesn't have a eventloop of it's own. This is needed for the new multiline input widget. * SPSprite: Added support to connect to multiple events. * Added new multiline widget to SPWidgets. * Added a new F1/ticket-create screen for betatesters. childsplay-3.3/docs/0000775000175000017500000000000013271013626013154 5ustar stasstaschildsplay-3.3/docs/copyright.txt0000644000175000017500000004766313271013626015743 0ustar stasstas GNU Free Documentation License Version 1.2, November 2002 Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements". 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. childsplay-3.3/docs/license.txt0000644000175000017500000000734113271013626015342 0ustar stasstasSchoolsplay is free software and licensed under the GPL version 3. See below for an explanation of what "free software" means and see the file called GPL-3 included in this package. That being said, we, the developers of Schoolsplay, are also human and it's in the human nature to want to get compliments. So if you like Schoolsplay, we like you to do a few things: 1) Feed us! No, not with money that's point 3, but with compliments: send us an email at schoolsplay@gmail.com saying how much you like it. You may include electronic postcards, scans of drawings made by your children, ... That will keep us extra motivated to make new releases. 2) Promote us! Tell all parents and teachers you know about Schoolsplay. Write about it on your blog or on your website but talk about it. 3) Donate to Oxfam! We, and perhaps you too, live in the rich part of the world. We have everything we need. There are millions of people out there who don't. Help them with a small donation to Oxfam (http://www.oxfam.com/). You can always download the latest full version of Schoolsplay, free of charge, at http://www.schoolsplay.org Bugs, support requests and feature requests may always be send to schoolsplay@gmail.com or use the dedicated trackers on the Schoolsplay project page at http://sourceforge.net/projects/schoolsplay. What is Free Software? Free in Free Software is referring to freedom, not price. In particular, four freedoms define Free Software: 0) The freedom to run the program, for any purpose. Placing restrictions on the use of Free Software, such as time ("30 days trial period", "license expires January 1st, 2004") purpose ("permission granted for research and non-commercial use") or geographic area ("must not be used in country X") makes a program non-free. 1) The freedom to study how the program works, and adapt it to your needs. Placing legal or practical restrictions on the comprehension or modification of a program, such as mandatory purchase of special licenses, signing of a Non-Disclosure-Agreement (NDA) or - for programming languages that have multiple forms or representation - making the preferred human way of comprehending and editing a program ("source code") inaccessible also makes it proprietary (non-free). Without the freedom to modify a program, people will remain at the mercy of a single vendor. 2) The freedom to redistribute copies so you can help your neighbor. Software can be copied/distributed at virtually no cost. If you are not allowed to give a program to a person in need, that makes a program non-free. This can be done for a charge, if you so choose. 3) The freedom to improve the program, and release your improvements to the public, so that the whole community benefits. Not everyone is an equally good programmer in all fields. Some people don't know how to program at all. This freedom allows those who do not have the time or skills to solve a problem to indirectly access the freedom to modify. This can be done for a charge. These freedoms are rights, not obligations, although respecting these freedoms for society may at times oblige the individual. Any person can choose to not make use of them, but may also choose to make use of all of them. In particular, it should be understood that Free Software does not exclude commercial use. If a program fails to allow commercial use and commercial distribution, it is not Free Software. Indeed a growing number of companies base their business model completely or at least partially on Free Software, including some of the largest proprietary software vendors. Free Software makes it legal to provide help and assistance, it does not make it mandatory.childsplay-3.3/docs/HowtoMakeRecordings.html0000644000175000017500000036367513271013626020002 0ustar stasstas - no title specified

How to make a high quality sound recording

Introduction

If you want to help translate Schoolsplay, you can help by making .po files.
But you can also help by recording numbers and the alphabet in your language.
To have optimal sound quality, please follow this guideline.

Preparing the environment

First, make sure you are in a quiet room with little or no background noise.

Next you need a microphone, just try what you have at your house:

Just try to find something that suits you.
Make sure your microphone input is not muted!

Next up is the program to do the recording.
Every OS has a built in program for audio recording, however I would recommend
Audacity.
It's easy to use and free (GPL) and it runs on the same platforms as Schoolsplay.

Make the recording

Open Audacity and press the red record button, it starts recording immediately.
Don't say anything for 3 seconds: we will use this silence for noise measurement later on.
Now say the translation you have to say and press the stop button.
You may get something like this:

A small explanation about the sound file you see above:
The blue 'blub' going from 1,0 to -1,0 is your speech. This is OK.
However, the sinusoidal curve before and after is noise.
Here you were recording silence, and still there is something.
If it were completely silent, you would see nothing except the 0,0 line.
We will try to remove this noise.

Pressing Space bar, starts and stops playback.
If it doesn't sound good, try changing your distance from the microphone, this may help a lot.

Improve the recording

Since you are probably not in a real recording studio, your sound may not be that good.
No problem, we will try to improve it now.

If you have a lot of background noise, select a part of the noise (the first 3 seconds) with your mouse.
(Left click on the beginning of the noise, drag to the right and release)
Go to Effects - Noise Removal - Step 1 and click the Get Noise Profile button.

Since you selected a few seconds of noise, Audacity now recognises the typical background noise.
Now select your complete track (Ctrl+A) and go again to Effects - Noise Removal but now to Step 2.
You can get a preview of the sound with noise removed.
If it doesn't sound good enough, you can try to improve with the sliders.
Usually the default setting is good enough, so click OK.

Now select the actual translation instead of the complete track.
Play that again, to check if it sound good.
If so, go to File - Export Selection (as ogg) and export to a .ogg file with appropriate name.

Voila, you made your first recording for Schoolsplay, thanks!

 

childsplay-3.3/docs/Howto_menu.odt0000644000175000017500000004256113271013626016016 0ustar stasstasPKv5^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKv5Configurations2/statusbar/PKv5'Configurations2/accelerator/current.xmlPKPKv5Configurations2/floater/PKv5Configurations2/popupmenu/PKv5Configurations2/progressbar/PKv5Configurations2/menubar/PKv5Configurations2/toolbar/PKv5Configurations2/images/Bitmaps/PKv5 layout-cachecd`d(g``d``1J PKYܶPKv5 content.xml]m5~BeRPw{/J8K8'Jmhi/%Ҍ5~[yM@zFn=7݉\K^7zn4RL'׍uxq/x,#qԴ"/٩oE^)JL+]L+OY$i?ۈ{:Q8gώs>cTXNIkYƍ\>ԘәIwyy١Q5.+FQG$NcgPp/RZF"U}7 h)σm;;3n[try/7ByTQ.e|T%*NwÎ썞>ϥ7<9؃(RHC/G1!py7a FǶ&"=Rj ,ڈCBu{ ʨEt* ?kKx${?'9F9>Gnn\by''r;0GN1']u]T@|Hˍ2CJY"}|u!{V$dUx1VWmP .$<<sJD.S!Y'P]rfiU;x2u~yAV"f޸\NAʮJp(x R{D)E9a{~M|lZ*LcKŽY2$-{4gsa-Rϸnq .٠;@PKʼnU 'jy 6G"=9|?~ d ޣ*bX>CHX[7k/3)[HĝH*GEK|+8Ò"-f-]k&3]7~dw83i+#x ݪLZh?:#\TP8PS#ix 8@}xz@OG)1TQz!ڥꝭd܋B6c/Z0LE˩Ԅ]ŷIRhE?baTǃ^]jf#jٺQ~UԜD,;il&Ңf;h+74n~rä^"p'a*ՒPBT{|G}$3 ֌GES4~D)%T VDi`Pgcqӛl,fo0sq/S-cA$R?X"2*_Dq8lؑ#Wq3Ek1(z% 0bLZ;x\:9c&z61@ET01xѕiتv9HY^Xds1%Gx¦"` Sf抍~rdu@z32*ݳ7? ֣<ʨ]K΅Ez)@W"j su+CcCWkDg"0q؊BhdfI5EkPX" Wa?֔6dxpF/Jx>i#tq$`>]_th-x[G_jApZ `_ZI!Zs^Z(yݵ?,@h?ӷ/0 %WTrh,8*_n=kz]Ue=GV!g1;X xVUv %vLJ1M@IRu.Ui`תHIpi&OGo'Ĵ".*_1ac iA (pի9<0(ruRI }ib ڰ5WPp2|,o!ʡ/6mpCi.& EʥdeQ08L8\dͩ*stˈAr ln ]υ/x9(غ9+T2C @uH_-8VЧ*vJYuHŽ6D)fn  #NA| TFS6UIh&9z s m߼b 7imL܌׌3><_YψAaޒ1\)%mwО5i}#JVٿSrL҂XSRf>n #l*k  %) ?r$H(݃c#؜-)D)Fd<0PUVt1Z9ಡaY~# 5q oSu?J%6,eVdYa6nk -2K. eVE0QA}EyJ/sZ2yc9V>TYV*ezj ]7gml l3<g-ۑv Q)N .jSN`v eQ*bhJ r߫&NyoORSYjUga6oaG@BQvJ>2) OŢ(G;ԽzLW?7T19y)-oܙh.> BUj8R: $R5Tz@~"?\'7Q4qLAiʡFy־;Qi"G`K]R==FU_U˱=hJ]nn:o.0Wi,9$/bl8|sF>~㎬ZPn ý00||?>fJNveXٽڲzaMpA9 t#Z6 ޟXg;<^-5 ?^^? ZEk.a`;Tkbc_?QU\];(c&x=bP>w~q~qϱNizC&=sмSREΖwPK2l|`PKv5 styles.xmlZI6W*m˳n<h4I-HK}IQm, C-Gj޽l!RQQ<GR^D_>ǟމՊ&d H=#j\qVT9Ήd. ½<ۭ܊UW2Қt_a{ w̡t*񶯰+WxZ 1ʿ/Lb>mf(zfր(%\i2"(#ϛ3!$^K"{k|UYΈͺ5Ieܰ̇I& esLGh*m5T# Ƿ#;ޞeJ ؓ fIq9 p 1i rж}Z O+w.m|4O|)X <[N>F@KAu`IMK8,RCI#|'U _q!o[xSIomt3돷-]^4hM8RNmRg0&%PDdKV^sq-q$oTHD)\ b@?.-01Q}J@k' A s( `s&i[ oA R!7=0SABXbSd.0@ДNJYaűɬ4_{i\.RgABP?ӵ͔ZAz0@ELtî kJE u/ZV!R_@ mapk Y#<¦CO^:,&OhgzFvkΚZTO}MpK/2a(1D"eqi gN%Otn G% q9|Bqxx;5%qx$OseT,9_M4:훤iEqjIckrT*;byE ؋P؈ ݓB7 rBd}HrT| )k3s1uipz)i|V A4Es3пN_"{Q(Ȃ=j8!sKXnRʱN2xzcF 4hO2 VYen̶x.&G0nZ mg.w?H $3*_NcgS $vZ5lc7(X0T l߱+U}:X#̸pakI1Yv%Qf$aT\v xMqvo]jmjd*:ݱ x$ OpenOffice.org/2.0$Linux OpenOffice.org_project/680m5$Build-9073stas2006-11-03T11:06:30stas2006-12-29T15:55:58en-US9PT3H39M37SPKv5Thumbnails/thumbnail.pngyeP\-apw =5e-X~߯ީs~tuuZO6&9&&o6eg } Wc"B#S{p+:EQr,0LRߙ44K ^:=E6V7[?_5N՜؟g _J9%{}GGCL #ĊzN{t-kgN!۴ =Xd?k^|~w; >>>݁.;[u& ;V՞U7/59#L gE=?dܵTΫjuM;ǴDMưV=_?wX0fۨ=x62=O9kp&P rdq>v=)ndy{FH;FSdD rpQ%zoW^Rd&j]ק_h҅ϠU[ٹ䇅TCG[!#з*SKC[! &~l% ߸emqIɢUY:] nQG-I\pYXq9Bt+]h>(J<~]7=, ðkrM[ȏW>m0+ k^cѪФG:zJifF-7|+jjk5_{UK׫Q?iE}o87}nχey>nS2$sbvX|, MkLzT3tvŝ; ^xp@+qt<7gF9ڭZMv׃cEUY r_n-DOҧ,2T}V/Ye6 ?-8#k[c8!_bwx>HW&DWp`^jvtTQ٩҂d:Lxf.Z gZoⰭ͗E}Gf_W7NxẾC2ݧ{J8[jդ9X^-K"+4-uLEڀgS@#С^F 7=~9~OFn|M2Vcp 7ْŁGH'm/E0Wg\Z\eF*a&<롔r~/[4=ݹ-Kv]t^5m_8#nisH& >gő `+zԠJPiث F t߱ƒAJ#9&\Hrj=@t~,nv"{W;7M7RjdVOFvO%@"OOހu8u= ܥGR1ۄ\H&#/qaȰ B`CO #S7V@Kc/䔖?;7 (~1=zڙ~H`3@l ];qZaMxxFdKJ ?[[+XAym~??뵝6U7 wX| b8 }7¤=fȭzvzv [g:( Nzw`&e a=k\Zd=譁]IFJ&& 0̭ɭ\_w y?iq͟8q$Y1ɸuNg ~:q{,9L29jJY@Y썤trt,r.q;zs=Ю/Ӣ2tO;pVZcgF{Ndtz [%FhD  L9/a\C6GsUr~EBbo5̓"GS4%+.C (Y) S9hBo0 c7ҩcT G,M }-K5ӄڎx'[}L:l$|BJS0yQ^%3ٵ֒TE$7Jp+E)mB`yƤrr|hd7i =/hްL#1(f/2@vNpHש1y$Y\{q ,~i ¼vBo OIYv-=)-s3LNWZjsbkZ!ԃWՃuScz^-9SڄO8SaOg#^e0EE _UtU\|O/+m[TITg2()HpDEqQ=~><Jp7kgfz2g{OoU+(C-SI#I汚2鎑bC.x4KZ- ͔JK+E\eA6KW`qs0ůáVSi&.*^{Ƅ[S}<:h@ռˆC!l$u 7R`#?K%xGp> ﳀRXC We ԣSVIyLlU߭6!ƯP^5/hݰݓmkי*fr3pvBV3\.zyeT7+$2%aB e<0QWlo&NMz*kDF~rp twb&5IM4`.0'bZ#.JDїs-E<@P82]?td:YBá<&_ ~BRPisluZE('P0$a>c|TL{a*{4{z=79b$6zAwM|04Dgs:voԊ_8ZkLk{l"W,@/CdyB8SܴMٛ$O.s95dG[Eg.;=/Ü)vou\dg9$%<wq7?%gkpEV01'ʅ`Y9G?OdHZ[R`G ܓ>F3>SM $Ѷ,mG|"Vj[ƃvTړTmp)_X&[P;;SԱ"NlZ`[&ssU\NH7X.0JJ!rVm7p;X sѕ,8hI yd#.b$}s^Za]C!k ΀N$>2J!w<~PEw[၇-5i\1% ZJ2TFqv-vm0TH__k(a@ecMf!<LBr @`nܖdJ8 H"jA k%t(  Y.ROKcISB c dB<7' +rR{a!H.1M)Q23ZǪ?/<撛t #*DMwoY/qIb&"D]>Z[^\!bت"7A!Ԕ^֕~;R C/Bj:p[U.>Sv1Đ??m`'$ȘK1 DxC֒2GG3OZUٍ&1~mDw/f@tYֻ\?ݠN?kl`OfXd_~ dp'pfPN{خY^4h̳;VN/_ ܒ[bsE]j).:\`_x֊u){O2vOT幻%,u\E~q{=/lA7@Rzy3 "]5%Xaohz=V.aU ѼM{May◭O[jܭgv'nw~qTa`?YGM w /?  ekr40UWev?n Dl4ڣ`k8Y qRrfsFyIi)B3LoJ~=0 sAYFzYROƥK-G׿g n‰u}bu;#R\s1$;X"qlT~VF`B9*6Z{^>}3HHt\6՛\bdIa>9Hۓi d2uL[#ChŸ==ڭi)pЖݹi$A 7寶Mjsه27eI66c~+=i8¡$_=cBYzFn7L|^gF+׶xoQSoslq!R HՇlT|e?PLtj>/Ib 3#&E+E4][RȨ+82ڜBoEG(&'oKr0gSU c<ۏInBEz~\͊|a4NXA^P@-r2 pa0h9ib~[_J jźx?ɑ C %1JLx:ɞ3*22>߆PBVw;#aRUD1'X7ͺM * 4 PKe.<PKv5 settings.xmlY]s:}"wW&LBǐқH3 {Z$]ɐIR=Yi{ή|eW*BqkHoIr}iuY@+ Ai:B׷^*E TKTK-L@lޏnYcٓ˭:iU| +o6ӛ{nR~{rWPKOPKv5^2 ''mimetypePKv5MConfigurations2/statusbar/PKv5'Configurations2/accelerator/current.xmlPKv5Configurations2/floater/PKv5Configurations2/popupmenu/PKv5JConfigurations2/progressbar/PKv5Configurations2/menubar/PKv5Configurations2/toolbar/PKv5Configurations2/images/Bitmaps/PKv5Yܶ -layout-cachePKv52l|` |content.xmlPKv5N3" Fstyles.xmlPKv5M HqqPmeta.xmlPKv5e.<Thumbnails/thumbnail.pngPKv5JJ :settings.xmlPKv5O?META-INF/manifest.xmlPK(3Achildsplay-3.3/docs/Howto_activity_CP.odt0000644000175000017500000011535713271013626017274 0ustar stasstasPKL/:^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKL/:Configurations2/statusbar/PKL/:'Configurations2/accelerator/current.xmlPKPKL/:Configurations2/floater/PKL/:Configurations2/popupmenu/PKL/:Configurations2/progressbar/PKL/:Configurations2/menubar/PKL/:Configurations2/toolbar/PKL/:Configurations2/images/Bitmaps/PKL/: layout-cachecd`d(d``e`28%&:* \EV"ex`S@PK!1]PKL/: content.xml}rF zǡ ]=Y׻Ć$ @"6?/9y*R5BUVfU*3o}փ? Vy~8:|c7oQҋl$´Fa 0WY^FN'3e^Fc./i,~sj\:_Sӏm[g>25.~cl H-~ޏL?~Xԟk_i:l'IkrԊA۾h[ ۍ8Vݲ۪H)|ضRz"6F:sTM+a5Љ5.3'Wv%49oZGcaO[H%pqZOV6~*Bswes \hinCxe>""YAͯu[|p70I0LZ0zX> '8Ch|Y)#?.pfbL¤7+px;FPމ_Ϭ['QF~0:Gɷ6mܩut7~Ynqzrrt.&KA0 )<* ;ŀsE^{N DY: v,]0; Ge@Gx)Q{}!(Nz>> L*>/.*.}Owi"Awףq7N,gR}'Ywg; IeP'Σ+';Q;'E=]<>{ yL*kiǭg{*JuXƝz4+i Mhei\y}|WOJuX5}O!ݸ+73Xڵ쥓S]Lz*a{tKwb/h?Ǵ],>i]<>ޅeRq]S\;rOos=]A}Gn<²4n]ZoFFB;Ta(Ň(M1.Bn5vbg;z0~4V2' n= BOuk~LftuwD{owi)7we/1z5_ks-ܦN9W Ce.$!Գ֋o9fP_׋1k݀7GBܚn˻L6$(9APu)E+7òs-^79soP5rjjέhZWu v݊`tݝ!QD.co[&tqq޹螞DI_`ࢰ6@jxU$nGs{e<;?@H QW!z;}il;}sߋw7Rw#1a(✯9_?Wn#p{l_HĶ8H4ؾnFyԉ6q-27R ex9t)C*@7ݍ45EqȽ޵{:\w{:ܮȲ|w{J4玳'mޫMo嬟Gh3ycG<'clFj T|JPz]cYf3e9eO > zQ K^R4X/d)ThY~8ƴH\U =wn>ݻ}4ehJm>JF^w'qCH[гip9{CcAs0&y@<@9,DjK|:EE{j6'DeflL~ZCU֯5f Cߌ X8_4;XxTY286=9>5_ vF :Mp, wS,; px(}3w@ Ope8 K7"(ՄaLe|@e7o!,A!إ(8&FǸj>34.-=/h(C7|pbw-loxL1FٛBڨ;ViۮlBzsDzq]’yٺĭkʏx u|LcŁ|6E`v{2a֊A[^`r岚b%ogugXWx[' ln`,9KGj05̉kdmbD .g$8 rEpY"41BSb!j85 jHX I`'qquJL9`TY7ׯq ne]hw;`VpȾa)f Hb}pQ5B'(S{ $s~Uۛ@VjeQ=I +HLPNRs&&1 }ۢp 7Cw oHf аB!< 8!4'Ð1٨(NO/s[^IаD51:OxC$>hJ~j՛_m~MRYbU NV0G"H~HAMFiY Ô VR;V$Ž-o5F!+Q 5$v8%^Ji[|u8Ņ&*4.IcDgx/' C4y80iO̲&>'}/%J:+eBl@L G h#}-.E= GN ̃;n1ow Df#Ia$W0Z鷊,AOQ.h|Hy+cZ.%ߔ>/mz;3V3&3=KP+ 2єJ1x+&i_% Ľ>k Dʫ߲(h\,\6N gؔFb$/s 蒈9R ]aiCA`!:tiϮG2OȄ}v+ќVuw!ON_ yj2gZoKvz{%ϮG]$BHw 2]I`/X!Fy/煥\_BKk‚5FI Trv{ZǀyZπ(]5،f~| 2݇Z]ʓkx*|ڤ. Z֏;>2Zy  5ٔBmށ~ڲ&I6 &s\9 m ADq*9R4! s:t1y='u,y>,u~2{,o Ն%HD)Å>O DJvM^Ѿi +h 2@Qhz+qa4Ub'6O%jzYr+ <ͭ0 $j:4Oy-<޷"^4aPgD)]T4ι\Pt?h~YAcmu..iQWeK *XZq%-븦u\OzC ;Oa`yX~$7KR,@b]ꉡMq[kKi `{v"4Ƿ7v~*X׎de 6rUeb#ϢbW]e˹_4 A1tSC<ۂ-ù&}Zw WpM/XxF$jzH ?e[+P0II.c݉ѻ"?F}H!th `F9XR9)GͺNN!8^'!RRA (EǑ7"lXqN yo%>M謥eL]tz_b.+(NsU 0@˺5R! v A^ݖf|5qdSO`Ķ!%ѥ9`,(n(QAgwm\^FDB1= GvWα W- 0GhaNT-9W P`u֩(KUJ*iMts &½_٘ ]{Ha}ߓ#i<P%pe2RX1BxJ-La}?}ݧ_~nH38dW큟i;^ t)vEMQUv1dJd&{o{Qn5a¢#d:jDy}^9sTP%4%-b\څĶF>Ɨ/cv|h BN}{ò3ԯ S V;ηaC-} KC?&*p0æh@wOCJ/ơ:%*L8tn8x\uLa%;pt<ǗWjN]26ݕ.ESq8K0 GCue_hՐauh,؞^*AݘGZL=7A9RD:Q)2jeNzE& v)dSg\Ccv4ycP=kx`4&"DtHcC4 S==L^F-qVetEpD`G98=?gXh# FPu?a憰1r4QV/!AzTA;D86T&g _'lҲ~p$XL)K1X9J줔ZUفBo1BN6{Ζ=gzY=gB`v5"ɟi81Mp(b2IksBAŌ"d#@! -Sh3%BSpJ^F#K#EhG6EMWrV6uV2ԛ{;;:uՁ9WhC{a #?TR=!;KPXƿe0 TbAy L8>1? paɌTertbq u J)YpY"Ux)m>d?*="A{S.Qw3h%:\Q661PJ/aCe(7R4ZLЀC_,8EM}l. U =~7:ö$ nHV8H |=a;$s4q,RM`VKLH,>:cY|,+<@}iɴpI=cٲ±ì,2讎FR5GkĐ&((|@Iɣ4r],GTjF)z]YsM FJ7幨ėx*83FH3_d<4Je \˃o,f`$._v)!~."Q/˂7Eu!4,8a 鈿b=8L0L,5P3(KKA tgM7p02i:xZ;rޕ}nw/ OxR$&v06d݄ANRq1(IT 8Яb^ƭ.Ӝ@n nP($v⼽yӵ*#UݭX~s-o(^(֢":^VcpG $TwaP]gT+C#I Cke! Mʗb宱Ld}{~]G_*LB8osSiz@S*XHV e#o6ei[VjWh u ؅=}tG.–V+O(;n}`8J9+d"~g傜ytf!X[|y Z n FnVD~Y5t$v# ݏs;,bP9LEZ<\z* 9kwc3 ǭ^;عL-XJ.Rx.>9,y*]w& aV.@Z%[-A=KÛp@ zMߙ\SARAgfmRJ" "Afჲh9E~fNW8I ^DjVqRgB $.[<-Չ 8Kp\t d(0FU%Śó%RYDKy(SgPG\<<(S;xf]C'hU_,'s׌2rߩ&;ueeWD=N O i;kVn5 Qհ4 +> 3\$&XkYb,&n>U8fΆ `JKT c&)drH~b<-Ɠ"Sz /KQ{npu:R0< IKQ['>?52F3xڅt X'g9_#ީTui7Oٜ6d"-0(-t _1rYU?0]6QB%2;T70GgIenC(ANd ׊|.s~-< 5یjr1"+@ߖ'(4[̝yT{D"Hp,3me\.b[5_X/.9*i/o`#[aG,tǤ4;Rt),(LL y:V%2uj;"X`İh9R⧣SDFGXD?-&'7,ʻ&^ȳ/|_JT6<DU 癮'U,I^{Éo\TOt~"Xx vKԂޱXQTp.OtG V(N,ߔ[l}s(,̯kk;*8%%(nTUvjzbXk;+jwdu/ɲkܒ2한F­YNbPK,%ע4N\9Żng0mJMSktk,hT5^ 9WsM^s^_oLl.LהeDee]5yI:~N&N._Q[ U:ˉd5ؤPڽ66wvwZ8݆NV fOdҡh[wE47ٲg> l?VTA+ (YxS,i47O*eli@x&> 6:6rӽd{K!qr#՟X`XYab65KO)T:A0|,EQWY/F_d)!Nي'[v8Hp:eO6_J3ʁ-EHzD88zf}G'cW ƫ/]Y mi^`dے{ʽOt=E5$I9lIFAD e Kήs:#tN'.pvIP&u}[CejZg8طwP0(Lh!c9'Q~!EGxb8heJ5vpEjBͷ(8}١;Q \KiP)QBL5*J[\,h) ĶJ<6d*iuv|N .#fX ]M1!UcRh+Q'Ѭj-ED{X¹Zi QN$]"-a`ard}d˳dRf9Ρ+y$,Plg3R?22E g5Br` ٗK!a5PD3. f7㷞%Y(i.*΋}0uo"y g_RQC 9&1؍=m)!/ 0F .F-J1.AX$$`W`} b?XR9iR'M: dI!!s"auT2ĠŠD'YR!`N\ڎ_\uUmUۀ#:KuIFuɸ=qtI.:[$nED+|Z uZ0By!]0%þP$PSYp?m Ay'IA'uomyriz>Ի2s@ȍQ M->T,w=OМ󇉺Wj`U *l VEʉPkbuq*@6;^$_L͟əǮ:gqn"2p }gH4s^ߡB8-`;s)5I î@)G n5_y7 F^ѻD{HE&LVwa0h7c )މΔt`W3$۽bTȗuG+]ol,> S?U BF 4vVrg~[O:>%\pA&D߫Lg<eE{aⳄDb[$@9D~ #o_4M8fpMpj-STkyjS(z5A9ÉȾdEɫiw OtT,ZBԗѥmH~*<R+hKl7gå6T 1S r|$߆x8f秛ۥIKhdW巒 ;X)K:^\<>z bp6',{pZ *鿖qnH8-&Ɠ{+1PFde!"Ma覧 3oĎH+scA^-I plo%I>F[-s(4_-{"%2t =Sܙ$tmuH>lSwvh@k+'ZhjU]>2+͢ȒkniLi-lkOU%] Nq,?.Oʜ]=ΊMVjk6=OPK /PKL/::meta.xml OpenOffice.org/2.4$Linux OpenOffice.org_project/680m17$Build-9310stas2007-01-03T13:56:07Stas Zytkiewicz2009-01-15T10:37:54en-US21PT16H3M32SPKL/:Thumbnails/thumbnail.pngS%\]evm۶m]vͲm۶m̲mkks5b\ddf ' /8I _~/z"aKQRDP#Jmx=N=TpL~E -^~>l_y*}tHLEJDRHJ]J{cg4_Ͻu&Nn,O!H\JiJ} nGІ`zs^,Q,AڽD'+r @ )~#KQ<>WM6v}?1h4*š&;6Wje6vaH4q1C^'B_.+^#Z\և>%ug1mkpF_3Y&eg+3C' 3ߚTʻmx*c/.tl>&9r E&aC6s۴iZErxYH\O;Ive!|"4#8?4Uc'3~"˴PFwGii6T("sLgؚ0\pqqb 79 |s|Rb[ 7dsS&lnp<1F\q7_LUI𼭪 b8Wj|5Gz5q|;ȥq? k3%5Ua^lqWi#ɩlȲ+띊_ :#:KǜdpVNGn!RiБUS<8Kwc/s%sh#U?+ÚYNJ:sR{B~b>tHS{uB 'nnUF]U^̩ΨikU~J ZjޱBGMA&-'{w5k(o)4D }b[=! @0yU4$ϱc3Hg*yC 2l|I gE9჻ ,t R< PҦtr( **}LPu^(i]xȓcBl>eG8]`nY6L9ۑQG%ߕ2,&GE*4o,?bHP{iRUv!Uboux-:'~G\ݟʫέgLmVp_>'l- 2qlkkܞP6yHѸZ)H~߿cohDu`_ȵ=%1._v9dM>]>R|{ ~;U+Ϝ7:MVᨐ!d%ji pq uleٝC*c[ xx{_4P=jh1z@tfA$%rzi/8; :}Y%;I?sl/!K ]DbEoKlGp6eY(ڃkM֌b}ة?s" <8BĜs9lTu/F@6hy>qnKpQ0o17@ߏp+?Ji? ^13X*c'?Ske5;  qj"A%W]b "E-fЃWBJ3Ib<'5܆`Y /3zG7*'NqV-̑w^JfNޱrxI>AYf˛15"CvhXjjg^xvr**Ļ {U Vi:sbktfE#+{Ir}<M a}^yEQ 39UX> n`5莹z6EY<݄i,jS~뙓cXĘ'AX9 2?ˠ繻8}RJ>٦it+Nх\'xdEȗXɮwg7|T=T$u{dYGrTUbkc6D̰-]23m p2'Wc7#|F{mDZ`5eɌ}MM= l0j 3dJ⓶V}f9`bM#(Yg54֝l 7SL\2 <h1c[֎;o 9rT!֪DpT5܌8?-uⲣ `pn ǥbW=m"I7 8'FI5x^#K^ vu/:?\Ax(K~:-ш +cr+p?EP6VLarG㸃X>qk#% P$yApNLdZG`uA<9d78VutBLeUl o i_/yUR'rC:jO*7k.)]&#Ô#jפ ,Ʃ/KQ))YN[6>-Y` ߟ{ҹQʋs#jNf,/J~qpIbs/Ȑn0NΟ U/39?*C ..Ԋ@|yB}b4F/m6.umkM~/NT6K^B8ʄ'1c)fYzSlitpCΚek49V.$`cj[716N=cʏ/a7&X&tqveVMh GL%pn[Ǥ30{eǽyF0ԣW {KD1Cđ(7Le:헧٤k^iL~c<mے);=TPj(QwX̠&_>>`\ QT*SѾkԻx5D_WO޹%^ځLioc1Yƙֵn6N"4iҏkxҔ{u ]T:F]zK/.10=#b"mZʙ>0:N:\z~ҍ~;|Z ;4$fBէ_܌9"%N;g5p+fP'n;ig58f-1 8F N4~fnwPtz|u^ vTwQ/{{;=S>n2F\=NX/3n8"v)e\ؔ'2WFHZxDUBp @|C)oX0|usEYpn:oF^oʍ ƩYBg ioQPU(MXk{UުYx, W$\tR3QA?DvO>k&R;$ y2d99X7ytSysoF9IA|"teq4ȍ,E66HFΓHŎ}W5A'T#$gEE1`$ +6ް=O+CY(mey5()UO4"j_8CF" mJsdL}aȎGo,e`ư1l҆yXw(N=/03=Jvvsww&"l-gm:0*\Cx9 'HҰ37 -GA]YӀYD츊uT((Kz UKښUvl;AV*רZwل2 ]h-#%҂sTy4[7טZ .kLu͐ siGQ]mld ѪL?~aI7 o6eougY+ʥΨdi*_޹Nly2[sPHikA@udedl7Rx|\>T7+W[5K)Bv=>=n_:ʵ2f%UիmK͋u1]zr[t .rBWiyduqt{t2:_LL+\.4̓-}k;3pk @r1d{|̓w:r5147] %̞`gSMp 6J*d5w/|Vw'k͂?hkjMGBp7Ho R؜Fa\q򣥦*d:u{9BFZ Ep%p>>,-I۽Lʉk{l l&*)<čumkRCrVsniYG*:6xKDN]ӝS!'}rk崥yAA r… /0z4PVe"yrac6SEq+\n 3]@fd?(4;-+`b IxNR4nRf!4:E  v o?>eWI^^o!źUXޭP)9rގ0CKwC]ABJ(2<5%BS6̺Gq 4זgv?ꡱE+@ stXMӳ;V,RԱZVv5_ubvsrspD]~˞{QB7c?4FƮ&JS+/>fH䓴$[PTcvNZ05y~] JZg3Эdɦ%r`KC)mH~^0a_ Bb rwxi1|SF5$iqȫ?\~f1w[`j(:Tt%m?q#4f~`a]q@Dh|=0dѭidP삵h۱nl#q  ubEVƕcpʼm{˚Z&0~(kޗ?O[4@/jD.=a;1T \u0He/NXZHPx-lb<Ըe΅lߒ/|W V'5YRjżN0lPx8}u5܎4 %ObΰA)>EF/գKfQ±S2 tcE]jv&Dp?t^pd'I4w3HBdZE$PK H&z aEͣZb T dFy.zg<}(LwGtgwa%\_XP|vvoE=bᑁL?CʯKZ"qVT"MoqO 5G`Pq5Lu @$Yz[\?Xʧ3"o0438.F75+Ąn $̥WVk3Wj\u*䱧KjROUA?ʛVZqAkԌ W<*jڥ[$  IcxN ߩƶ;=ptPqMUxv3rO n _eCڧa- RBc0&LZQSw=Ɯ=ZU]qgUy($YW^u#LJR+RLsUQgФ1\ysV>j*0Kܾq9%@\I6MVd<҇A)N2 Ye@o$8Lλr"tq-^24Q!cK= YއVg_CՍ6oיDR= t 튜LdE87._T1kG[_ũIgÒ9` ݾyȇRJr_1WJinj~ep_ ݬfΖyhdU*>nv5_`[0؄W]k= (7bםE59X+ fmh"9cن=5!`B#;k~8\7& s8ho|1/c ?\lRBi-ak&_F!$? $*#9k"d.?g`8c6΃IzT}q2$o.-,DY |b},%+ս &605'bX>HT!@Iz2> zØ;Zr\,p=zc͟F} iM#ȍm1jʙ3igb'91dX(剽j*Q"3cQXmP 1?5|^WZD&YTVu'.ϖV?tc͛A$vV=xhXtr eJ}\g{1N7iJs`瞖2!yx<>6?Xd.%z^uH2nWe|^R&m)ee#7|ku>ٯc _p:kթ߬J[ d~.X`8ejKp某c.' f~h ]\fIlW.ә?cL,ضΛzEUs <4SyZ2U i]d˯uē Z!:NW~wc@ ~~/@ϻyɾ [wT;.X'9ICa"UB_0Q{zGY)s 5,[ţF|dOndT6%颠;}@tc=SKf y!r7[@=-}OpTJ`NJAڰ&;>?rp9A`y7>ɹ'wJV3DEq+rh1XI}tj5xef4nj9svE0[mUz/7ubX dplA1<{@=22}lDC0w$pYbw3ߜZcnɸK}KD[aiذW"[K:gEId S\R+o獂gZ\RCs7D;R+jj \C\ZD(X!{ n)ꎍ'Ek4AwzCJkc|5fǜ|bY' |,t 9=IbcbKAZIRzqJ M;X^H@S{E [dBn^ H_rԴ!|gK[oVB!S :;IW A9H%oضڣ@&Y!ڑ.@)@صGhf,i?.mQ)%h2/(16KPXQe8y tg[j.?̔kA~`7 1 4Ɛ{ Q)=u[Àyq%1ѩ_p!Uk w_ I0ΩxZS/M#S[ W4e|`B 1UV`Q+୳G1VjӲMmMZrbv zfr;)xH 1ߑROF_tDl//g AdMd E6H4e)6{t*btq[ZO/*y8zt-;xQA*xq@,GO=- Ѫ(@Mpg}TVloQRfXM\IB ݂ɟea+g;'^^h*3Km{ؙĕmXJ(*!pM"6Y~[%ja .4 M̙:u0 _i;sE_@Ug)R:+qi8uj^U} tBʿu'$mjHE[RI^*6 WQWˁ-n/MHsCz|x{<.>k^ nԹ4ECrVƁ_c"q F|7pG'y ܫEkqW֓4jW|=AFA1:;PC*ʜ(zs_ .uw zZ3ABY^GsW('iYQqZ Ք”26oOv9|;yԒ#eB_G9wWKsWۃAX Y97rIc,uf_?c+}&UI"x!;(uROlQY3ejQe/|"u ڴ6h'R8-&J^U>T%[uW[xUJj'#_Ye1ĥQAjj)U-՛ d6EmQN^:. %ԕkT2[[ *R '>O?$'~t?D 5c) 9YdN&t/FM}:ss߾\Gc!;ln5Zm,/tv"Z΃+'w/ \CWYEf(>68C-K|w.>k$h @Xt|$(hfoTNη~P Łۈldcl^]/!c~SEY{ʆAz-j4 C~|zbG[0ep3j _f(ӺඎX&e2.#2sΆ'&JD)N&-O]vij#(u%fcBUJx=6L|fɤ ۟.*fIYvHZΓ+;'Z LdHZ%&$laa]EGSQsXQ> :Ce *@ }qfh|t) w$ՀdpN ^xvutUkgsnqМC;,lb>Rm6S=jw ]Z>;OtV^0lvw[D2j HF2] xqת#;pk؄/RJLY TB$ Ext(ꏫ{!vᭅ9s޲' ٛ*jwDyv0~:@ĻeS?[f:M(YΪsʾ3۰blss\2bg03I<10DuߍB,slըU[9ҳB145?{9U ,]zv̄:a0`]LYUH m-2ϾEƯE \OSk! CQK&o'u5^M]V+X(΢wAl``Bk0؍?ڱXKr/("¸H"ܟZHdP104-ғ\)mxnnY'؋aK]J|oFVx!V12WMs;KbD.X5X gG|}xY s7dGU&r mkvTt`_y) \ !=~_`LkL^k6;L>9ȳANĆޥ,&4T%9,o6uB_ZUm_2FᎭPIF*"p7N,0/!g-56=Etow)PO/\ʋ$@3o;ˁ8cs9T)v'mgIY9BK<*;l)Ss[n*_ IpBRԞH! x则{bX .z#HLM 5)E-ϯ2rh Mt֕-@A}iRVDۏC^:vx#O 3*jgj%%jJ%DyCFknzė}Q=ltLex8xќFrĄ'ː2;3Pr]"9-c#\1zϘ潤;NC`2+6VSP[!0ef~2oAՂw1j6](]?phLiAU&΀~'γ}+:vgz ‡8Rq5,ެ J VT'5}5\uí~?87b>sn273Til7봁'bFyWJz*SAvx_W"%=F©#^|mWǸwt/[{ϊ5pSg#<>gX:Z c;_iMm:9aTu!كONjɬ=P"ir~lw sʍN33m$MwsCtƶP')Ga9݅SӎG7[NGwnh\Bޒ[+U:G:gL1ma>/ޮ^~X{Slpͣrn7U[L"YrX!bY m̓%[U5PARE0: Br3u՛%ϔsLkD LkMDV2( "G(%%)tHG7]GH܉ "H#!!q-J!pG7JJs8}fygo~ڝ~ٙm ݷ)` ǘ*!U!6'X_!XmƐ^r28$bQX:}0_ SDAg{מXs "u #h!##R)y x!ÂoB~?eת=9.漺~cʱSSo.b2zlb8c{n6n0rgi xc.7#e'^=ܨFw[KqdU$Tbڪk\NѪz_܍X~Gvi[io;up'`  -[Y/U^XB_\C:'ref _o*U,_uzH/Q0nFh*J2DL/VTl9ģ)e`&Hݝ+l2:%ۭy艹O~j%aެDB'7ŧGS~Iy@[4d* ! =cVw V'0V4:Wn['M: :2ゖ$9}K-ttlzt生o%_$(dP(kp~]w&^Z̊HYAvkN+0(o7II7@V]č엩ܛj7;'phiv&K+J&% ?(*^W-w~5@>fn|o;lJW, XM|^jCk2zr2ͺKjF+9DE2I%tE9XuCwvXӥ86>4Ag]0fgt 5OɐXs2 I|Q痦Aݵ)ǰ_cb7Җ78tN;*ըޗ31ˈ5iYI BA!Tk~裳YX8x}tJP |ȥ @{ xJz3,~ ێ:1 '.h[W:Sjʆ~ z[OZ,zJ+ɦVVY.0ʧcV+uav qʊ|ɴ 3S8Wq*I]gPJaO.v]wY@CB[_dLSK}0p1>hXgQb+Stf I`#r`uHrK;=)~7^ V%LzO_j H |96d͎cn-7+e/fZi 5DoXp2&=(4DQTrϸd6zיEKkn;,ݓNr,%)j NK6 줙9čk1<\j/u;ifdWa \^^(|yBku`,T!gcvq`w$C B+mfʥlsFGn֋>;F Kv*/u.Q6S1DqbI0{;Ww2 :93_[%_pt~烁nL%(K?L:JS} Φ>ޠb寚*OyG NP#*99degehy ܗKլv$~'Q+H#fHSW]W !W!oG6 /~ϲf粬[[yj~MM9^[O)>nrQٍDMQk'ɯpM~E E-OY:6a.ۍ3r}G[wD>!j ?gsA֒Ē\>)cW߫ H>t3{LT!4-i%:#8gD0QzBdTPWtzQ`hxIj C |]l&W9S%~_n1῿;@bzF $o!t'x=EҪ&ݼkLsYTԎ͸\-|{1 \brd[<64W};]{ҏ Xc~J"NwpS7bՁ9@ɚX3oKfNff Okz+X g0"upM]W8-%G#HRXM|qvJzQx (_x#Ml/T >lЇ&ּ5N9ᖧg] h`KAW&u*+}.T-MW;2"#n%*) ˜ZJ=&]]qcn]+I) o\=/WgN־4kw&]"A0A J\R#1[!@ D@ClZapln^u{]i+]wh[ T% [fatFAFO4p\ʻϒ_pO$l|4~@ۯmYѾ={\G"[;{Tr]@|01ŝ[ڃcqKA?JK3%>|괫27Ƚ3MeW7Flo7VbVkz{V׸LRP2ޣ Y-?6)a `C7!eܢOo9N6kp*d&)Nxc\Yjj 4|(˧.H`qt6]L͡_RgOFb,+߬mKgHTs穢6pkeA@ZVe*3_|EJUݩV74Ua;dC=h)r_ĄymΨN&ګ(b4 mt3:ϟxվ(n.*itv38_ g k  cK -ome ̴QT*+}W8CEu i!Ώ"0Py_\>Dr!#pΨ>&VGYŰ/1:=Oʙ-RoKT-,-"3ts!A½)Otж=qg6k7N>@'MtUkf6>>l&s{/Z|,re$f'd@s;˷n%ͩA]@),6 yy%\u9v2?\N3]uo (bY5JkT$Ϻ gTʛ,O %_.[ Q|uJA{5\򧽺h<ac:qn8*8a-9]+) \!'o'Pn]UFٔFS]+ -] 0}nXZ+BOI"KH$uo\deCxHYJ>Ą{ѸTXyT~/iT(ن PKZ>YP-QPKL/: settings.xmlYs8~"wB 4m!GC뛰Ez$9+d0=j-/~߮|uW*Bq/3zOn fQ4+ %ꌶ ^zMd*RMbPM41|ieOV</BY.9yv}}]o7Kh~l{UlȌjw.45M Db1#oQ}oFz 굫Z~Ss>tJ|(ԋB?}]'oBkWK>^r!%tLAm)"r`kiB9=іT!>c\,Vƪ8>,pT%2 }DKeQ^j7.)'b%;p+yPU([mX_._Dm%I(/Xl^RpOC!JzP }/^@s8+eR4qܟГC&لQ.H89` i 6 C̏6' xx 7OMS2]D\<"PD uJFRirzBp KZ ta'19N7J6N;PbQ4nS)P[f.e0L(o(QnSBz[ SphGɵW=d  ܦSUSY:!w03|cTۜEA7Pan|`PKIDrPKL/:META-INF/manifest.xmlMn F9ަDj =$ ő6@X)H;ۈAhky+zX`uiP}F`k0 լjѶN-ןדi(.N,0J=67Z:޶U]+*.Sz]#wnS^tñzA)4.HCݕE'3RJgL6G/q'k^PSE]kj|-" TLa'8 NG\ ͎alⰵ I> +o6ӛ{nR~{rWPKOPKL/:^2 ''mimetypePKL/:MConfigurations2/statusbar/PKL/:'Configurations2/accelerator/current.xmlPKL/:Configurations2/floater/PKL/:Configurations2/popupmenu/PKL/:JConfigurations2/progressbar/PKL/:Configurations2/menubar/PKL/:Configurations2/toolbar/PKL/:Configurations2/images/Bitmaps/PKL/:!1] -layout-cachePKL/:c..; content.xmlPKL/: / f1styles.xmlPKL/::Y:meta.xmlPKL/:Z>YP-Q?Thumbnails/thumbnail.pngPKL/:IDr settings.xmlPKL/:OMETA-INF/manifest.xmlPK(childsplay-3.3/docs/HowtoMakeTranslations.odt0000644000175000017500000013756413271013626020202 0ustar stasstasPK >J^2 ''mimetypeapplication/vnd.oasis.opendocument.textPK >JY4NNThumbnails/thumbnail.pngPNG  IHDRPLTE000888-s1u5y9{#<{)AEEEMMMRRR\\\da^dddhfbkjelllpnjtrmutryvr|zu}|{!?%A*E-J1L1N4P9S6T:V=ZB\A^J_GaDbIbIeNiThLjQmVqTrZsYw[y^}a|l}`]bekpeodihmkqwuty}otz{}ʀ~ygi}uy~ǁ煑牕菚钝郡͉ͅҊԎٟǐӓ֒ܙۜޖꚤ램엹᛽䯴¥гĵɣ짰᫴䰸ﳻŭȳ̸ϻѤijºȹž˽,i IDATx}t$Gy'l²G q|0 Uy+yՀYov}*,ת尃IK\*4ՖTѨw4#EҨ`=K+}5$x5auW__ZW`Z rK;z~3sW=i5zN/(,vaƇfOώ_҃g䑹s?={{Vܟ|#Czȉ#p =OБӇN:z␾×ܣgN?|tSs\92tz|?j롣}'`£C;r̡Gg\Џ^8z塳>: CG9t]>zKj!}ĵ s Zxkܐ| Cs'ӣ=s g kgNp={YSP Akvx-X0Vre/K,-/^׳s0Id.#}M2{.+u Fr.G=Y\KS)J)N'ujrW۵?ee=ήa_}^ԾSN_FUtVtrddXwҧOMtF=]TCJRv ʯmXBۮL*NiJ8#L6 v(2LEL \h1(F}0l[MkArg/ Pv)kiӇ,E+g0I\Z.)PA5AͶq Ơ VQ0LvAAKu8/@v5Rʁֈe ?h qf{_fEԜs2,<[HC k9ȡcr3Ȝր5c;4\F)VB oi.Aq "4䞲@XC-8$񵷢In/rm.+T&ZdZfJ !gi゛gf X%/'p'd! ǥy@drKVFQ:DSx "0 Ũ GPq0v,h`g562fhRM!lj!Y9! -"Xm(!Rs T"m-54g qD@X`Ji$Nk'!?t-lV֠=HPRt ??{/]lk~mnhkP e~蓛ڶfRtd =5_loh񣶖v}/2ʄ0 Ny с}booodzhy VtGo W7 XQ ǯl{&|q&!?tjaqU\;B#ʠQ~p52xvljb~\^?eܱ1*8}-mt|˽Z D4&f[Q{$i&EA!c[4E=vԍPK&K&ǴMl12 ƃ<-=w8v" Uk{:{Һpwf$UZH޿+u]A}N}]i]WݽwWwƷoFtWNv5&뮗{K%FhxDc. >_5&9Ņ➉ {|Q Il&n3Ǟ5s47 I%!BW%A7 &ޖގ7M!is4ci!vf2 ^1&P&i)V~sa?9j3*4z2.f8Uu䉅xGK[[=i\ Is!'yB rl~~^- Wi{ Jh!jLh>?|̐ԟ5TM 0.b?wҏ~|GUsU m)1m. ji#"@]Y^BZOyooKR_+Ax_1HlN6WZ&&'ҟ?򍶖oTTZςc JRjgz/+T80j6M!'r}>UP*GC듔1m22q f6-F<L=s*P*s[yģf\9oUQzc@?DĒ0 H9sVR`ZJ lRn&֌>fH12mS9܁CP137Ui۶F~ 9E_Qf?o~cݟ@{''ɿzk7 ?w]Cf kQפܕl.oXIm ێڍ'A ^Nݒ4o^_qc+Xhz<#қNxn]bEqp!TXu_ 6467恌D#npZb@}0xcPe! T /⢦l nAC'k/B]CA H)  ǖ񭟖Aez4thzfs, 9iu1z pGWVW:ndzLI`CFPvOf[ƢYKL2jHF&}&.pE}} P_WgVTB Ţ!lRe; W:^n+@_`8P 4@:36F͓tȄwC]=u#0rdXu[nyMaX"/?~)V6Uh0 4555Flhu=[1!|EB !ͭKbΛM]g*^rXc]UM`52(HdkC L~Do =1VXB]R乧/m:/W՝Č7===_PEF1=X怉ӊ!5;fLYjn5+fZ?NmH,,(#d*RN NNJוo"T޳_5oCHkqDks97~vl b!!I]P>r" 7GB㡆FY)˄׍,qoCͮ& u,{Ix8Lc|D<ܾAh0EMGȪ@q9dMm#{@hyı_O68\18StqU[l?>7x|u)ܢ{7A om}ʆ23r>hl(z˔6mbR! #9H# D| :qA{Z2 sXcOk9TY'PqpODqȼ` +fQK(< ͵[}6u`X|JZVe5+~$Ě;ױ~(<)6Sf[<7x"uH8\)|D)T UF|6IU TU1@xUoU~|[>\H _dV寥`00n4$|+1=>>%1ƍE$>$|,qݿy7deG2+se.bu̽[|(}ݿH_IX 7k}ČZ/nכw*EU/'|K[@1!}Bo{3BOך-b[[3j!^e f15^ڈ]w䞛G G=jjl 7֛v[_ 1F9EݨM`";?3MUoVhQ؆N@4͚$k 0ן,^o4b6s#B l([0Da_wumoaћmǚ"MS0_Im7jȌgaiS@Kیzwȫn&ؚ7Wfuo4zbenu&cax6 vZ+0y.A5C7ry.3DžTkF)ҖGp E1Uת9R,,aR}gJIW!9܈ij; Bvld9iC" dMcc,,9 aa#L<א2o!݋M6D+D`[0`N53$"63f^k^(cmƴCaJ layout-cachecd`d(g``d``14 PKz PK >JkNkN5Pictures/100000000000024F000001580070B40566239E72.pngPNG  IHDROXŞgAMA aN"IDATx^xŹ|% !0-tB1Z0`z3jq7ݖl*"˒e[%7Kw7l <{Fl6{rjvofZaܵO+R  >%0dȐ|YH`   ?P;< h\Cϫ;1d~z O~z'OO~}7t _˿tM~Mv3YKnaR[zmޗl3f+Yɬw}gw={_M?{{AdfW2{`Ud 졀~hXv #Ù]wɮ{l`6FQaĨ)`c䘛6qw+ǓF لɞ N]J$fw>Ȣ~{^^;{uZ6צ ،1fg>MYuf?Vy+摷wwb=.u${Y4??ɏqSK|Sb[ffI23dKuYЮk y)d/ ["YO/bgKڇ,5`}S_ ز-{=`iO{ـ $K٠268㭀xkȊ ${lJwɆH9hGf1`GelLG[ص7[Nq&~2!/`>I]V%*`]ɢ ɺM&+N6%`=l=05}d3J}6,f}g7[flN9U[50`1!L6vYYPDfȒ6]\EZ;ƧڨjAvv[؈"閥8\Wn\yjqe9'ؾv後Ue\~ %uVAPydA̘aq#+Fo?js?f#6 ڱCٔAN8]۱ v_j#.S; [ C+-?b`A6PV BTlNԎ?V (G >[~lV ŷc};!ue\X@beFY ((+x8V `V XZ@WMNx% jwsmڶ;`-+n#k])gM>!^2큧jF2YA[oSzdlۗd!-s}D?>( O]DU10~l%۶n!pƆeU) $'k\_a^ǝJ~[Yh'/;8o۶m_|g/IHI;V,vPiQN̜c'$TTũCڽsӦ VΛ8[f.sR3yo.]OW^:^ ht SɓǿgN:uԩ|:EFjJ4UNʬ;e38hzvʚGNQqE\ `vCOH:tqcHþꆨ3:{a:{F.O9_|qܹ3[m52nZrZJ#'fE+{a|櫓sHޞS9hi&>P`es{&=yǎ9rhב | ̟5c驝zdK~5q7x]vs?c=#I)42=`gZuݻw/YrcǎnRUV-))4&ٶm[JJJvv6Y&>>~i???'&&,XO>s']@L};dw}t_jZČ2jG34nׁ)Ywz+w1y{fwf:eo!WŞ l\08@nYS6ݻwΉIDO`uOx]a8f/KΊ U!S1S^1c-cRr&M@$uٳ{v</NџΞ9MH o)-v⒔'xh'O^wu\rC=tiO^i"#sxˊM ?WX3byIs9\[[UQYV^YZQQFVYU[VUٽgwyEyl2"%Y=zwvoV>)1I/_vqҳ1#;r lcD6{͡G,2x{g*?,Kv[޽z-ҼG}K7t]wuj-5m4Q64ΊFwi3&TٻDܻwϦ rN2#om%2:*owIõ1<(aem;}iҹ&;Ŭ3_Nwlv4-'$^UGRhR/emSݓ蚸luV0 |OH,qIIQ'۷oÆK"qqsb7nޜxU۽{'I]yi)ʢ#RKbFۘڵܻ歛N)1nᥥ%Y.I#yccW,.*x}]uU4YW]tk#]v^kb .cb\*.:}V:[]SEdzWO>y܄11sffd./.),(̣LcW;MI]↽h*u2j5[]p4|iIgj6=lΟ=wڵL\Os窴Qa:ë^hfݨ#U~I#maLEhF233($[zm׿СC#:P|h=c?s R0n4jW[:n'KDz@PKB!׎0f۶j̩V̉aoHi:t&75[Lt<9R9P<y3+1kJ~g<${e77ze͖L }8.Qt|ʜ 0_E0RKz>̧2I(iy;_vڭXE>3ڍ^Nvt"yƏH&2z8G$oK/ۣ%Eԓ*Ghe´S za[R'?ݺuGtwq^v|kXiɥcRG[ݫ=L_JJI_R8R'Oܿ];ilӼ_5yhS^߮٫;zqׄ/͠]5U9$c~I d. _=%䇎y{'ԍYU=OUmJ^t܃x @HAiy1U5/v^[R(OFiڃ[xhWQWL>7_(LC O鹝m;h 駟fxk2sזjLh6uM4;rvڹcvù҆zzPԎ;Ndž7գey9 oǼK*罟0fcczzzPԎ)\@e`K$OܗK:Gŋ_Vr'ζD?&>wC:Z^Ig'U+ScZ~Ig:~Mz| 9ݗ./5;uy\m\R1IHhN$ry 3Eca(0B'<#7v4 ZnNQOJ3E*ޜ-^B6ih9͝`AGoO*KjZM3Sn֭[WF+~*ӻ4 Zڭ\J>haaYkVWԼ0/u OxZT;ŷH݁Ⲹ6=k₢v `^K7ZaԒowWrJmmM ӯy$i GYbz%z5G$'9qK䎌t^B~%OL@RWUY1c4rhNiFk}f$<1!ܵ\B#4!.99~Ή5kFl,B߲exތiSHc-]}-޽7?+$U_o_5zE0פ9HfS 27wl۾U\PO=YOz)drrR\hgiӶdɒSEh [>~_ppȾY5:RIdVϞzm$RW;2 ;:qȩ/n19cEuSr̅+|s1 ƾMoE!Y\6``) ggm뗸ْi/i_Rqo囻NX^\{L3Muifq̢ k&V$eo:rܽoNY_) BpNfmi^W_{sLlvu5fWwniSE>3"]YY8::z̙I iii4ߏ&KJJȓWoܸQQƺ&NGYͺ$ǎ֒Ϝ9\:س:fi6GO~O=[NGbF7嗞\r-~!h42zʿo,Pg|K[O4I MNN7ӓ!z~AA9Q;5Khĸz|tD~~wyK:aL"v|F3Sh՗_h(_1aHK!ڱ|_x֪eYsΦoҹEYӦO).XS_qNzg l)2;y$jHnA袥ԷK/'Ŧ[{[U}s'&TPխ,J. Nw@Y*MvuUE5V[YDo̢v4YRR|86m6Ԏ҂YK-=c=zt#y#2z c\L zjCSUe%ukJ /ڿKxxﰪv b7nh7?7oR䮊<0oiKjZҗ3җX㱙Sg._jnSyr}3,*kwd24n3֕71!, "5_G7v4$ml4܎\ +*k+몪ʫ*4{֘ӟ*jk*U4̵?bnqw}u ;U4D2}qE /:N0sf\̆' #t30Y ߍI2C@>q}պbv[C8GOIODi׆rJN(f?p#UQX]QPUNdSS \Ҧ$esWMй#^Ft;>zlz+M0RN>! ~ v|YݧNP;fٺ+'͛0~LzpϤ)?p] 3sʲºuVѬASM)iSnWeuٌ„L%49ud~Ē::1LtNL ё&i]ϵj«>M-SVj6BF4iu /+)[Ew%E^^M !j-v$R0'<[PC"1'v  > >h(j  jG(/V;z @@K%Tj\0իE_}:\Jtlvbc| O./NT;PBvir꩝pEZA vVG/{5eC@%#s! v W"jfS;yARjf/9@@FHqEaQd.9́%ic?O&~7T$oV;ri2a])(ڱLo8t|RS acQo5쩝jJw…)KIxH =㞜Xe"‚܂<//gpC''-bs-k $Yx+d `@4/"#u7H@@BJoj@0_MfA&FG&<]xj.L#V"@c<[dZ@ j34- $qDdqEx]p4w䋛>ܴ몋fx33!‡hA <-ܸO gjs[{~{W;]y\)Լm*wCU'I7Q> %@j'\zov݊zv 7`Pλu b Јz2.]zm[7\k_mm[M1YO)| QKUMJ1x=M@0*S,˽PѼd_wukvn=| P;!HBAT$ kJ--]6ԩd9Ke yA<  .$D0 EF9,JxP i,Kl[J+BrAy r X:ϳ%+؀S@@/Qmh  NX#`IZƷCU.l   .Zv A@@Z,I|;!oJBA@pog5W5  |OWD-]\YyW?h:gEW84H+B v2_sUõi ezBqE"N#@ v2_sU@M7lp"?Vvy uStHKA9d檩vA1܍:o"xɱtE𪦎D}_ %5׶dhaߎ7+4 8Q;JeTS>%ZطM syBZ@HNS <ȖtA@@v_sI%EW|Hk~+ovTҍ11Ks J@sE~j>ShNT s[A <Z޷T@*  $ΗQ(oH@@% kIH@@ <<ۙ>CJu߷Z/.1€%bY‹  n!`Iv_su @@G,I]|;2g}DEpE@#`Iv2_sUN!]/pU+"o%s|@[KaY,p M3")J G\B{, #Nk28׿j p 7f+B Ѽdx3 B2H$uN};:kکo*UK!vHs9͖lzE+B$#t9+dX^Jh:JA Uʹ4 L#V@ؾHLx𩧫$UNQ xxm ~"Z/P3y~j( @Do' i[:‚?xƷG)Ms0DPGe8:B=J C3]T .[;oEg.l|;/'<-  ځ|`}D,v[7(8@;,@@A@@Op2  "۱epjLq{jg3$   `g|;EԲZ F3کoTS9ȎP^7v rviAW9J Him/  &Na#? wE@@v0cEygɓSe#Np3v'ǀ$M'O=uS=uX7M3Do{4}ƺ2I{)$E2RUɃ @@@@!7)DL۠v*.:v]͟~G@@!`n1K'n14]8@.K}|;yg@@,V\[-1'j"UDA r &PJ.lX0@Ж@JݞlxO @" TZZ4NԮE@paA"|N.&Âڅ\sYe"; wN:,[I4]7M@xs] rzN5 W fcN7Yvxv PF)jK-GMIڡEڅV<H%# z L}KN.hՀ@d8V92}Iah FN:,k4yrxva($ }\H&ڋ@j& ? kX2 K!YKtLZLG@Fzv~fEB> 4 .2oPj7P]7gys'xG2% @@@" #ߎ 6pvn~|,wzGAv``NO]VlI $ne6Qa4]D5ZxJ_Ic^|mH 8鰠vތ4#ӂGxFGI_{T"'GJA,'paABZ5I1W;F٦QUBj'*-9Dv9BN ^Z6DS)yT?NS;aU%ӕ$JPwXBfAv.gI㱩vjISKBD K R .)jqAЊNL='If6=P$AA[PDNeXÒ0FJ )|;- @ 13?rxNUWct>@TkT=F)@LÜLOW;i<]]!ʌZG QN:,G+=Xvxv EIB@NOhοQ2bInM>=IQX VV?tN1pWh 8i

]@|0P4p#'΍5<9i @@v:О)99@@ X,op!Wra%mhD#vpJ"$jpڅCn#suh\1o+5JځD]d*.l(5vvP;"څgj fVӵR`)9b'u·c!t2^sMih0l]XRD8( Ր5W@:ҫ fySbbd ]dW;ATX5OzB}hvR#(MJBR2R| (S:|1P;ZV+XuM +gw#^ꃚ^ EէiJFNy#q Rʫ>b״JLPz] 343oJBMjjN8.Z1cASLFcT,| lH]s2VtACO%2m e\_lՅPDK25sb Kj\^θUw2ec%AWћ*%2-E:wB?+z^\5s(yb wd 4?hWzjך5.WHՎ\}%ӧx|GƧe;R5D/)y:L56^j'χjza62j瞺gNBv3`A$?H%C};$ԑ {sYJs74KgZdb2ٰsB&]y#6-]dV}ԎIڱnWFZ wkvdJ J/&$cjS|2aMK-P"( \X^2jh˧~4SWPjzzzmyd2n+5m5BRGeSNu*w٦\Dum|Vk u:.X$OՎ:va 2IFH 5f>葃FБڎjgO R';i<@U_mN-uPzn%څk#Ku\[%@H @B׵E΍\[@xh]xF*-HHF21  :?E'Zk,uP;]N*炀?jB!% /u"np3-Wȏk XRY*G`p?F5A@Oj^ @@|IlEcv2LwIENDB`PK >JR^a\_!_!5Pictures/100000000000017C000001462EBBDBC2EDA14498.pngPNG  IHDR|FdVsRGBgAMA a cHRMz&u0`:pQ< IDATx^fEy_cLib\ĆvQĮݥ]Yz݆4"łcDM%1Fdr9s|y;{{G|(Y8pQkt ͛׮]+(`((0:=(');QOVvУro({TͺGoۮm7l ~Myӟ+P"eV OueOzʞl=%'+{K˔˷+NN=mӕ=g(U~3g=Sk~*;{9{l*{yʞze? .xW.\ٛ/zV-+.yKv]v鋔l}/ʮx~+m+w{/Q^W+{{]VN+?pW}e{=5ݼ[\ߺ׆[p:e|U7#o<|eo:|ǔەheewsoSvܝoW}7޵僚ޱ~߳{ީOKى|}='콧|ZNYe8s>xV; (;sA|Qٺsݷn}ܿ7(;]C.TC/ZaY.#.#/SQ+Wl+>FU{וw_*xol]W+7+A7Oqe'7N['NUٷOMwNNwW;cѿWvǔ}ۿw??G?8Wٝ?r?lK?wο }.T)S~|Wvg~Tege_]e?ޟ]z~~~v+_\/{}+ߠ+Ư*ϛZ_/e<ߝM tNN#"WL^u^)$.aM5tz ;u2ddYH^B }q[" WqpWZ+ؔ ;ѧ-ꔹS27)s]27rʜS2/;/f1ί?u:NJ"E_+/\u:\Su:.tTb9 :@;P tAGŁ\Ł^BWc__D:d#W\ɳ"Y@δѷAhÚk: v̤̽WbΥ2W槻,t̲bt^Út dSS>>rçw!yбC'2.s2]yU6m-xEG[(p^q^#u˜̹˜;e>tU' tSg$Xh@ rwȅKR@ r/i/(MtP*tmd  ,ItP*:\ҠA_P`v B'%P7HZKU :K"#fCkPRz5B'&š $5t-iB1 ֈ9UuSc N~wRz&i:TB%6d3U/tLz~\VJ<ȬmeF::3›=0tqlf i7ǽXd4M!yRJ&aWK{7n’+бAJndzhiC#:![44B1hn +8!*B)|.=IeePv)YB'N_&ŋHG(!LdQ gl"26OH0@gб̿Dt#e6FtBqex-2m"ѧ(3WjOa!9eBaVN NR :b2e&VN ӟ*b;?D:vKc!y@L [Й%t4Y]Hjޫa}҄@g6Љ>UtRH@z:@ES+t<pPU@JPe@f3 : d, TP*t=ӡf (UU B*t @VNVg:4lPStx6 VĻGz7j pՄX5:@Fϟ@ ƪi ɟpޭrBZڶ@G\{Z: lUUnl|\iܯ2x]*ss.[>Kx^z  G76 t2(9IKޡ`1T9q۩* J]棏Z{}dnq0_$n#Cu{g+A8YS$,Vbcvqo %#58"`;TJ9B .excxߔ46J\y)hWה~ٮPd@抖  ^osK E.\-f.qt\t/NnбI-(.%襭СUqB> ">&vrA:$$ް8tN6lO {!w#F7EyKpW5zۦtQ tXs%K#vQANiXNB)%MM):);hS`!؅PauweбnLK`b觋N) =)#? B+//6( N(1s'xYeBL1#)ݠIFX@F;᲻2hۗvDH[M<@'e@/\opiٝw@ Z1ɑJQwGG:ŴtR~HPQi1#*)YSY:QdD ҁG(Y:Y{ |(_tP*t](D Q`lAȪ*c@ 3{)8::eKGU ^| jptЙcD Yazw?+yHc+Pc@G.S@U6xFtbN_L_??=<)㯠FtN>(< +zh}an+{G!!ǝkgt⾅hb{_/3+hD.oe;amk:;vxt.PRػ3+ HF}[wB})#B#taTdyT>]r{8nd 1s%C'.$q%yV$~|OBQHDŽK1x]Hͼ~u newjXH qgJz tJNb@J7-xW0t@g9 [.fc*Q,:H ^UPPXI9mvH1ŢV@\L(d:AnN@E񳫫 #S {*T(0L @VNV[Q@ r3JtP*t="NX&^N2V88FR+!T{Twv Ϲp|%Ã!_"!QqdB!t@J*}-kpsdE^:qI#>]rVITJ;?--:^_sd3%b[iݠ@gf C{P)}Ho7L(k6tDSB0{N-;GvƛWlLtm*ϝحNs >б* "q)':^Ę=gFe~uN=}fnNү%T.>YH%Nidz% jG=d&ʰg.5\02bϹZA;Ys7.y:tfUapcϓ]0rK6=إ*tVQ9pnOlt@g*o^t*@S ,ꦎ?\?;LvtJiȈǕV&e^0*GtN%3ݜVSY>T+@P*tʽዮ@@ dUd;q(  ,XtP*tʽዮ@@:$^N2Vû^OV pđ pմήIN ǣЙO`|xF2+tR4F  : b %ZMD:W>^dzk`Й%t*]88tZ8tT[.@g~Љ10II:.>a+lxt~>JY)O^G0 uFU{іW5pGD:;atU8H0޵v&àH|:"2.gC?ʍqtM]jؑ@":YUdS}k:HW"i ^ kZƞ^%Njpe"P8C4&3{ʞk[.t;3?4Nbphz%Xsu[өscg,*2;qu:P2.Ot*tDžQ{tqDQ]tyC:i^<BhA wZ= ?thm>RJYk(J! @) 6R"*:@ dUdqP@ r3ʡ (UUFKIG2o{]?[)x(NuH*V9^Ut*s%3!_?1 4NPt(tJDI1]6}ʤ)= XSC~iA-DڦolNMUCk5: 6mƦ* 5aC%^\g%N(]( glL]y5:{"o7oU@&b W؇2#}][8F.lSs >F~$5Iov:A3#T; ˄B :Ԉͻ?R#Z"+r1@_k:C*HgB`P:!WoN&zrV5 3#TD .G:)i;JiFcxtj"}:ީ;S\ӻс("pAIS7j^ygX64N1(bUC'>k࿉ V HNBV.Gbt*tH+tţ-g!ɰ:\ĭtGa)Fi( !ɁՁ2(t# c/ j-Dڦ:5`a#Ӗ:8bMUzT6aiſksB:5` B˰21<~qkb@gGJ3 t" Ȫ:" Ni5:5`aC"#]N^\:Źt:s\3R@QP渺?RJ)UIS=һB:;((3KYtAȪ*7 :(Y:YfC:@P @'܌r(@ dU`R @F^A|PPPR ϡ*@:Y8PAȪ*7 :(Y:YfC:@gz yH]&7Ru@،*pGn@"ҙ~՟gQxWg)B:ݯ^"\nȨ5:E(PkSˍD̢:ݯ^Yzfy:}'/ 4*0)/ӒƦM0+ӵӶ:=nBq@_vyTSAۊmDX BitN($$Z)2?t, DtS![+t:8vcFs N.[XI3J content.xml=ks82uwb<НԒGz[5%lؖ!߲#ƀ!y43LU:Gy$3q䎅Q, |T:lq_hXmsk1_%K`/QamN#>hKdziK9wsOWْ˼vi.Yg!坌;^ƈ׽Jg{o )v4͊jjJiUPUb.D,ca(SoܬIU܍skxk s^o/ުQ9 2BlP) 7.5a];/$ Q)BP&w JDzfsǧ18LP@Z36ɷ+DkE![|hJͭr a3Y8pġ@Į>`VHkwX2]c$$e.ù P 0SC[ۣW%DUf঄ RiApR20\Q6\qQdψQu>/p14C F  %`Bi;4t? 1X CG O3V,9dfYZc~]zlųnqHH ȹgC]:p*f%G*Ņav)ܣݡ#}rZ7 r5 ܱn3u!n7Ź{ )raP?q:+ NX%|d̀t`?CRmy!^SVbX(S$v|Fy၂!,^L=ˡn~8i [TC. Mu:*PԱh'owS) j_Tevj;%UD*SW/))_;\ڤ,C.y<7䮽[i,?H hBH h'͊alkON㩝PwPZU{Ծ^d;ü;BBf>C;MSϣ&˩Aɓ[Q:3yy4uTq9[=@ Gw^N.&+^Пz~'S:f!56ޤ[Cjf.zFOCWiT`Q.П{`ɥ'Xȹ?*Ӄ OW5!6%PsVMuCYO0 rJtE({ݕyX.=,VWt7]+JnZt7jR+2݇{AwjrkݵbRye{@xӬ>QWx}+%e[(fnӋKns=RNQZ8>9%d ߝJ&̺v==4'S@db:_W wp$Z1LLQVAߣ{Ժ%_-q@i(݅O`$8snˢŽN(4;|YM0'RxyBfpH+D{d.n;Q?T֛Y/6f견w˯ "`M@wLBr#pFʽ2ȃTE#8_8w |BADǭ !x_4zBМ9 牗yQ_fhA1{d#!E*n{܃Y>I`amԢ̣@lЩv6a*eU"2eJ𳋉C)*ߏn"?VFƳEB_ʤ_Ï)b+#$:4zGԍ{,#\㒪];%1'ZI{1ka1Dž-,&H2;B\#]v|Vr}~,-F?mUDUbldr!(]AE3R@c&ղ q<8P%?ZtʘNPΩ3ztiUA*yUQ4 UXU>kUZhTnܪ'{ |Je P 8 c-^DO0M9GD} 'a70`ww[VÀb @Qħ>D(p9 *Sň 4M}; A-Om\Lr}V c0c>}cg}.|YM](B;PNA/+x4FEŽT.MtGL;q:7B}~53OUC+~޵+;6 dA& _"HWx "qP/y9ـ]N7yWUA k.@#vX3ڝw9}>H݋yMq,?(şzDxeĩR6H4[ oC@R@~e`}y~89{_t.rGŨ@Hh899_:SSaMBG_R<yZS\=M}xb lxQEI칗Ї#>Fo GZhZq?27+T6!Q6~G%(%E??7tci[4%}G x|$dȘGah /lk:pAҬe,Q2c7QDj\cca xl=R3^ Gy IS[\3&1[mSF7 +5Jrww =*1F}#|stTn (4K # `ۥX%\oE^\j!z?~>s=k"I52,\YVE4{gY, R!L5g4C#ᔑ/GPHʸTf8[ր>M]{]C[:oe({.HpFC[d-qP0Gd 6IHFqg 'ҏ1>k &|^q*G?=~BzF7Qpfڒ.2u&,¯9DdP% d`PLsf٩GounXZQ.ʒ]{JMx`_N1|9p  ZxȔx*Nm}OTdѓg{QZ"z{1Zz݊ ⷹu̱*J!nK4lk9^ɧg@rzkr)X"GbȔBgԑgg3>C/rn\{z&`pꘀ݃GY\ kBuW@X.qj7E_ZL]^|wKKPKB diPK >J styles.xml[Y۸~ϯ`qkdJHx+ĉl'>oA$$!,_E)qoDh4ݍnz>sAXq&8 p/zV+E*Dž}llcRؖRN4h?cUu0ŝ|{IOOSDZ,S) "Uf\MzՔqY @;ڽ62Y q.j`іa+r^ygt:E8uCOvX&uW*`UX}9Q$DuEoe=+<J0uZO cQ."RarnE !.d}T"{@|x,|vqRe8|+!oÿ)>1 =܆F%0U`}*N0>#ئWAhQpD{ [,I^"9  =I-q!( `.O/OgO )LaX= JbP^(O wz GKGYz%*+Ra8/Ff, 3т%J $Ο"SsQLm74+TQ[8V5G冤宅Џ$P=đ2TBaA()gU bX)u/XmAE 2߆$InRt g:TR!0N2try UsK{ߌ{jMa:;"7)V ϖJđ|K١nCafr,9FPbT:0p*h݆Gr2/RdXuPgt2BJoX>M%0Pf#y[B J0+M+ГY)uEźBkh…nH!Q ZCXBBCֳ3|C6'Wen'~8}>]fbw&}6K؊ cFI5`̄^mzm#2O#-䤞H("a" +}CeGPQA|voۉJPu/[ok؅r#RDLY᱕t Op#Srzb߆ْq`O ʤ:pٮ38t2lFO)<7?1;p , #n(35ueS5P~@/%}b x9p@eNuiK&:'ͅ"=+D{o :u(tĹ3[nlȎnяLћI EٜlVQ 'o F S%ugܷ%`,):xN䧸䣽mgcM'Ljc"Pr,r6"g4Iw:4NO.T@1=02Ȭ/Ս.Dz 3m$P{B>zэ,d9OnemUx?MM=Vfa*t%ۂEc֥J\>*OV%*|Ҹv+wҏS;g.͎ͺ静#O{&Uff2\a 3Y#9Vl8S?=Cڦ1GXiK}]vnU|oEz4s|e9ȠkщGF pb2-(Y!b֍+F)J-T^ـ:4 (rB^VB yBn^VE!,iMT0JWd]ھ&DhŘT}Ky1ERom(jMٗ~@~;^B\dC~{Fa,[k}=^>ri@JZ)R z喙ּPW1"pJ`MXV̓ԩ5Ŗ78g|P?H&x68I; (QFPkEf\rDdx| 0z̶mcQTM:.;xǯf5ZYA.7= ROK{1#(o% c)WV&Hѿn153j -!GQfQ]hڗ3d/:?PKT0> {>PK >Jmeta.xmlMo0 "SVVzYymu6M|MR%.ywƦBbzE9񺴿>;}_}(rT#˔rTiCS*1k pj4G. ϥ}ֺ +d <]Q7e3Qб냕[BlF|6= J settings.xmlZ]s:}"{ IL$RZZL}Z$J6iJ-}+=+q9GO4Gy8yj0r~x/oٌGЎ1X1>ץn緯mdd 趉ژܼ~t9˯< .׍1i\VVߡ7O.//u?"8/qN[fqT UhN78lsU8?樸lv '5v;@`1Mf03>>,v>pqZa\f=\j 1a &砷g3,Un4SlnWeUd .&&7@)*؟鐌t\zBƥ`<̔>viU„ 8kM7| LS0J!E^Wz\z*"E-PԬ bf墽cAh'wWScfal>vqUX-|CPT036*o"> x.QA+mO4}C3VrM I}X:$1Pl2DJFSTR8e"ʄ1| R٨aItPSmȞ){I 'h1Uy 攬"cͷ;SJ]'_,6R\e)3}mi]TA) d^<,G;U4 rQbRdjе{~7]ǖEiV<붑KNZ|8UPe 4grIl=VD-j8r5!`xĄgefSckG؂t̵-|}z&4J&b?!SPQz3LE@\9QWe2m*~BoZM&WeYkA8J`톈s~ᒩ~[BVPV˿HO %UJ>Eƈ+QU܇f-@-X&|rUQ~ur`V`)/-ޣigk #Ɍ _s["(ړ^>߯ŊldC:(d10 Y~bJOovf ja@{d=H9xH*BePKG&xw)PK >JConfigurations2/accelerator/PK >JConfigurations2/toolpanel/PK >JConfigurations2/floater/PK >JConfigurations2/menubar/PK >JConfigurations2/images/Bitmaps/PK >JConfigurations2/popupmenu/PK >JConfigurations2/progressbar/PK >JConfigurations2/toolbar/PK >JConfigurations2/statusbar/PK >J manifest.rdf͓n0JMETA-INF/manifest.xmln0y k l($*Y=C,1v޾fj# _k\H+-r80 c߹3Zqmi΁Ocd+BG@ #"UrH.NY @ˑ˄nsљ-9ƈ<y,<5ucDR FMFN 0rb> -@܆ (hIEZY2ʎhU؊k{Kg7O&|; IMM? BSO!v/]mj7txVnL OVV"yj - Bϫ*^0nޮ .ȟp PKK] ^;PK >J^2 ''mimetypePK >JY4NNMThumbnails/thumbnail.pngPK >Jz  layout-cachePK >JkNkN5 Pictures/100000000000024F000001580070B40566239E72.pngPK >JR^a\_!_!5mPictures/100000000000017C000001462EBBDBC2EDA14498.pngPK >JB di content.xmlPK >JT0> {> -styles.xmlPK >J:meta.xmlPK >JG&xw) Ůsettings.xmlPK >JConfigurations2/accelerator/PK >JXConfigurations2/toolpanel/PK >JConfigurations2/floater/PK >JƵConfigurations2/menubar/PK >JConfigurations2/images/Bitmaps/PK >J9Configurations2/popupmenu/PK >JqConfigurations2/progressbar/PK >JConfigurations2/toolbar/PK >JConfigurations2/statusbar/PK >Jh manifest.rdfPK >JK] ^;XMETA-INF/manifest.xmlPKechildsplay-3.3/docs/fosdem_2007.odp0000644000175000017500000047704213271013626015621 0ustar stasstasPK |W63&//mimetypeapplication/vnd.oasis.opendocument.presentationPK |W6Configurations2/statusbar/PK |W6'Configurations2/accelerator/current.xmlPKPK |W6Configurations2/floater/PK |W6Configurations2/popupmenu/PK |W6Configurations2/progressbar/PK |W6Configurations2/menubar/PK |W6Configurations2/toolbar/PK |W6Configurations2/images/Bitmaps/PK |W6>hshs-Pictures/10000201000000B4000000B42FE5E215.pngPNG  IHDRJ6 pHYs  tIMEϷ IDATxw_r"9g## "("&L(3 (dPPA@ $9IrGϦ?yٙٞTWWWWXDTQ⦶,b$!N#t7|g4 5UH*Du6^ BdBk ! KNK̽A@!ݎSB.rA19-/`K{Jw?l~RrKJ^qfk`{dFi~\A`Dq0*GQo8壌mצ;!v EW rݸvDhVO?3 +OD W3A)ey m}["A/Pb(7ZwiWi('#05@>!v|  !bqʸx_+Y Zi(ı 3 ޏKC{"*x}PqUת).H*y 4?}z\JvROC9 BUAkAdHZK0>  e*8[Cz˹g١o}45<P.Ee"NS.W;A1[vQN\Tr*BbȨˈyxoǂhhu'\ ,_k½Nk\CI !ذa;pݴeD?E<7MT r8$:dDIw+?鳅8?Jb{s YHYw}ʟ#ĵB|]@B\')%mėV@mM]ƮsTn}ږ"GvKˀPbЈ*:TPJȏ"!N x!%4B\[;-\BGkصkp? !D19 bB*jɞ! o%ĩXMmB$.w x,lX!~+_ qqgG qyeü/BxA"-ĉt·(닲 l ~!kTkb7N>+#bJ y@cS#<9_rw\fǫ,U-(?(k:q";u)݇E19?s? 1u䄢yoƚ/%`KCi "r,l8, փGV.CⅥ/+{={*KCjp ]  [<*bf{!/ B' lQ ZKOJ u 4k&O\;"!#VB|s gu}č8ff[7*Jbl߼ z| 7ofוr|f/S"ᱵV*echZ,DT } ˭Bud71V3qq!v"yx"Dqz0[ ha^B.?!2 SMB$!DB/,}E;LĒr,3U/Ch#u+8~N!'=H%2 ĞsAOG.8rc7xJ4H]GҺҺvCiJ4X܄ CilKv垑s'7拹L{7ʔGa+F 2nOC-[T( a0madK9y{0q\aa9M `%˰m÷~{?ޞ6Eً@g̀3Py<2aG0*\Myவ1ss-hLp:.DCf0X1DES]Зaņ |c<׈3jxIԩb`~vP?Ͼo"^%y P,\XG'Q^L AA_e5l&}rm#h@+voDtkf0{Pby1[\HD(?bwd}$*u;htanƥf;yxq$g6{͙ eњJ ©;lG+ms:bwe7|U.gG aNFmm6ݻ ]a"\1tYDFTD:XXXM|zz<+:٢>Р}olт5JdGW;+܃oEX:U+N^v?{$foH .Xzpw@գ :on_S#6U4dgKuԌ!5h4Rv}Y}39t $6c BzzCJwyPJ kl^mq |VlúZl^77ҥ*!8Wx| u &dW: A'\R %55cUB`Tn"t48 dAc+(6P<e+HMMEպ^4?E ~,+ʆ!E#b>%o(KCfŃm6e̼(jN0) = Iݝq9Ü7ߝzzX)Ly (Yb۪t\sn>H/I/_±ˁجv5qhM"64_YBB!,)[ihGIӄ_JwO'!vV55"*L'ąB")B# #/|tY~+bբ¶ۚ.w quHCB~"cB"F ̠d1>) B6A[STw| D1寃X =Xz0d[8ؒW7MM0CFȍ0ZcfǝRp"k89H2I~ 8o}d87Qo|?4 p']3eK>5jL+ {S]ys>X ?kt2~0^.z!y)Sx.VPiofqz:  Pc(1Xn&)j|Wx08 XXX qʬf'|RwZ#ZiLSiܗI,}Q&jXv) ﺇϡȸ90@<qi)ݧ\u rBl)NvWxBZ%rSxH}F._8C'>$o"; {>!l]{xL6bO!vJB(:ProQaV_ė !xq_T»Ѫ@^Bo.-"9`B}u2눅fC`If.2pi(@ŗҒ 4lf;|@sZDlC-8rNx|'\maL;L^~bEϬf\ #jn4>yJc W]E|M7&_t3lIh~8Z 8Ueږ 41]-^7y'3QoǞ=ȃsܽ;f]uh{d@M O_Crh52:8Ӌ}!v;<||<1j p96ݍty)* ,4ƵesBாߪTRNujԨBQ2Lpb{7NttY=,ɘRS7X|@B#Ȯ.A')+75aAY*l<00@kGhV!˖-F9>>٬KdԂƐURL>>zT9/"7'sW@QsDn#ChSZVKiBXж6m>%ew9Ց鄴U۠~ z=IdMrJ l߾2c3pIʕ&1!&M`Yo' k++r>s]s.;E9#d-QjE7 XS*JU.*FvR_`qaw`QNRIO"4}nbE?B!ʘ U 6dԗ3]͍*ÅШҌg|l6H9Knfn'7?p/AVucC!s^:O 4/hD?P6R /Qdî^1] ':w}.i8nsnB}{94t59|BX7xᲹ ׶3?sHL20& h)bPcjA@]>cI:RX|< ,`kܯ8 XEcvhy{;ʇg?`.71V6~/dHoBnFsiռ6;~v ̹`þjEj ?*ڀKv Fz23x:vk;%X2]@>pfpSg;ˎ7_[yn8/R0R&k-`J 6pX m URrgصkh k˿a] νNVqq:MN7EKs?ӝ* &oy>zPP{7}KrOCr: \m偦xɶ\%ĿBT;Ȱ˛Ƅ0دƀ" )IK85sy{'VW$JTOHJ4P&; xCE.1 5bSxp.d,nL:IW߅Z9th>"C1O;kb pWVQ [u*Ceg NϱM=(J|]8S_ =o-SIto߼f%__mƫ倫lA8ru,+= ?nw;3oʏ*hMakݓOB| ڴ|ml^wR@!V zM+sDw"ĎrB{[=fu` sF ;WEƎ(-X&!|kR߾.*Q5#&>>ײk*0 p]dN_ q{!kGz 8V뼖R'@JP.uKs a'r'ז hv»8嫟/\)o/zsnGޅÝ9 'Cp+x?T< || ҳyHVLfgI[B;TkJUhvB&yɗi|88Fm 0 4 b]cNễxgS(hǫq|=;KpHNbUPKK/Ni`оއ7HWAM[o2>)-x"ͻO{f@w L~>k–0CڪOJ1nSE ޅ>T /:Yۙ+Pl[u3ij5 p`0-䒝῏0pc%Ui6Gu\vϐ*$I3 IDAT2(Fu_ Sr'BYb-c׳fh65uH[)6Lgr -% a=6"@ a*5~0ZtExo Di7JJ+aR r>%Sx写=~^[Еul4N?uvR4p%k/vZWV%\H&K g>]XC R&|f"s:=:tmק Gݿ tdSbvV}cx ( ,6G5f0_p 6XNhہ3?..νw>(X&r˶;GN&AXcHMt%YňsH=\SvdvR Wvy#Ԃ}3}yL#= }ڃ6rS¢*SQ ֡LTRf5֮JD~}֭WLjݏ[jb@+O1O'WIOmjSI`5#.{B66+G(aIT,@t ?DMFLL F VhOz )[ztnݜB_:?F9m4e/iI^oYoLɗ&itN4PNO|UǺMȅ_عU5Y.DmM6ݦB*𱭸 ͡S qzz€(΀'᭙&̙-6&)2up:(eF;6#B"+'YwՃ5L "nmJFN]F99;"yS"`1}"D,f[mRV>%]2 +kbTsTd({NZ2Nj KqxPg6EQXtup;i<3k:'.Mrh@.@Rn];)cV!R7n=ÜWWA)ô~GGD N u+iy/?], lc>{RMkj3]ANr="eۋҲ @fElӊiC~%]"W03UbGKaH|b RDֺBo"mHYʩX0j>~ՄhV5Gsٮ#3䧅@tK6B\YaX|,?(R[fvӀҿTpMka풑 'Yjaah펉nמ-4m@7%KqS?}/}0 L}@QN@'ᷱɮHc-z΄XܱEV\1ՎbR}T e'wNெ;r#Fm03vH>LQᤁk-Y%~ ]V; A]leτypQե5йyw@inreiG۳ĐndɿJž#M9Gc?D"`wLѡqxl[6dd炶mfCX'c3ruPGu:_.Xy(d_oѻk6,ofӪk@''b }Kc;6h.u䙸}İԽ/Hn{e^K;w5)%SY*%9^t*(YdZ*LFȕՀ +<,̢ZPiD/= ~^xi`&voC>̂efG{ 3jl qȢk?.$<?W+]ZS`!ud+0w\sF~v`;κƕ_eɁFQ p~4σd l8 \S9o=2[٧JfX!Xxtbk1X6ʃ\L.5Vd Bӯy,KɿI8zœ2 ~<26ZϸM}@t&5Svx^w>]k ا@sxޫd\U dOy\жţ85RV9;?W'{{63Mr<վ+C:'.,vR *c}b%[f˝+K~N*Zya70i?>\NZ2W떃pgsSx W 8(, 9f@@:t4֔ZGP+uE#?1yra6b[]4&t_B&T= z|!@#n 괴nղ-|3U=&2͠`HZM6qŋt$44H\'f0.NG$ԟ2_j'd>v-F( |&OӀ^˱z:[MZ0?iw96&Xc*է@?b9DhH3ռ^tbd"@i+_L{v+74@*BtPD.il b B?JI(. *)>pUޯ^yB!Dz D(GR-6ɗD}.W(m?m zSf-;Jb+?"V&zrZ$G:-y)|cщt>p@J\,VhajD > 3aв>lȮ#y Gv-!O2r :l"sV[P1|c Opo2B+@Fv.-CZb"PvGM\y8pH[ _B"[ L)5{:G˨2cn,\/%M(; E #"@!eisxof^vr0o W7)@i%.䭇$Nu+uXI[~:*͍p'H_-'v+x%)T߉AG$P[UT$:G\xWqCp R2FY^ 1O13gIȸDO@ف3&W8~= E${ M+tY *kw5 ;:|G:l?Ly *Xۜou$G5*\@;+6'p2Z4:˖&v<$[=F@ԭ bA$]F~J o}Hk[  [0d攌HNI")9Ȼe_p-4ZFF!#t4r:u(R, nN4|P3IY)=[3*đʹ8YH`Y6HTzKзCSf*]NLa ݁aw iT ɜ@j*Pʰg@Hf|>RD-n]~U7o̓?&Aז6=x lHǼ[A@@}>J( \Otv\ '3Bjllu?_pe,$k ~z yS;u8-|#oaɇViŕ/$Srx;ü|~ٿÎ5pN k'>`&KNPP }{ B*C0-;HMnDhhn KǪ.U/S$Mթ6jJ6O?#beJ]a0C-t#S ' h5 :9 rUO0y.X(W8^`9Q*&FJ`ɶ!>v3FG7wrxsarq)^黶+\  TܦT ]8V\HP;?^gpy8vsiTM6嬉6P'4 o;H I9p) A䏿u1x0!k+6V}z6oE(r6>0| L]o k<䖇ܲQŕ!(: Gš-uv5)ʉo[APq4[aqTfݙbs1`3")\Μ9X-9BޠGQ*leIf5˂ ݅,aď9⬃2 pPYoi2YEmUn* ϠŶI'8)xqרWQΓпOG^1oF %SKr" 6 ":0B iŬXFNwls0X!&-̙ hذ!5c(9+Vws7K;, ?BnֵҼ,4 # @h>8 T}uҁP^(rl:Hl_EU5:zQϒ%FOjA2g4P֚ne>Ik1ֵ2p@fΜY:*j$I%gtgQ"8Xh*(Xsy]Vbox~s, nw1w;9 "as7a qIV{I{ ֭+ _fdoQs.Ñ d]QJ- _(Y~雰TG2_#WeȽ{y;߻v_*vEKBjnZ/%)` sKji=fIۋ<#99zyN0<@N_N=@+R?OUGwnj=[ 1Kku9^g@r-|C@de7WTSY(=Euz5 9 D6rXG֕M IΡ>KwYdՏ+͸'S8oGj& B6oWSr"B/Ǟٌdp~~nbd?B~G:dW^@[q(9t( `ORBMzA]#"ďH3N|?9/غnd"sN)9*pmՍ]˕btZ4o94K||~~)`Üշ^7DiFRB9o!M)#E=ѳi"!%W>h4_}=nQugA~Ҁ ;u駋`mѦ+;uG^ УQ3oڴK7 ^*)dlwyz+ @fI IDAT^>] ȀJO*Lkކsb@;n-eLT"Ph'\^$ GZ'?tnH |\P{zyx( "hџdmI iuC.>*F!T3gnCy}t̟I-DDr^mnub?n~,(B,\<|yo"? rE=* `ƛԆ/I-Th*sWܛPڷ6ݦtn m*c@e% 8hnӿLF#5!~kwB(UDEQPQ `;vDDT"*@EE"EAjzzr}^K.365Wȸ [M!@yIoӲkl]\׳z<]OstݛGߣwmWY٤WXr¨ '|!ez~4jH]w'fO;dcՆ gBeaVR[KCClS2tma$Ě`WC4mDH[ɉ\iK!.L0:3M~{ 8wH{gȳxnc ~obmKnE}+'kPAZ@r84=pg!¾x%t9Utpgңllٺ_@Vԍ7{xnCn.=HχkAKjE85\~VrH%53$ժ {>ۗ/YTd- pr$IlD}q~ +^iyl=T/^{1*2;͌My8\ڗ{1 qwjTng [aä0Z  jի;z~84+|\~l>~҇Qg,/!i0'0aAto߿jbfZ+8}Z~!0G{ ;uCHQ{ˡ&F/'jo/Qx;-}VͫI,sE O)T}9dѰ)74yDXxMY53}S  .#<./H``m*P˸?^G 0?oP@wmnG[!9 apˏAq64Cb+(Hc:1:ZAgT$ {2=x޵[6PG۠:$s!Æ2dP<@vuY7̠J}`;z%Xkݹ_B`D[Kb/H{d_bm* ~BO!:OfF݅Oat\Z= zwMxE2[שW )`t<7 Wxz|fkއƤEq]VtjSRBy2N5r˜ *o3^~|)i>wG6Yvݰ_h4(^A_t+w!xEcl XLgȕ$Q2?"BpLD"2}gKa >^n)"pKs1ah|I̥THi#-.:t'Cvr2Xgz;eDzGog  j ' 7 c +7AsU3h&LjJh*g]<`7VF 7N̔uŶ3aVtij:=cM}+uB0 9z40$85\`oR6:m q ]|U3N2Vu#ef.Vys>LB]%֮x~.}:d ]=:HtQxABˌT㩆~qHq!hҽ0*lY@kp ^^ak 5KÅ@E#ޓp=ew9[ \`Oߧ3|F̕K;G+ׁᢶnT2*lt=<xХ}+Yƞ'g^ 9 zAF&ۓn,!Em@7 Ņm`EyMZ\aN5_SCfa$OUҿW $~5Z;Hg V(`a^ SL)r2΅}ddCk7@9 {+oZO-W # ʜ {jtk{+7t)|*Zp$ i8Q׈>#%&: y,-C52[4DgApO)ԆhEY/}LEQA@9#9?~zKŋrNaٺu ..+)'\]NQahۈN~-?}F8p$y4b ]-K;WbXk1Kay o|5UJwoۃ J`nڊp[0 V2@lh3=:GƜ) H$*OyI{V-o$2#]:`{sl}L+άԵTGYq?߮ɲxw]I1?p/հ0FuȜMV >,dH @| \=gL>(JJn>q1"F%o 6kc;=ցt"s[k)Яn5FFx!3Wԭ,'>*]<&)'4:~]}|,2v^ya.|LW䷔ױpHvΠM9X8j^H!٘qF0"HC S3'#Y^784WE #mЮ*T*1P( )'$JT.gƑ'ɀɍ5 G kyo\u@ 1P,ٰi??UO`L .O |4ڛг؅5[?fuMv-D˦UC`uʭqpvЦc/p1/ M:S1u/_)ozḦ́_WFcQ_i)<[Bs 7Þá/WWuQ+:l9}>qVXJ[u 0a0=4o8e+^rXB\ hrǭ+|އ=/)4V2?o|UJȰ>6Jv/ږO=bС'WHjɢ)lˇk[Q(\ ^ pBԍd">.K΅&Anm#^8x`fba`yutA_9x#Yyudfue1f+,\fQ{Hfbf2 A~ $7-q黭`0Pgo+{<88I7{"b(@z3RisS!;TP;d\jW MA8$Wu+; /_O 6&HSáhk kg!#Bb(aFMN8/{ml!FaV|j7I~.|f>(9S?@Kz^*oLgo.3?Ei9L_LBvWu (pSD-"2%RIYb|!QfXZJFf:*'wO\yrJyY@ứ@LkԌ 3eƘҧ [Ê-SŠ غD듧{[x{ jaعKCC3ͼtl1\\Ǣ EE2v1YLE7B+eƏn@~6ԩZGɠD^tfZ2qԨQIäP4LE]}:^={e͚~UORB_w )jx_UL:5(ܮ"(tL3/ɔ [vԬ0lr)21s=ݹ;ؗڂȅx^nkkS="]ԋcpذX,X,fL&jj>?>ׇronMn~?-'Ǿ_ 'ƈW#b~ H"BSØa{4 y0 Z겨o 4 ESxY(8*{h(Ur@xX}ӡss@HFQfLCpر٭Xf~]իWb;e\ve("#~C{x<\.N\'9NF.B7+ vDTe+f8FIlX9J:Bp+/O9cfVMq֐qhgdGS"84T / vƃ%=m #;@O]Lj)zfe sWSZUWbG6o?xqܸ.rs]/0~ΏzssοNn5 @͓][^0o]NM[ uoԛEoWlٛBo-^[,Z x=ggp"6nQ5 Óe84"XVTGsЁ[g= ՚%鬘qS#6>w7p1x&o V͈5|&&DjUcРF1us^"I#?4Sq*[ɦӍl +6oXa]8h9VL"*Zc7L?]BXHQX]pyG6,wIR<\>z'ad{N2pV5Kk9'`j3udcyZtKۃ-13IN^{xSƧ`~fXU#[`܍0qx1"J RN_1_Өu{`nyX\pe^I#XɌɯ^)F_ ~;1[5*TN’ۘpfѣG3uT6QUlNj;$Ïy5a3t?'Knf *5'% }a^؟ ~z.n\b2Cޠc 1Ф$UEf`q_6]zDž/)=B8 :tfI=דY0g'$T^TUQ"G>ܴ-M:u78rTn/;5`;SS)f>ߘO],, }- ɧ3z5 'fF]-QjAs Ȉ},cos(~/6mi]t Y0nQotj*>PzEr< el /^4P *e-';ʹRU<4/Nʫxtt@Xo Fc*/~IDATIٔA)=)RU۠b>;xaL70ҝ`䒾~/Ռbl1a60hƪ+5q\#~UA=,@4llH𜱴GaSrK~f!0 473fD/f7'}UST']&cλx߼>3F3:Jpb ظt*Bֽ ,- ~q.  4p^lD870A7܌fj-P6M&mʵoy6*6|~(:{?+ {q 5*S1m3+ߞ|is@ gP6LZll~娯_dГ3G+|9o`8xᓬŅ>ڕU %:pp>wi?pAl+IVc^Ԋs)| 3$>!Yַ iޚA7܌nfbmll6m_Y !0[VvɢW*2}L93^aR:g"L`2~zlD\48<&t:g@bu[ܭHi^M}^Ո-Vsn&RT*&,i×l2wOAV2SVW rQ}^]_Uo`lh7h9`6lP%t1=q&]>wVFeq/s(DGfձs} tqpsi6w' a"#-h\3T 7)E[h&MA&T>y)g9Hٌ!5Ҧl0g)tğ;2B÷a yՇTɮ4 W]/iF[=4vHKH-&6Ǝff)U aI!]G}R¹0f!n^x9sT-]%4:f rl0["H9C׮vZGSjhktYZq (\]Xxۆ/k[O0L4ڷ?ՂjHiQ}1֬YѣGHOO#3$qqqkДzuQ^EJۍ3;kvVH_ZBv,bBuMiE Pr҉i`t ,<;?S[\ Հ.51⩛C.ho-Lllf8xښ5kT^ń,Qb,ZNpqk4LAЍZIv,Z MW#z+V(W_>{>䪐^`1 !\ԖH ÎA,zO뮗Dаʧ;͚!r]} 靏^fRmf3pdge.PW7f9j6*t7wOؘ3Mh$r^f/8<`UR@i5+ػO:D##@#.tz0-SZ,*2Q#t'j-Х3'.\ؚ}J guKؐZ⯿uἙl*0DW? 輟 #f-n *5CzSSuDRl{7^m[iGܚH,`"=a>"ƖP/ Z:t]o6fM- Ws<,?u}=`+2_Df(5F%5Nd0Sai ?h$/ؔ Pz@AG}i*h[xz\p[H? bq2PN'9F8~p=T &`SxF#r䆅G.hP)LGoܹ3~! ^ڶm͛V ]Z^a‹`lvdp=;.xl3y@n+&\]3P9(rj邱`W NVxh׮x9LUFNN"ys{q x:xL:.F:(9̣rB +-i`9 ֓`=cَO5,i,ٴlвqrAA\nDBu6mTl0oߞ\ɱ)Hf'3h9v\#9 W[~Xò B*UB-!*{,nڙ_@<+GtdB+!sanm M+Ͻw^ڶmKFF~?*|1dI9Yiaj¦9ѻ~C `"r(:!,oHC _d1s\Mo"t]GQT4iMq^n;# V& t3NfϞ 1.Խu58`;"=S?`9[ZYSיa K *k<#&%;Y.wXW<|/ Xunӎ4j֑JI8l&V Gac5hVrڴi;1}|8Vm1F9v]2GDf8b*<$̤Y3|n-zɒ%z뭤҃`hTvD\/e0JUzO퀣[_Bְ|: ÈRWQR&:ѮC7:vNVzfpœ9s9s&{E4|>_)#_4x@H~TRҦg^QS?d%TOgŢ;}4M#ƹ%$$LB#a  /rHPNj*~r@*"AAIzJ\Y!R3ePVјl 5(WN,!9N|6B9!'r@zl@{w-˰M2 lQ^L8r6o9ƺ"#.*hsJPpFjUmP ۤy0nFĮϑQ+GȬ>LC*M2/3n+ u&yDcsVҥk#c+/ ̵dĪ|.cg{ }Y(TK?[xa(g!)r+r+篯EWnsI@o-Ꮛ:Fa=לG{mqEQ~LE)}Jz!- {u"(r+rgs ceIENDB`PK |W6LLjLj-Pictures/1000000000000640000004B0C65EF472.pngPNG  IHDR@,cjIDATxy|\g}/3N$$de' !-,˾o-^(B˥e))-Ko$@cxeɖf;?yTcˎ$kfu|^gHC>ovځ# 4& XDZ2b5u,V;| XDZ2B?K8|*4fB"M& ,! T`i,"-l%>XD H ! H`i,"X>XD HK5[g !O& ҒBK& B@ XDZ2 ! `aJp0B<5#XZ?|l%[w]ڶ7*X-:Q:Y=%B._JvTjbQI|7]$YHG ,CIKRm.::`"BUrMx>}R%1=:4,YL0$-XN*>>>疒*?M j^ˎ ,RX:O??yWĐjy`oE%I >\,Ú;Lxz{'R͕ˁ ,B⑕4za1yy.Y͗0ha`|]ͅ[X㵅dS-㥓*J_áXI Zr~!yUXQXyl)\}c-a0gXyzWAIig+l%RM6ar>c-*[ފ9`Z ҵo5 !i |dKx\sؚ Zak2hI-ࡋD0^Kb0T &=Uf86Vm@]oc˜dT`cGMGV`X=;bw ™zE)psVVYYybW%p;b{|TWc\.ЅjN XK%@ctg(2y^ӠxpJ{xbkpx,a.mvC#ˏ^ch"S5,NU~q?甶poLL#T95Q2YԩԒ _ytcKG%92cp6ldT`5tVogN4G,8X֝`O,l?6 TP2#b>r@"֜JՔUpE&; FĂf׍6^A.}5T c#'~a]t\S|{MfEX7[2BQ֏%Y|Foʎp\sSQR>|)|hM"0bEA=s(f V}c~ ZS\~+/~fSN\!yѱFOwlaa -`xTy!Í7&!)fο;ңJ3<5)mg!o vpv$'~vȗ80Ox~sO/>wb{w.=p5L)Ֆd#{ckM:t[pV2Yݚ8XZs{3?U 鋎-nO|Gj_2PgÈݾ\ bO07=";cW_՗_3箜cTc>#Pް&zNK7gxVv,!%O_^yfxO zEp}>zgT|v8ן4~-{XӦGO9Z܏iı7ސ]|h?qS0yLaXH'zk'=;. ?>sbo&\-uѷܘip,!9~]3N~w?166H9{wFOZ 𴱏ݕʃWE ,ࠚQ+;UE˿oJ]tiÚ_ _?[se9 fL_ylӫ)oyno 7?|ܙSG?ZzS{OSP`ɠf ,!E3U:un_I0|?jv~-#\=ǏsS⍙mxBKG]Q|MͿM,$ X %WM_鏮\s➏ߕ;wE1`7Q>~;R_ߐz`VĻҕ*^pT3?iEkZv擂!*=[~U~,Vʻ-ϼyUX#x904XѽǎxO:\1ydlFU4UW\2QdmΒ1x~aV?yug嬪pՅUeKnL'v?<. =Oo)'{{>Wb鋏h7{G7\' r.j >G=Vߖ~1'v`{?K7z"])gPn]]ʿ]YGOZ&YgN;Զ gK]y و*>͛oJ~wK 3Z M{ۥMwc{뾉B5++2L7SÕ -L$3tnj׭ͰfGǭ~٧9rmަQh')O]֗bgjW7(ͰV1]&W~voӺY5檹_+v*Ԗ9Xܽȕ:*?Kft ㉯oMxo;n|eV,cgN9|E `v#*;E6kcBEz|%/roʾꨉw7*ȥG*~,$|8,XPJxI][."VnMߜyQpsRcٚzWN~Rg>}=xʉ,XR[~ÝyBǗ|SDm'^yC{q/*F3=A$ XBݺws:~rsti*A\+Ե+un3/ P;|^Kֶ슽9/kvmgO:Xq~77aHϪkb}!78ҙ]onI#="_AWd׮W5# w՝sftbqE?5.<~ۏ-M ݕ ^ӗ2b eb]x#'3ފLGu" `yyJzxkzW>pG[&1uʰx6š-[,!e$ Bʯ]Xaq'a{_>c=: wTU`?T`2r\=Fsv[0:OǾ>j\,#/;Wa|-u> {nSazNDO_: ԬoqZy: /W~uWjJ? @xp-"*`'/Y!k>L#/ kX`rQ_˖*KjvO;kۆS5eae !DIGOY](_,q #{Ztn#KmT`3kؗ/[˥;s?ڑ?eۓZk:""eᚻzZ5W!>ߙ|q_׷?'eC[J2&?w= >[ƎIu?!LҀR⿶7މolk/1,H_xSN(/ͿLd"[^jysb/½X(u+ҕL<+$vpVQX/6+zB42<0jW B"'%Eˤh#Oh/<;Vw~uK0(Ư?]ّr a#nc.\_e ܒoiiIn)i/BX}xxQ#oX=ҝx,MW^b|(V>@= G|9/]Cwg׏&Oh.n[@∱;23ۤ)_1ookK3o7Q_#ÎG~xcjh|_ֿnikw3Z ?`@D5+wxFӝ]+Y-e_?[|w?ydM6v V`jt%Y y[)}ԁGV#o=Cti7|3]~c?Dv}jن0v9݇ ͥl",ӏw ,t[yD|%ϟw$sg\BkIJ:^V2yEXWܱܳ6]Z- ,!hwzX+K_:m7wf`]}wz'wfX6Q6Xe * Rڑ?X-|dc>~_/@WviñBn+[O阨Wgo`@tiלӨ?X OjyՔ'n|q HX)gd% Ӧ9W`LK V`MTN_ԲyOHgՓ*`MGc,o2;u"HԯPLjդD|oÑ jVg !^_!:[XVr9ܤ5۟P8G.J*ꨮaL''PaQsɠRѭZX榊>vEjsNU& L[=kRk6KVѭׯѝ~xŁC?ٸ%S~;7`d+# PsKM/JTM_nsci(L¹lWӌϯ{ʆÞ< ð\_&%D]J%]e+Fj:P)롙+uĜ(4~_:oG=F7_,X PzX,yH~-1%#ZT/V g+J==OZ5kI:qZ}f7`DXŪaVk?*֢w~͊ o3 G9ZNFv;S rČRt:9`ækYα N%<X, g*ZVj`-%`,]3Vo-)FĶBW}gG/wDG|=ȥ(߻mY reu*o2TT&{>H+S5yabC|MKa0Z?8嬓'yuXOv`0\.WM?Ŧ,V]GeJt-vghyBSWtW=?_x̮Vn#wݳ0sД?ù(uTF2X؎uD[TX֡#\U"ZdaTا6tf,GdiP5gbS>czS,<];,^]#kd #`p8RTf'zlvO]Gޑ\r;Gҟصvϡr?>{Oy 99q7zή|M#r| ,ZdHzy^H~ޯom=gwu*xsz(_}-4i>=N{ W[v!C{gAVOڳgOP]o_-&OX>uYcGgJ+ғG9 ꑼa({`A-W놛3 6<}/׺`[$>osu,ݟSN0W N>MU͊f) b7 g'ù1=_C^ ^<_N+Fj[~5 5K@cT*fr榦 aVݯ EX~eY\ޘu5/^9|%0Y ߴujNib#`.J&mUMMMT\ygzX)(mSz?u+KmuƎIaEDRS*vUIS,.5sSqǖ]v$|X]5_<8i(!`ɒdo!g߳5yK舉һ7 gS5ٲ ~ O5 cz*( UÃc}1Qo Cm.%X,#IV*jkkL}2W]G0P:|.R[RuFmYy7f>b8P[6cMzZQOԜ =Ŏ 2h/V>bҫI?걇 o,۷wvvf2KVM%(š;6-:R7YY7-ˮ$p6X婥ˤ ;kso8{Ȏ:E3]-6lEv8tT\AлL[=,eRU,ǾtY.ۈt}-߾v,{:RS)g+:o +MdFOj}{D#6+Y /1z|V~u,8邬l6-r%ş7uT[6<9Qz'lpʽVW%QTvWrQ3o>gQ+|{m ";#|##5\to j vёEz5 _0X?m@;mب +9+9tAV6\YWޑM?Q끾=N-^ة&NuzX,|>m۶;vtvvvww'O|IWװo'6ZN-d]MD䢽Y :*]:::E֊{hz0xpazX =`*>yޝ{JsJ{iob5}T.jg]uli Vƪ2LOOO[[[찗ԭR_E-/ c_|5h3q\R%TdEm$ѳXLXP[[lr?k~1'0{%c*ʖ+옡jIǂZZG XPbq۶m;w쪊ǣXmG,؜ dr-J~JR___TLF|\~X-a8"B[XgC`2Zہk6G4k}5K^RIRؾ'֯_<~rKgMjb'ۛ;҉tb#mXRT*V3R8m_/rX~C` pwU{{{ooo:œ{%mM{RBp_bͶC)#v()yygt -XlOjx(+VKf[~F =uCkz6#6S'{Lbf}ӿ3{k?'^^[w_k ,gaɿSɅ0111R5yX,nݺ*jn| u~P[&ҲbŊl6[ϡoO~f3!. t# 2PWK7y;:ۍٗ `J?app` Y(ZL̶ۛ$^}$jֵdi`xʥ/au؝pXy*ʶmxxjdda_1W{I&bGؘI2sSw7&[%>K0s h/1]<?|ܹ޽Q\V*FnRM˯SzSj;7[2"9`P+UO~}rhhhZ۷7jK[R߽{wwwwWWW<ހK] ?m3w {sC;򚧍z V؆ )7oT"W徾]vtvvbui.w6)FutshT}jͷJ|9`xMMM'W]wݵnݺo}R8~Ԑz1Lqǔ.U}Z X,VS[>ϟz888xm~u֭_\.7v7>>q\.Zϡw?m;k i|||ӦMl =ɚ^5Q:mxXqDye ؙo$7g}nߒ =AhAX㪦V*77|ڪ7vzQ7oޜdzzz2u" ((^sJ1&bH"-؜Il&L3L;Nm_+ B<juN>뮭*i^[lٹsT5z9ۛ:m~2Y s0[=r.&B_f_~W_;vttttuuRS>/yO-n>Q Zyi`@ es&7oM?)7\>XPod)U7lp饗^r%^{İP(رo16z?fW޲紣K r1Kn'41֪.K.GFF=xp8aK OqAUPXf%\r饗nٲZ0Dio=FyXj^ bNwdzjˋ %N]O~nJ֭[y-h_0̡P yu^4nn˄ }C[nJbq!;7ʾ"^i k;ŗ?9)޶!|_;ߺ6u^M,XVZƪ+K/>88yF[[[emRGVx|ʊJ۱'s(ew{-,R,XLZ[[T*]76z^k*L%Y}sjh4,JdU'Ω$[niKUx}`;m~\r%\s͢nUTd{U6mh,Gyt.K.< 5z^W*v-LӭUMMM&%Ubq͚5?O.-[4z^W(D"2 NxE=`)KRgU}\nTor*577Oe%",aUЇ6o|%g?[fMPh) Ñm۶r$+4z^,<$,;W~sW_}e]~7nlo/N7V"hX,XΫ^~Tu.޲Bݻ'lsssKK=5OuB鲬M65z^bMMMSeY\bXhnn~^{Yڵkb6OaVM^5f-,Nz;122rW?˷ly_RN&l6=;f&^KK&瞩_׋[֤R4fbL&3fMtg`ssR;|> 7Yk'&&= pgTD"1dMQX,`3&'&&nkf͚57pC>oK\. i.Ve2yV dV5y](n馩ʬ믿~||ѳ;\SYSt5yް֒a6zJάz_,o5k\{\UYSID3\bT`5J\T*zS fϚ~&LNgM8NI2|B{rnݺ5U7t@gJU&tX,}, H$z;9p˖-zu;wlXU>Rԁg4%}"@ízы^4pcǎ^aXX,L&STjb<MYryUSwqmMY֭ۺukcWSaN5D"qxkRZ7KU{[ou:ڼyscWO"N*ݚ8@<~~zѕq E9USw53~C!& ۱kҊ+=4& XD H`i,"-a H`i,"M@%cXeB"B"M@ 4& XD H`i,"M@ d ,"M@ 4& XD H`i,"M@%0lT`i,"M@ d,kT`i,"M@%0lT`i,"M@ 4& XD H`i,"-a H`i,"M@ 4& XD H`i0 =8(XDZ25zpP*4& XD HKa9A XD H`i,"M@ 4& XD H`i0 =8(XD H`i,"M@ 4& ҒXsJa9AYB@ 4& XD H`i,"M@ 4 ðsR@ <Ī:sj&HBYRYeT I+-.ffYA{ i+aIVTf$djFM EZVVX-sq@ę;dz?׽!@4 h, XD&`M @R}}}g @4 h(=Td, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD+EQ";&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M Z(jف@4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 hJEQT{, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`TEg @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h(=Td, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD+EQ";&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @RQ՞* h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, PXD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`TEg @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h(=Td, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XDV*3@Ev`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @RQ՞* h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, PXD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M Z(jف@4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 hJEQT{, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XDV*3@Ev`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @RQ՞* h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD+EQ";&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M Z(jف@4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 hJEQT{, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`TEg @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M @4 h, XD&`M Z3@Ev`M @4 XD&`M , XDXD h,y @4 h@4;&`M g`, XD&`M @4 hJ՞* h,y @4 h@4;&`M g`, XDXD h,y @4 h@4;&`M @4 h, XD+W{, XD&`MyG}[qv*-6mڒ%Kk38ODۄlCgϾ[mp w}wQ՞kg4诿jx[SSӷo߱cǶiӦ,`[Yt!C֮]vOs1-\~ȑ?|)STyUV׮];=zr)DsZB,U3fcj? ?{ipu֕?βe6=8s̃>;l 6W &L:cՍ?^Ztf/^\[[C/&fw42dȔ)S6+q|Ɉ#6+WÇ?#[|7gc*? VGu̼_~e˖[-,34>hѢ gyf'6}ݕW^ye5%[yUI&vmm۶ smy5557xcQ[\7>|O?+/^C=c7nLC\z1c}3f̸ 6=8eʔ,8qb 7W Gƍ#ly~+V4yjg}WXz?䩅 q[5_e'O^dIMMMǎrM_j8-E5y|ʕKΝѣG?[-Zfc=k=svX|jkk?MTi_}U _XK+ZfMKVh沵kZ/hifW]uW\z'7駟n:txw6=Ү]}.v x]wui`]w˛_|qС۷^cnI*j۶~5״knkkke˖Oի6m +M5OKAX@ 0oԱ;iҤ??h|vժU{H}}ٳ+=zt>}ѣDŽ F1q&pM]loRnnݺqsOgg͚۟SguVAQ#G?oc,sx OG 2` 'i TҐebBj|h1̯i32#[IZSd ~%ߵ֏q]뺯>=wݶ@w EUFKllݻwKɹc_^UVVfƍ]}}}ZvnպvCwO6 &,]tϞ=]W\Fի111#Nh4YPw@ 5Xi=Y[=88XWz)S$շ ,0֜ jiiqdO+*#%Xo_X c_J9As9 s V<ߺei;ơr]7o˝"Fqqq1L]c*$^ Zv7[X VT%V*588fŎ.^oa|@ ,t:]OOehT3E+((mំセ\dRoo\d^ooolWZ5度On٨ W9[MCSybN?&MrOH`0.xzzDq㆚mmmr]rD˗-ۛլxqvg.G_fEgPGTp5`+dX.]lL&ӧOuHfĊ_}e{CC榰\[[ۉ'$"""$6m\$$P9-T_;l###1rw849`L`]vɓ sM&ӧ~*+>aْ===Ǐ_xŠeee] ,l5k-M6).{ o a}}}FQW\WUUՈ ,qr]v<4WFcX%&&Jvt:---iJHH<[rCUWWMIIE;l޼Y29S\\,b||dL}#L4InxXh,X@\aUUUFFBQQQ;q "99YJ~yyy垞|Iii\ش4.xb~~]W\\,366Vb3r?O'j*ˮέ[^pAr_\\܊J@@\8_~Ye//KZd2VVVy睖nܸQ\jj=Xz~Ŋ}dSRRRҢ:::.\p~A.^̔L`9Y999111> On:/_^ZZ)[XXX]]hѢh4^~̙3Gb\U:S.#{zz{ joo ^… -oegg˕Ŕy'OAZʎI'n`0__c=Rzao\zŋꗻ;+gM81;;Ln93+k֬Q?~t9s|1WWWz~h{BBٳϟ?/d2L⢢ԏ ,ƑS斗%Zhhڵkt-[ھFٹs_K|kjj\bOիWG5qŊ/#ccc%՗0;wWUFضmhUOMMK;v*ϯ^ZQ!8YVVڵҥK# \nڵkԽ4yʃ5͒%Kov>{ݻq||||nnn\\sIII9vƠ G}Fqh TF}v7nP,^֭[$%%=zt|Aqh*7lj`0%}ׇ>uTKK˰111K.]hL֬Yr>/ p̠ ۗtO?:_={vXqwgg3g&$$vŒm۶gq2gD{[ew}[˧zGS/[,%%ȑ#O,wࡡMMM'N駟xbxX'_2n`83͛7[[[z}@@@ifbEg3@FE|L?^tSNNٟ~mEh#̛7رcgΜjeFӭ6a4ţ-Y6$$)3$QWW`0L2EXO+oĉӧO\]]يN_#Vgf̘a͈hw+T3{-XphC ,84XphC ,84Xph$( ,84Xph$Ш ,84Xph$_!D^IENDB`PK |W6]F##-Pictures/1000000000000640000004B02C5236E4.pngPNG  IHDR@,c#KIDATxݱe;rA`⸳N CFruZ@Qo @n?TXܯ M m6(3@@D@ ,,B@ ,,vf 4 4f 4 ]; M / M m!a&HH !i&HH۽2@@_H3@@@@{_~s,Bf /@εC@ `P3 Y! m*Xt@q { , m ,Bf 2 4GH X! l>! ,,v;a&B@B@_P6 B,v,v Ӟ+}y9X?xO?ml~?~}8%O-|˗/>}ۊua˗/p8-۷o-~磣W^F1ED]dp8_|y899 Օp8*7ѬߟnDi ub׵p8ñqbu5/\9?j`}p?;T`]{nzP+,^|9Gpl߿oZhƯ+5]U"U?us8ñ)-liԇ! _\\`Wggg-p8m>m7-.//k~xX; X ͛7;Vs8ñs jE'{ZSk&X/^믿c-W%p8~A͛7޽*,A$uV%X?whp)~~>~XSCbMcU Uj2}_Fp8Ϟ=DBTGj?!p8G ~ϟ_ Y-_zF9(v+p8!TűDE`}ٕp8)X""$/^X&+,p8DoEH`}U|?OgWp8CBүDHDK~iqmp8!^qww _ Zr <p8!v4yh `8p8؅87>(h,N>\, p8q 1h fX_p8-4_o߾=*^|?/]p8bQ(c0›7ovtp858Ѯp8@|C#u'\;#Xǻzp8G53΃p8cg˗\p8 X!XϞ=p8ցX:!FnӧOw\p8Np8cqp8Np8f:)\p89fē˗/>)`9CA 5=FNH9pJ9 q1`9M$ hA$):pp8h QPe$n By .#-v] #,ñ8"3tav>[fL[QG}r8H֙vN}bHs K"pai׷of)v4Ti X~?T \ptU9̪քG착7Ȼ·cp _Υ-g5PA^s/Bxt&:zX <:x(`7ñ2S*6C>ϳcXy8d$:Y341O>}K ]|۷o0wE88r82´p k #UUxǣܡNbz |kaCNÏG'XA!U#ϵql{i+ܬNlg_ߎ0*:c`92l~{{{}}JS >v6LW1͍k: N6VT`nj o`xm6ռ5۷o>|3t*SfЦ±8r81kެHhёh݈zpæXEMeic_^FGrw8(2fV@8={25{LGI,׬:dw#1܇bmǦp, ?/:T* ƁիW5?RU>p,cokA|\gz+rSX#m Ji۶Ʈj0G# 'X@{6ȅt)Ђ mm> XJ6znRԇa5c.8r8Br<-M1, ьeʠk#ʜ({STvpV\ϝν}6xrbPO?մ=pChF2`=99>z'<{%3>t%P١Vέ Zv3x"eW$Y!)?ٱ29fa1[kNgFJjguNa.v%:>t k=nAW '{Ҷ50m6NUU+i ?}Tb`]O1s꣚TZT{g0)S|fS~5c/`9ۂ8ٕ?^__G*>{,c]ٯ[߲1;LWޛ}_αN 7cZyo[ϟ?}4_j~}j9:Bjp8֋/F +`9^u:_9Y*ȕKDƿTp&-!e sdZz{dWAEٕ*>2Q7*fMӻoalxXhܣ...@iDׯg0T#J M䤦S} uHϨF777[RJ+4ꡟcЩX$zo>$ Y.kGG1|ѿ9~zZooovc{9k #zXYvE @zs ikUMJ=ەwH zݻwڱt@M &0bz}HLJ3QmƚN7/lFisQMn[3[CKbjA@F3K=%U$;1#릥_^\gVjBcԻJ ]j^ɀ~Nٺ('˱[5$Go.BSIR.mI7O>&:^_uׯ~2 5y9tA^˃;qR5`iU.SDk"M@V,`9FBGrNfEBooq@,ܠݔfg-lZLYuKei*,QL8k#ٶpM3~TA1v/p&7F}+UjZ~>t)dS5Hy/tKbwn.$*&G@m%ޠ/Т.b-"]|1~9h qeDڲЄX5rԹX ]Λnx~_1ؖF ,02&f, Z8j 0'9ɕ$Y<p:deJppUQHeQv%ՇAܢFʫpuڹ Ujd/QJLu k8ƱۮwRaҚZe$XKHElT1l ׺l[D[QP>TWMLU[QZ8ԩͅZ9^xSiq8r n ) =2.V՞ǚEQXLLj[ci.ѵrMDi3*]jU6':V+0y+FR'''V1ÏDf; }1e >b6K5]i2+uw-Pڷi gknaQҐr[:T#D'%uױ3Y7eDG.-!VW0S^D <{7G/fQ [k.vFפnˢ  vTpKm@+Qkzʝ,cWj҅=TxB{J:b$7[J-l3V+ӼvtCjLDZmc#ɇޞMI ?ʝ2RW& _Ty`j@5Vt\7faM ljZ Ϳ VU:*d\NX)­x  ۰E5oXn:<W 4U 6?=XB,cZu^/dA)0TcSmޯ +¼,iaj^<)-믷oFAn6mg(dZ[L~Fk|雇Hc̪fL`y#CoUxbZm\PX݆6]=8> aXݮK i[b 5ΈX5Ud"c0nT.)!\B|=5E*6c^ FE"X%>r!nٛ*4d_3nU{h}CAhާ4[[բ(R7ޢL444"ҦtK;99*-FaUJeu*3R=N4\&Nv%7e\]IvW˨GzSTŒ_ ՛no_N.Fֈ| Xɽy?&U-m` "{#rYw6}cMh1ѭW8hG <]ZUD{´BJi>r,XjB5bA QM Lj@"N:mPX(YڨGAԬףuFur*POi#=鉾خSlY̾8YIZ*uqh˧^ M 1LNd8(``=V܁ϟYie4D',7&!Yo5AWWXQM-3.jу,"|pT9?g? TMf&LaH6B;ƥ"R|zM>XZlyZԇwwʟ]o`8y3BrE#\\\ H/n(iC0%mQ &<>hj~*!BE96FveڬL_/}Լ*D,,UUu:k2#HiIgJe# BRkXܬ!Z X @hro49#堦19  r$.jܳ %(-9mZڨaZBL<)+ꀰfu;]&{|LHoU79PeԂLQwT:g{<@yfDr Jщzv0)&mcFCrGm¬pūW|?h^c;ީDVɱ†-!ihPIVTH:Y-:}oK&foie MpYjÊꆬ Њշʘ(>Pߙ͟*Y~YTh[=:h6&,8K?7,糉kVB,= Y$ͬ񀉦~sPՖVB N1̰אE_*XO2klº8V,Dmh+X50FW MVak6қ{I! _ag$ 7Xfav]ړ.p6V*6׸F,*l=M fς`6 `Bv ޮ"+:V+f%Vڶ3j2A,Czon>SU!s #FzH?D@hh}Idшd9~[ 躭&jP!*yvJ7WZQ0WĚ^ħ%y@KthպVU;A ZI/k(d/@r1A#T46B[Lzk}z!6PVQJgVMzs*2 ⛗1!`f#f["4rf M1 !X>q,H| q_ڏ5WJd@>;5QKX,+?v1 @ :bۢk2Ŷ^D jQ8]MA@Ѧ():n+za$X++j겠F޽3T!hlˍs7|U~i`җbxuDmJͫfpdW_#ì *eqhKG^l<&!vfcFjFdá ʫK!uN'i+᪄nm-4Sٕ k#&Ŵ*MF5a<p,$Z 3 2]/@QZF<xp**Leh.!,;&t!UP#ɺF 5l$S =se iJ̓^Q8p&i%:J &ojxf-ߔ*r`@GyR`z"#J,钡ynE@F!;n'i6YĴRj_~~.+A9?,67,-ʈ:aJb>hP{-ZDIEOQI&0"s5Ifw (H;֘N&C8uȟ][&qP16,| mّ4kQDm:j7ʮ; ؈TƿV#k'&W< Bx(b,>, Uя`eY].3xbH&eE%UCYlHVP*մT2ռkYpz!j3)Foplku`P~ _ .[͙'5b99XS]'͙*gUΕ aQx1MA21R ޣ]r,si^NZI&>x1ne0# 0P&X }HU0xrAD:F1/$Cϲ-4cQVrgJ"s2hDȗU.pX08m zR, VS>ۄy qb{f6t`dB*8vh̐ND"fWt]S&B l5jߍ'ZL\5oi.1u :R]i㪬"9:7GY/ L-w٘,BXGԈƅ~V͉H2QTXti#Nln-B&5㝓`=U=g:,G,ʥY.J&9cHW,S7{cgTYZju/p0US3r' c5YY;&–^t8F Ȝ]/wq}E9 mwE nTEomamzS2LsD8S.tּ:׿D* ,(r *1~RߢFWwvxkZcbͬ B=KcVzK gEՔZm.r @Kfvp G 37ƉąfX Dk\ı{1X` RơUEXqӿ^LLrl|,T#\MeLWY|F nG@nT䅊5 /#BTedR9\B,Ϯ~NY2`jߵZUj\7NHBvүk4$3, 8i?E|a!ׯY!6M](Rjbbuq8M.6^o;gk 1UJqK%ԴvPJ&1-Pr2h̓G䈚`9|$={O YZ'؍HgW;>{,߮Np]PUƭ&=]MB&D;5YJbܮ^X(ݻwA©j\9?ohKҤ45 Mj ɈR;(_SfU_FI}Q "3#h Q 9XN1XȺK r#M6H: zX nWQ:F]meNm0#wFLdщVc`"$2>&lr XRg ULΦmOoeoڽߤ 54o( tD05LjaHo(Ǿi0ͳ5*zbSȏEUeJBP͇Zb|d HX92mnY<בEd5l>q+ua%|*_9@Q*4ժhC#)?V+Fk0%эmyLU[JF/eY? jVڳiujʄtMڒ-Z5u+VWBI18k,sEB Xk}&jZqdOǜ?|m|}Eiq+6SЁ%5%WxE͈ECp+s`m#`?"Xq):bƒCY h[ߒʧ*ߡ5^GBU ,5i}:""ڢ9A ڛ\٩Do:HUebLkrGW;հd)# 4ʆk 4p QQakzQ!T ’14 :KҚs׿PCaA"wFW͡z5? ÊV>%1ikY <c66KqMZ4~ΆB-TBh#dв.P~R3V-U23t-V{j AWSpK!j #T[*-tj8R}L,l*mr^r֘`? '>gqedȔ5%8E)#-Oy{1t*iBª}zz*Zz"VʌVZFA9_M$eH<\f D~5ߴjc\_24o$osB]X5vh#XKWMxi傿ʱcB`aeQtwHߢ"XGqyliOOO t$n-*ռn@"LT(zF ayhB qnH8uզUT ЃPPwzn`ǠҬZAn)F'X8j?#PD(,hj󨬀6աEL3<==ÅvNKꭶH̓ {kqݦVj/mi,K/a2cfPoW#7ت[@Ϳ®G|]]LUYnEMK81귅rt9M@4Tğ7@9Oe1ԡdfN}Qc7ti!:⍆J^,Yj`sPc@h:}8Ȣ`D*".3;Dٱȥޓ-!\]6%RJ5j M  5|u|@GIEi8Vikzd ޺WȞ8A ,D,ܖ&̚ PbQUdR_<4_S›2F+ ȅ`Z1[Pe/f\Nm8sH/L*}{{09??Wr<.g3D9-h ֠. 1,J'XNVy6PJXq71tf@-7Q^h-LQ: Rj꡴D.!Vʟj,A"ٷZ+wh~H:͎Eݷ,8`l@Mib3o޼yeG{ᮿڈwNx^tOO5j+.}P97%ĸg$+ClX{%pW1 L6gQ8ZX@lXL+kW6hXZ9'H432^__kuIU ۼ-`w5/&Ċ⼯)EM͛->9CUxoPx,2Ks>cB.Ϛ1 z P&j5Oq,/S g9F^>Zxf[y=XЊG8zk3H Hj-M9|Dd_`'jRPkAp Fak.EfE,YJS.h.霪 V ieyy4U9<&v&üўa^#LӴ9+pmF;wHɪ@5)Npdd -3LX8'(^vypM6Ʋ$ 8eN|ltl1gы\oiyd@SHnZJYBz/n7^ܔZG(,8S#Zf5Uy4ݖxv)}u߆5.ft'ՠJ -yQHH3cQmsO{ XZ:aώ9`IYTgbWH9jjm)r6/PUqJ\^^r6c%(J5G ^2n*AjN^j`ME6RkE16J5̅6WMZBeCښEV/;H) /lBJ3u/ ̈^]V"a%ټJ ln&+cmbTcL7>1xwwqK2"W>"la X񑳫 t`O%-P+Rf"}G#;' "RMOhuzѥËJ94;NƮR…&a.݋ 5rv6gxva~.@ޯHJ6$A8h9Kov8+'Lwcnw@3YL)WfK{h0}ni6yfOaC"^V8tݰAa3´?`:Ɉ8>vוZ$C:ۦ{?fiwJQ9XP1!X1 EA@ M(xvitE5R:"cQ~Kw(}t42u/gYbכa}՟U#.ej[<ҚZfhhd5njAXTBBYk^Ad+zjs*ȬbSXV..vEđt7ꃛJ IG-d; W"F!Huaz=͎&hh [hf ӈ`'Gּ]"۠AЦ4IvsS;Yٴ޽{[6œl D^^}E#83$u7DBp rzW~'m{nNŹĒH˺B6DM@6]vr/+`!-!vTjLSyȍʷ)\ptei#O9P)w\Ԫ'''UVkX:e1;jӎk 4Rs@֨PlBJhhj"4 aK OUlp@&BҮ>ٛgV}& ྚt![I N9 B(.AH%Wv*[b ;-,( U2飂0'P?D]Z B0[0@)̼ I- j٭[`Mg 5'15oQyoGz>z?m-35/szFz}VJzp `!l;]i;5+ıĮw0uH mJMB"iQQ^Z4XC׿K`5{/CU65ahŖH>&K⟅aȡG MRN '];HV rbȁTE*HoPUk ಑IjA5{MF/..[U{3"Mxz-pQKU^Լ8A7K8;Vڦׇ^H 2X\,{zītd<3sYLB˲ILlgUL9XV4:zS;^PGwm@{ 0Bl<욖]D{X|n ԅ$Ԗ}dfx"2U(T"I\V3Z;0EQB`1q瞘5yBRRP+O)vŪި< Pl+Եګa9WyN@Ghj+| 5.+cN& 5߼y{?n& lj<QTV<{,zb?Fo/ÑS= &BH5emgr[Cm& Zژ*ׄll=TXسpHu(PRBdi>93cD, /U?d&@n= 5kcNNJ=F Iq&yşSE^$NTp9->@ kðsȖ1njhMB쪾-O VE+P4gYK4":Ѱ 52[(%_s#v}T203u!RCĨ-wb \<QV$,ԿX}iCqvvA اpFۓ6Q`zE8z/-HJ@ ^%FsF 9VcyJOEa02NX9۬3o+9[ y3$3 2IGlǽSY O\4:C = >?hp)R璻ZuXr~-{&sÇ"ޯY-B{714y7(\<u\v q,Uگ_.Eꪚރ,gWLoڳ f,pe5<и1U= <2ԱS/ӳ1#j&~mƋIʰ~r9bzК3N9F-麢ݺyHV_G'XUiPBPzQ 1Z:Vc$LޣY) uf~(TFFlfz UU@ٟeh<AhR>p5,ǏY͑Δ`M'2lF@h(zp,=XbWͥ6:A&u7ÕE:o޼&NfFZ34uIűqԣIGB _3P}=z5ñآfHdrM <-kd(kūT򏏏U%'X5pՃpu}]ʄ>}o3nN.jcqA"LEx=:{l:~EdQ({}vf?U,sJUHVFr#`zUFB[ zׯ0_}7ҳ'>``ݜ2N%~U1cMiПUXze+qit*h~V(Eo2ZB7e"Q`FM˽,`r9곞8B Y6cninW5 8f{x hT (NJR= Q3W"$kB#lek.EZhR P46Ժqi +dzܠ:oHʯWaOpg9V}X,} I'-h 'ǣh~Ñ&HK` HHF4憦[6h0U]Z=I&~V~kkwohoi0p4K n`Z.ai Ck3N4c l\"KymFk.vЃ(Le*Իn)~ OAD,hjqG%7rn<c[@S,] ͜T8"XCi ٴ@V-՚(nO,!ۗjHRuLCwcᘈt;jhL>Q4G 8#ap V-A$X4"yjNDfi7jj윚XҰY6~{T2R-!Z93R%]D]`)֊⠻ԢYn\:!?XKTc}=\ՏK^|J2 ntWK0q]v f M~'n'+M"k,h؆t!,|#!Hx+1F|R=¢bH9ȕ0ӈpՏpC5;1Ԃ[xŴP fWWWQCKp)U7\ r Jm\pD(H`>e".ʆeSm]__Qj}8G$J"yy){cE6T*Qd<՘^"͌8::Bj^"oJI:QC6NϦ])> ;r8*QV,O0Rֈ:ܕ֙L!0b>G~D4Lюe"|[L(5xculX ʾ]Ejp()0brm=tei ,-ÇH"p xhE5|XٟDNkNuB ʬù"JADuF<#ñ͓vUb12A b$n X#+2xW A#4n[^S^2*>A@|^R:08'I*:xCdpϟcd^ Ȩ>DVkHm(\Wѿu߿n:qF"vHr›=_\\Qd,5QҔJPt.SǍo}Jccy>we>mڡZ%E@q&Z8FJtGm'x5@-w/BG- |ءn7Zi4Nqk|\3`dZp "L±޿h9lwil0mx;f-tf-D7ٛ#!UGQpae &-ɨu՜JJ6g^6Pg =A޿ܒ#O?e''' :v8jk< l|RD@ۏ.IC~6٬K(c%L%/r."f6a=bh꺆s{{kZeF.,DejhߙBU#!GGGKF9>L>b0ڛ TRIWsR MV&wI///%ݻw5 oVp[,Yth؀K5騄HC iR4W?~IV:Z^[<ooFebqljW k@PȌfP-H¯<0;]$=OHuvv>"-v}ߙޣɕ oA") )jl ~Uy  Pe+-<[~VUcO?pC◺NfCȮLt5BU'hNi&k&:EQgݷ,Ċ nfb V$yV6Y-]DY6@}āTE 'h7Tb(9e檒z~2 86r]z |wfgq)r>R$͘ɑFcXwZG?Vɦ%m ve.\zUs"ajӧMv|꫍5;NF"Sv C\є”*,v :???TwPr~ɀ /!X rΪه5mDž!*TGq:NlsqvCUFsdϚXfiкyy8FxLہf Ue?5޻a4>i8TiT>nZ|(tƠ1U5wB~aara=B!zI]܇⤄Ӟ!...NP-csʌٜ3\ ;a+R`C"D5_r=[Uدbi@ y ^ ݒV^]ʢAkzkk@hLֻ -ٰ;aqthBDVB!OWaTXڹ gVh6R}4;ot|pۡ2#ii,᳦_<+!ixYSBn޶hY6M4I[8-B%= qHp5Xp* rbަ%~U3{ = EdԄh91d-i({Ov#U͙wBBjE'4vGTH"ߴY4WR z%Z#Ee/1B4@d3l0-`DL"fEY8s!lڤ#Q]`~OױQj u b7,B1!J9\.=~Em}Հ_BOt8`axEuB5cd޴t*~&h`d (Dd IB]*OOO+}ܡ!Лv1ecx+ !jĚT[=%! [ı+T)jrqq_ޅzh75jr 4 $H BMVnW rtQb("[v1zvv8{F*`hvS) C=P r||̦faD-4uLmWWWz}@C0"5%LmM}U85e0Ñ\NC[ٕvCŒ c"aZځ8qt1'ȵ9 i,tQfaBQOՅ*QY L={6M#-!fm Yja9kuf:j24\Qź1HjV]p89V^Yoo~A2`>BA2"OҎj8>>.,LڣY4~Yu!Q$+vOf5DG.o;]5'mY G舐Wʦ-hDck8X{]t̮N%N]ޝE&cb mʿ2f`Tx^" 5!UCf#lSKH`_̌)r mmFLJZQ%[46W6p8,mrCzjY.D6kLIjdHnӎ'`z9CgK u=׋ 󋀵{ˠ"/!v$!@^U>#yQ?A|IQ.'3p80 VtÐ&yJ2~uzzJ4/Kߊ~iGIj ???{uB6MB9ZW>w݆ СIgV z.Г\ua^k=CA"І׭hp8 `.6,0BX$"'J{v6i\ E\t8jU`%RJZNQXj~gt*T'jtjW#UDb80M%PJASck8@EZ.:)63#¾P-~ژ؈h%RfLrP>>*o!gN&V# ;gy9;;S̞zПn+my yz4`+Cڜls9r8,rD_|]vPcFv3>y~m/+iOfIZeaumc]]nMΗ2pԄ:Cjr.XM`jv@c8E}~Lm0egex[j<ʨ5`e:ѝ̥eŔXg\Dg%uaS(u-Gs92PgKo;TQ:G_FB(J8"Wf9b*gQcZ(?+]Q6}ʨ41!bE݋"iz_BdX"%+R5枤ZB6Iæ̒B#^RQ)ńTei D5N} ZZ b 2YoM4p8v`5GNsk IxҦRS]V>e>[RBeU٠ W@2:Pcٕ(XCd+!ӜCUSapNvB~wJmt( ,;-kݿ5U"Ί3f}ڼAѰm.UӊEp8Rx2Fkim]Yd496VYvEOD{mڼUWK4 u:xttQ]H-6aWQذ\p8!Xv9DK.b,~;U,dN)Ǻ "B$.SZE Qޣ]pk)ZZћlZIZL8>*/q`cDl!!p,@[,@u{{:bnB/ktY~R" bi!BWJ5u! V ~X__ue*ñ5`.3{]:h>0Q٢^o {OQ|zNS6AqWD0)R䌬 b X Zu By8=4,lfH*RP/Sp"V^\3p"U^@S~P%0;[Bzzhvl12xUW()P{B4&oSWW_X(ӢEH||2 bI"TA9/p8`i YeF?Eao-\Iz4AɅno=Flp8[A,+Z[n%KAL//^-űنűD/+`^v,]Q 6 "b3tdԩĚq&Yӯh H?f#=9G!XZ|)˙و EdU,߯RfLe NJ|6^?'4hU+kD$94?Kt ɷA a,^Tw]OxN]etu=׏*Fp`lC)`gJ\֧)@[Y6PbޛBݠ6+P nV%jb m}[벂!2]d1HӔ5AqGqϞ]ԭ@M+j~ZCWP9}-c `eQ0°eC]`i@9~* JSISñM=INU 7xFK]L>o] մD3$8V:C:PapF7SA΃7up84`^6r葖,ql)Oswq6Zes`q )oah\$Λ=B!̒1c<<4(cxqѻ /Kzתe'6&y:rP"Tu%`WڎE I:7B(>I+Ƶ+Hez s50N'h0 ѴNS臑mA6/_DL}WKۣ@ViPt8$XM{D t޿OjNKcF _M]iSYszGQmry:XnZy٬MQ&8U~e~=Ӆ|YwUCc)ZÉxxc)rqqwYaR&r-k;t 3=k־ð0ii!#Tm D0B))DB48F ׯ;q*B{sW) r34p4K 1l9#=϶UJӞd7{ݯ"ap* BZV!2bc ᦞq"ɖڐ# kGax[Jz$߂ t 0uA;N暨}. %:P_a7=L<T;)+XV+,h819&4Ӹ22mմcohD K#HāBˆtI}:X::QE2ڏӨ 5vThͬ$:JL+CcЫ ER#P"֏۬#j18h_Zz2sw8āHRDNd9VʱF͈䤫(4خ2[#J==N)RsЫ+K K%opñ}, m<#=K"*7WvX)PJ ?@T/&RÆb0f*K`e3%[G)jq8` Vh~I8VvkfceU0j7oD]__g#s0 y%v2.PḧaMJR!VHjaZz"VT5 VY+0Г:We'-tمO#Y+Xd5jI4y6N4P R9eLXM/֘*5љaMGu\q8IF65l]777bY?C6ĔaW=X\pe\JiS] :Pݦ | Fqw80 VV|t-F/7d$bɗ1j8ZB]X]j vCƱ}f+[FԼEPnn$p8"LC@+ziɻ}ȚL٣WԏUoiՅdB|t2b51eԫM aHw0jtHzhñq+B "kQd@_x+!Ҩ+\K6[,xxQ=O?M<l %,v>ad,ThsAV>H,=%X(VSX)ҿ@2)I|&r]IB骆+{ր~kGꡡ:U͛7ifnbmU[n(Nf&] ّ*К}^8xq,r,=鹻3RU⠯DDž; 驊aOhvPb&p8j9V}0WšEg@8YQ8999??B:%$X+l*QD[pa &Ew4T "jՒ=7 LZ86(4#bWGx1r9,)mw ?}YMmZ#`c-fued8ATO>jP,"n,GCt5-Gp8!+B-!c-&Q~*D_9JxD8uttG9V0 ċ@VR` Vӭ4l:2eOZJ{W^2v2η@H,jN޿ƫ΢b9??WkDWaB`f+g^M\ip8`5\//]4lOLY2GLDlFC;Xa=yHhe}0DS5TS-:6gT?8Ԥl"p8``-wxrkͅؤQ 8 k;fiXmz$I@f5CŸvǏɜ~>ү!X+Q(LmI_re鑰".ᨁKs]O]2x=,E*i.TkjNOO iD]?#KVӾi#\__G,CMz։)&ifmFX{CKF[_uev YO >~8";!&j4 a2?nVeqe" vj ѣ-HC""fՕ4Ύ,Zñ&L mTkdbDivVK}"j2*_ lM<::J[2}f ptXJM`v= `Hּ`y"<IY'6۬\<_jKH~-BZF-0+dhHK #JOOOwH,0嬌=q,8U]Ë#"i4e#~Ӑ{YU#D[]ew}zb 2$m^K)|BBSbp,¦^ŀX..,ͧvj֤pl`iGNiLb-"fibi~|MdžU1,!4eAMwwwW*L.IoFa a{wedK!:qwFE6{=w:وCuXWm([Ʉ &[f"CY794/5>X&ckvΓÖpJeڀⅸ2x`X3Q- ũ۩6 ~t/ϣÂG/B^r{,EZa$V b5CV-܊x\tSޚj/* Iҟ 14b 쌖8Y"G׼RSG؎6{Jqg|104W8k},l󞰄5koUg0 ! ])+oQWƾ]ĹaLނy/X<7%Y8ۀ/ ?*j*i.Ѿ6%Z70Zh[uJ!:+:g;]] 2^rB c %p̡L쏷8)E?(Yxv3&rƱ<\g"sЀP]1ԀEYGdb2ۅk j!Lr3xG/ [sf`twOUɢ[J_1kLa f?*e\t;TDF9̣OpEC L<h0&o}fy BtD8mx6LCpT8H]+,954(|ʼn{zQC7d,;8SE]d$#FYhGYj0a7QJ*!D#7PѿcWd1dkŀAi䣼fq$jw99=-(Y Gs= ; GQKRF;9܊U LhW-!Đ`kqe{An,%y||dk\7T"8HH#]nb'o5lGP-MM? 'P`Q< *Jl/,_ $+>ϫXYkgr,0&u88:EX o3ʼX{* '}l\y\5׈0q0ʼnvn61U wF@ɷy:LH@-l_@[uFhshg;rUXeީXtHBE4ܝq\J\7.\22.=TQA bk_J AXn ;x 3w}\ⰡKfNn'ٕt:l6i]v[]k)Fq)\@p%hȯq)VoeWB3 #.amnSہ tB+jYӕм\F׵3fcb0^2DKA``NlQnP `y;_P!z@gx<K ^})8LfU`0#\:L/%=o~ }1WU`.vp7<`5H5 iP1`z/X܄}$w=l`E/gJV h f<<sЄvN KgE& '= Vpp40\#@EU[}n=`t7HDU+UtXPWBqjPJq4 z :DiyyIE^ 6=[^eU+y/pp !K~F?Yatwv/KwZ2}+?zx|U"śU$BYh΁BKY͞!xÃ}B7VKwh! `p8D?VzA՟e}3F`}-eRmkҋHI>w wgy]X0x_XfMt{}.hoBK+yب9viXxG="S&o]Bs {8o!^2}n0^!zD}a[nؾl@6BYI< rhTLe=v ״IOS`dL;Vø "XBf=z1xSCjУjq8;;|4jf#αQ=-VTbHuSQTr vʣjb !8 [[z}{f\.98-q pMX[**%ak\h w4<W]6 -t5^CɍnKf31E!"X`dB{^t|ϟ.egZA;`! _Y^F^^^ ߿~[7(Q?ތkas{{( Oޝ"X]@1*!P`j0w7 {N ,jkk] f,-PI=mm4V[TQp@T!k /]} &HEЭr9*}'~k ߧ*Aw|=x](v$¸;L+j[39SpWBw-X.j5Lݭ8-56qGvF}pX41gU7rX0hc5zmcxl|j›s!,[/ FxGTpf58Zt`Upy߫Jpt&o* kB!Na78Tt;@tEZ@sE ?[p95X6|f`a*Qf%ȿvzwݒ) ^-Ptk)1{W W藋Wck&gy:Gqkq! 6K1425C}c;L._YB~;"XBq: ;$sxW1q2gay&$*;'J'#j䰸k8Z{h4aϜNHcU4TwMuN\!3k5:tʔ[(R* c`&`3HQsbq92g~~ 8[s;B9Zw}_[#jh,Ϲ\N#5ճ]hw [5-n@XM4 j_EX>MypYSm'vcBI`5'?9nStAiey܋LƒlUY"\왕8\%wO9)M+n{tB"BK €He^c w2qL'2hK1ũ82SL />e̢|Q/{(!p+,k:RBa$wG4vB?sIN,Eiz*[777N௛ͦ|c[ڜ:/dmޔEA!jpIeg?jʻfJ}~}ZnfV+o^zt|&+9 Wc;.42](+%ie+!DS/bΗ0,^{*N͹Txܗd2yzzczeeRFۗ\ϨmZi{#v{&B ih;+ mo~6m(X&qO3-Ήce= hNrΖgQ_3_٧B?*P 7:ot8b[E=rx4z[4ʙIXVhMStM=??GSpd@48iA23w,?UT"!8,,RK9LBYVͯ/ۗ[J˖[M!ܠmOѝñ`] E6\^^r@l[تCHiXE9XٮB!"DWMĚA5hˑ/&ɄKh)FVMxǫ6MګXN,אÔ{{;Ⱦ@߻YXxGiǂ V+qXA2JQ =>3嫽Q|n^J%/_.v:3*AfC){IvU[)EmLqm.n\-th5o/vB3w®m ne@8|BbSکE X'[R+!08ZcLAJ*=](y r/F Î߰BOi ܫ%X<팱 ,2jhƊ5Ü2+!h[6DXi,(֕x﫨Cl*Ӻui|>(]1Kqۂh- n{\\>uDǎ]ۧY[)&!h &Q?fB dv )5%  +]t7;V;|zz 3^]]1X,жN-~.|uĽA;C^=D-S!+Ab0+0D**)WfT0;th4YFb "XЉP;*.l+2,lm*N4ИfCcm[ @m*a1O,Cv%'$XEH ,\Ţ6w,-Y$3Taryyyy\((a p8܀Rԡ+i^vڋZ)]1TUA>qmXn6u5XUK}6l` :j/ڃ0ǂ`UQ`y᫰=YAJ%5W1$т򺢆BY9bcAk(Xǵ+ט,8u?6-yab+` _ LC o^*P`hWB.NpLpVbQū+trahm>߷\+3w .ػ .[&xV[T&ۡeNf{qЮVBap2 mU4CZ,;]XMlByoooP"khp/,+}9!A-`p<%Ib,{@c5XиNpȰ*!HFs`H?Y['{8l6kN +]oV.hW nrWmc}XJ-Bc$Aa3 rSv8kƠ=??P-;LJLӝMb#o0mJg?B]!֠cW劼ӱv.|t X},O!:v>+3hv Oa(T#ȞfEwBJ6EtSXPUـ]Zd_׭hЦ^yALv%E8L 6 ;m{=jS iop,baFzyc4B\7DJ!A0 0x!`qhk<Çl R<].,V#)BBU#%ް )zV!Đ` p=uZKz=NkcmS;y*DžS_;7s8Eݯ2ŮF5|leʋrc׾GI5˻jWYl!=-s{ɱɳ+e_ !Ni8ao3Se6O?T~uA/ټv;GݖUK9JObH(5pŒ+V"LB/N&`Us7-.VTî =" saWv1aW*! `a&{n- fA_uPgmpy x orjenYjO!`laxD *j`B1<4Dxrx9g_^r9*?~~~*U-?g#:aX.EJڕ hur^Tp-X#’(" eǍgmorj 'L] !F<"uUp4'C: `v/!ĀQ P K`5:i[]6puyy ڿzW 7^\\ sm0c=Nؕ>?B#KrKFoׁf:X'!]ڵl6PbjZ.|U+ȮVBA%?g{0?>>l 66h95pq`WvonooV!kU. \v9Z}v /vJT+`3Z=yNG]EWBO>>@!G('ƍڝ9CՄpWx#BqY + !NED3Smr L&^`r RE X YI\?zzzj4U _5XY=q" ?}`!D % qKŅ7 aWH]O agS®yWx 5&D'N\1%:f:=zyyڳ|Աx~~fѦRhQmcpMAVwwwUEF*OJq(K&NX@l6ki \.F%|WE3[K`jm K׾ ]\q2 Ze_ncLQQ;X,>>>&{nBM 49pQ}]c+ $Jj% (Ӭx͍;;4ArirW.s. XT!kWY~ӳhyrdR+!(EjE'%0z_!sHk5UG atZ/|Ȉ]rO*}I!`PK]1҅]^z{4+ !ĉ#8*e+˳+*~Pz>oMC,CÙvI^%/*&~=;r 6+t b9]vUX79-45q(ɳ٬ju{R=+ț?XPE XB!<$Xb_(aV±),g:64&]sv\h /ag ɮ a&tOonnSc|;4qX”$mrӝv \Y!( \I"K4Lɮ||-2y?]D UC8&[Uva*` !(B=& 7x9|lfuKe_ʯ`?~ 75jWxk _Q8j`eBMR4Ps:pmNy*Sq"rgo"ZHB + Jj%;`pV\=3ve5+Kgf}ZZ=i]ν4ñnW9824j2hW e1D#LE)VoK>BQ hף;Jenc%*Hrt)`Z#NB#pՠz_GSף BQbT"͌9Y<ʊTE (TN; geoaMNϟ4$,ʫEtźB *U !DiL,*Ux>/rW?dcY̡[UMu ٟUgt穅BD%QaªX;`E݉[HF0U4g0JdeyB* C:A*}Œӑ螉Ĩfm<ʚw-JtAkNaUT,`P4T#9eiKGX1QsZGӦ8B9ZQ+:K!pO9e"[i*ڒs1-WKYl;CT얨WoPqj!B-Jֵ )zIqARoe-a+UYv&6"Xc !h n$YK+3sF?LzUBjZ!DI$X G% U)˝(^eBYhfyzOCT !DkG^__r^w(BΗ_R4~IXcq2iX;ߋB-q+\V"=U?Z4p{Xԓz Ƣv[ipP!HbyCpl6p^QqggA},,V*dmU2L}vq:H jj$aU"UDJ!NX}2}ZMC]X cQTمSl !NX}Z$' rpnުs8HStJ-pBqxQ$' rp:??>???n5J(zNS)I־.X+yBXvqXhI Ym$_]]E3˞$XbDժh>] ! ZI[pxTEscqjo"`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`_?X`3  4 4 G|@B,, w,HH B,HHH۝W~@ ,,,,,, iii]X X!eXY`&`&`/Y`&`;GtM !iisA@iiiii;! le;,¼@@@@6?! !iiiii !aX 2 ,,,, w,HHHy 0 ,1  4 4 4 4 !eӯ(sB@@@@o mW!eNHHHHB,HH۹! l`4 9  4 4 G M m.( M m7Y`&` B,HHHHHH/v a; 0o`&`&`&`6OPf@@ !aX X !i;`4 4 y 2 ,f@iiiiiiiiiiiiiiiii 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 = i3 4 4 4 4 4 4 4 =o; .' 2 ,,,,,,iisD@iisA@iiii;eX X!]X X XXY`&`6Y`&`&`&`;ϸe@@@@@?!  4 4 4 4 !]X X X XY`6?! 4 4 4 4 f@@Pf@@@#XY`&`sC@iis@@iiiii;!  4 B,HeX X X X X X X Xힷ?ۣ`4 4 4 4 4 4 4 4 4 =7WX X X X X X X X X X Xo,HeX X X X X X X Xy IXt9! mXY`&`&`&`&`&`/,HH۝#B,HH B,HHHH7( M mw M M m 4  4 4 4 y. ,,,,, !aX X X X Xo M M m^ !eX X X X X0 ,,2 ,,,v  4 B,HHB,HHHHH !aX Xf@( M M M M M M M m  0' X X X X X X X X Xy M M M M M M M M M M m=o|e@ ( M M M M M M M m_?N !i3 4 4 4 4 4 =o`@@e@@\Pf@@@@ڼ@iisD@iiieX X!eX X X X3tY`&`&`&`&`O M M M M mw~C@iiieXO( M M M M m7Y`&`6Y`&`&`aX Xf@@Pf@@@@@o M m0 ,f@iiiiiiiiO(X9! M M M M M M M M M m iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiwea6 %Es:C0ጇgS<9 gĜ1 &T<"( QrR=; Knyfi'{P2Rbf.??`ݏ+V=Gsg-X@X&r⥫TY۲ Y!m=y 4!%.^Z-z;A!P\c԰l#@1% !X ,Ą4!5J#eb˽[%_mz[m#}a,2^X ʉ'L籷fEӆ׮,o4j.Xҥ :aq6,5k'N9qSb՚zkhְg֭ߦZw&< ~[qǦgO捋{~~3OXݻ دFVOf_O>g؏3f/۩|KLVV>mzZv#o}{u8혽{/1>\ZkR%#Wԍw=}>g߿c/;$w?o#~v/wnZEl?&̚m_~99y7ЦY';=+ULrn7`]OѺc'8?c#V^{~׏<7.oѬaӈY&_ɷ'Ϝ1{+f4mܠvޱ޽:ԪbdOm¥r~,rIS~} /^qBZȌ_}u3~YǷM1<~uvй >?vvFFz#b[IzW[&=zߖrʭ޿Vj[HS~>y#nvjϼ7̶d܁ Yoڌ)oy {z/ "73: S#'Xy^rèá}i/Y8/#˩3:G̜'L3K`<'7/?srGMzy Fěegt99qW5>^z΂E>#.׻c ,ٰCխΎx:9]#Wk;si3~p{qb*#^}ٷ}<-`a{̓ R?fN|a[\KJ;&\}ۓչ}&oE2IM-Xr=xQX}YO|󶌌?/S+s ^Z{o:cSH|MRbi]RB(R?rdǬ]zYt&,77xJ:E۟Z|Uʃn_{b̙'ؒjk[+[dڜ#TZ~0-Bʕth~yGڡQq沑Il\o=A{w9KG^=17>|J;Mtuo=n{wo{>:iZz3?O,7=-#q»گc0|Ww#P,(G.^W֫k?/lx[8#w⵿_#_`N/rscx}YUs{u^.;lۮt=LAAA~u;};'1S--7ǀ_@yU*7`=>^ݢ;T6M_~]4 VgUMK[7OK{PxUj >v[<cNS*25uI?Dnԫ5_ /5gA2ecOY &z.%!ԯoլ_rŶoҰLRG`׾u+W3~{tIo~oUM#iw?/|'222n[{۷i^͔giެQU?\^#v$wX1ҭI~F ծd«^x+?.˖|㉑bQ2w9ix|=%wՏ=N[6fӳkaEtE=GGg}3#_\UꮝE1Ƚ7p13{-O32"0s|IPv,)Vˎoq&g y詷w.Xѵ]z,ZRx՛~益=ah>u>=wNKK+z׷wu"B/s:𚜜1߿WfguKۭߞwegpMr̾}D`ٽ^3W^]Z$s=#V ~]uj׈\edد`w)%KO8/{Ѽ/y]|5]~}?})ԩ]oNoPxϳ\ժvzˮ¸StW^O6蚡W~qT?0iyW "ǬTbC9bvl|WаkZ99s-ں~*U"ު~䁽/rk >cNC/q녽'_|o\&rmuL~<#|>//농;jmTRi鲕f~ڬvۥNm[$ X1_}3KԭSsƬ;>֥`Kb֬>ޮ;iؠnŊ,n̟gK0[V ظgV'_xKV ;WrG{ې379^wOkNaf/غA]ڷ]++6ߖ~ՔxjN8:o!v :A^^g$9W8_ϝ6ȵc>$y[:u3>k|8$WRk/e-[6m|ӣ_+;{o~܀v'z+V;ּx$'޳[ƥη@9q姼S~9=|={$*&##7R?lĭ;;uᢥsmެql :+,._| 5 8ԧTbO}!Yի x撥+R]G L1}+/8;FrN;}nF[=sߵ٣5 (鋮6[+TxF<ϿkqN:g_6XxQN4_x[8H*,(?Z5o2zpYۻѼYWFݜUzғ>ٗ/vl4v*U$=v9o'S7&c1$##Ci_dHIeժ=vUznαbsېgYk$?|ҩ'RKE~ɞ=wy2 wݺ{ԯ.iiiOYk7o.Osuz8\ GRIߴ*#~@QZ"zYM"oh$CJM,gm'3n]ۏzoM`صsȑ323s%?:*Usphqw,u*Գ[lj>|C_~$wY;qPvw=tޕw,[2]jdUS9.ȃjߦ nt·Iƭ7mۺw`dH9p/ ۫{Z~\#޼r"7݉Gon~y/f^ep-ow(nUGo~W8''7ޖ5AGCkHH=z,-{׫}qQr6-~꽣_{/ᄂx[mӎ>}7F_ؒ:JrGo|8~%;mпHru>t]_sy~ڵ6kORfVю?z>mq޻^rqTnT~#={u}X5f_}Ï3,^|jUlM.Zmফμo~8~;&|edWpz-oW=vmM/,\?fO?7S~lPιѹcwX[OoKc?* =N:fb+]w~d*U*~6-tlr;'y#[͚Y;)?їO5g+WUPNwکUԮYynl^\giYqϞcMs U#-aok.UT9ԣcgRf}Rjvm>5& `44/q h! h hҒE( hށ@2+ XXM h!sAZfYO@,&`4 Xcn^IENDB`PK |W6- ;;-Pictures/1000000000000640000004B0EBAB5C74.pngPNG  IHDR@,c;IDATxݱe;rA`⸳N CFruZ@Qo @n?TXܯ M m6(3@@D@ ,,B@ ,,vf 4 4f 4 ]; M / M m!a&HH !i&HH۽2@@_H3@@@@{_~s,Bf /@εC@ `P3 Y! m*Xt@q { , m ,Bf 2 4GH X! l>! ,,v;a&B@B@_P6 B,v,v Ӟ+8) Xp /ˉ-w|Y 3}RXekXҖ6d3}:w6, Vf/93_L x.[*v@o)uu̞1#{x`PC&c5_qOo_zO ol:R/]l:l?P})Vᡁb9q l.~񻃯}zW:2u'4gv&X$6,샕aH:_dI%o{𥑉7\9vMwpLHvwR۰#ˉ,ʝyW|gPSLM\)F7)YX)ƞd sKԟǓ5%y_ZNkA˜jI}i!;oX-s ;8 :oXM hkXy呭Ŧ\Edg`dJ!|zw'߱Gr|Ϭ5N#xH7zehk'?Ry_0ٜZ)-[<=Xך^Sa}/ ޸)=ͳO$ ʶŭW{#JK>5-lnvA[F???R>+sƅSURypr~UԴOXƝW{K;Vv@9r=>5xd2ќK ;-&+w<3ig!L^{ˊ^oVg5\|FÔ~ eN5`<ޱ?gP[7[R+:̿<^T߿yVy=Cn\edd¯fwBАM^qVúM zW5Ь Ɨ ^_7vճBzu؃/kKĚ1 Nd'~=cv5 B8j׫d"+ڮY1~¹ 'atӹ͑j˞ֱ7pI~êȀx'v ,^~+If5'ݦ)tvŨ!N/ "}fyҵ|^.LT&$Xqs$I\ BITZƎ2j5ٔkes֞Ҕ'P7ǣWd>;rdWSj`Z=C妎iLX6u2 /[qR~fl,RR.cX6fbܮcʟ{˼nMu5GB*W^~C8Xmph9^\hȞs$mp2sE7#=g]GH9׹$k`սmz{}e'PO|M1CؖKfgN\X'W$W!$:H) vUۧW}"pXؑv}^`PoۻҩT'LD6\:јCxR32֮^ޱͶcﻸmzG9 *~J_*=&M"4|ɏܶRr@5wfpRor}nl߱cXp5'7v55jΥ~階Iu<9xyk)fHåJѻӑ{hmH "P!|{"__]*sɞF_ 3SjJol`w,V٩ݰcB8.[p^lnw{z>C;bjkXCrsثѵj^ \ 3"7juFWycFjoY=%BP;L. 7a8;мѧ"7.ߺ+nj*ʆ7U+ыpUud6:g^=j.q?Z y]gwG4m&wԞx`ŭw6V¡Z͹`G_}>T(oM"7#),ydk;~&mY'o>%g XyQUΘa_e!/\vVcuݶ):`5dF:{Ngw ?sE{#[[ꅹڭkG'~q]c`~n3r͢Ibqb ,?w4-kw܂_|Ղ܊yażl[Co$:<}Χ[w&]W_.Y.'GKW]izu,'\Dt:\ k(j9 s,?UPڼzuu]`&/p.,hO=w<TC/5n]в~Xl퉘ĭ:7>欁Kxer~Gs?ui[=[jIt] |;-F?1kW4~m=v]qM/5~\^Ek'=2Ghg꥓K7*lwh==,]Ps1淥Ʈlku֝Ň^NTԻժ ?wu_W=~ڮTSΡ )qdc7-tTHʏ<_P_زاXF`2%P.k;E]aV/1n]6'%ow>3a>-ҵm S{U˚rS{Ho:OuDꢎΨ]al{0osN]{zvʿ}_j3IѺjy3Ưbޘ:|=we?pE_3~1ֆԵ+j?9}oϣԻDwS.cް9nQ dCWu{֞1{p7;U]vV]Iٔ۫og:3/PלS붿օ3a?ssgNWǞ[: s?{eŽ ?qݾ#_Z_+b\OIֆomVs~=t6Yv޺q𻯌􍫛[Ԕ"]tޢ76~kP|%ikHU/5E}_;je:3o[|q!LڎGz\|C˵+T<75̇v.?qż淥?s?5]tF7<0Z>kNs;랆vػo7/1+{ֺG^~ O}yhP3Y_rjN%m?vq] ;F( Rd&hJoK(b^.SwH%K_}å'n./*r1ݒ>+s΂i!Z67sC[So=9?'5fW $M阅jՒ?}YF)+V;f 2 ;2gʮZs [S.CVum9=T)TDk>9-tvv|d-zi կO]Vc#5R,i~9/Jg'pUm+5k)I޴5L+n~}+[ce,@Ȍ h!X,f ,IC@L! hq h h4 X-3 XM hA@,&` +"1IENDB`PK |W6 content.xml]ߧ \$HE}3A٤fMg)hYIHj<ίAQG߯g!ud"y4c̊<4xxGJ~pA2:"l;׭O?'oo"W6Bm1_o}q^B_1,GĕX@UVJrK7֒<ʲl-Y g[/6Vjm(^%ѥB].eø5iWצ [\rWKVDu&F&~J6z3KC%.j0W9fʶ׃Sڻ0[ KλJ.*};rc|'P|]dsPY͌cA4ٵf7F^%W®"μm6yP.N"Fթw~?Y 0=,ܦ_##<ا]AfNs&InZCTkgyhEW_hs (; sI@I>gзTP%]bl +nSx!Ihp7Ǯ%A%n}xh >`Y8 j%抐vH$s;&nEEquќn@1_`]crk-QvOxcvVͨ =p}Cn9 /;[ 337?qή,-૞̿cq0,Erx N,o2{'[.hZˠ4Y9,S+rȋOmDKYdv৅fg؛X^ WXFoLFjVb%v<|aj&çB bGUtiVS}|"g+9W|r:*Ȩ4?XjduR=c@.+f yPR&IoCI$M5L5ńl6>18 ]HUrpVtU&uAc$w+oP ,qAw.Y`V2Xa7m/?(~~0̆a6 a jJю£t+!;K[ Qx 9Vd[×{DvSϱk<%<%<%<%<%x޻vgsl^SYazȵ;O+f^ׯoꗧ1kKpmYV+ ]a! I_8s&{xBָduB!sf"=& wնUwck>>I}&IzPLs*tt ^t"ua$Qg^e,G4ar\甲\,\8 oK}LVh zc<]ة/S{Tاl_gݲH;Fz1& F?ftNU#&Ug$^zGնA@0`Ki;EJhc8t|Y ڜ mhe,6*6*6*^7 b:b|=Qx@Xϔ,kMV!$ir Y2WLt&SrG!}>Ղ9tL-BjSAi ;ruB(B:Wx3b'EB,A ۭbgYV"f>8bSg%`1 f0u"ivO,Mi;=hxؤ1T$ZɉhI`p1 9EV] 殏`aݍ73\/x1~)tZpecԽ΁KeɨuKD0ok]s w4>ɚ#>¬ڒ+mCuܺ_CZ"durZZÂ3Qa#o?:BWRHAxYR` `iZ.N]Hz5=3)pNϜJI|D}q%x 9ux,-4.#upL :522D7= kFfm\`r`UJqSNgщObO) `DmܪO 16/RY~E,{\O0}DsBl 1܅91-s /\Alк|M]n}i `V-\Ιk{Oz9SÿOH}a X߈6!>:̞B G?~ aۣ>U\EZhaAMDnsp#99Y3Q9!%0Nʣ"!9fqmIM|II߭B| 2l[hw#1mlT 7b,g2 [0(*-tbCOq[%[Vo!uz;u4a=--(A?~E}q3&~I ;5.aYw?cR#F0Nq(#wŮ UF$H"^4A4lӑi$S'+X,2X@q;Q\pȗ8`Xj y3V(HO[/\ﰼ>Xm~1W QHr*P@XFz"X/Do}hWWd*t -AevЛMںT܁NvB"Iڌ.~l1 &pqm g|ӛkԶEHg-jK)ӻT>}v _8GUʼnam 3Y*kon-16YxF80+x VVУAZGXY'O}n]o׊)(pN(ʚ0u6C?}̯\Y̩ [-7mx!LO<'ڬІi|Q< 7.°ɛ0_<<8&D&DʨLqVϣ+ qR{lB)t`kӬmB@ʄ D(md*,Hb? l )p-͂#!%=UG8Dg5X#Gp} = xU}dOڞĶ%y &ؠkD0`W?v是IdY@^n8L'kR-軟mwDH&?#-/1AA4ĭK-;6Z BEE bRo Gbo"r~J/G;5|^tȬgbiZ`T R:U43VN޷E;KyF:[ybl/9IfqRM@hMLwQ>A;E5-Bna R2Rq* /UTC!ZwUܵ^o|:GK \k:cmsa5* ] +:~Gb16qM"7B u ,bږP( ,Zf\kXZJ?45u(}lU q`<YSV xi]ΔECRY"3X"}% rj }A'5 X>L-",*w6 B˻DH !E`wb8|TO/CHS=m }iY "u:gmOg|05S?- r)u*e?($}b =T t }6r"BG?19 Uxf+m t`o<1y8hYFQgQsQJ $xyI#{#%b%rTGMZXۙliBP!*BA]Rߡ1R4 yɢ ̷J(qq: ZqOm?FFc0,Aù7f ^mߩ[:㾸Sk8ݸK|sei,Nv!:|ZÃY:;؛:6~Ɂm[^vGsQU4TK1XU,`vk+~ dž\p 4"jz4(@[{>:܋!쿛|1s6C,7 rlC,7 1K6ei5sĈ!|;Ui|(X7[?0w6)Us-@n){<`:DI'ÿw__hj;VEY˲S*EM?kw h dX榐Ud&M3~ mO2>]e!Zkrk:Q ü\4s';hԦw1Ahݱkmj"BhB%8IY xSFLeJz?# o{)[%UOY b&YeF(fEs5=#!.a`: ~F8k忦30HIJ\`lDϚA9 exd]\z| @)U r-aR$QlyN(t ꆪQhӷN緛 B0Ix:zvPE}9@Rą0DU!r2p^dY~4)u}ُ&B4UNV,/5F¯HER SWb]Vhe`utpuoIT+ 'YI{TTAǺhQ5OIkhFqY_hҠYS>sl$'в3ҘbHcNGؔ=) DCnE/b׌-Vw1t;֚N_ۂx#t=D>} bM_=)(ͧO_vx5# ? \"$m@Z~a8Y3Zd:Ȇ ?Ðsy8ITC9PyMRDM[v8i!|s$ W\q#BAEDaer} q%}I|BsQ35DN>. bH8 %p#l!@Wl A!+1.* 3J^sUK9["jא/ LT/u]Q[U D} "ݰ٪ :7UγnwMhexx ؎))4E뱛L^b֯$ 2VEs~3g_ہ=v{uYg;߫+=g*Gb -n> OpenOffice.org/2.0$Linux OpenOffice.org_project/680m5$Build-9073stas2007-02-23T13:40:14stas2007-02-23T16:32:56en-US3PT20M18SPK |W6Thumbnails/thumbnail.png PNG  IHDRxuoIDATxXGǿt lQAb7Ĩѿ1WMbLQQk&^DEDR7Q̱Q<ϲewSnvmH$=ȸ8b"J&C, 7N F&Q ]r`GiX[c݉UGK}noUGE `k"MP@z[zl.h-jKl@z1~woYU#<#*,MN:&2|ǖV,{ Ϯ7k]"-f$,MF,`cC)I=c<@x{VnGg& _wčNGFyBsژ-Bds610Id3CutcPthN΀HK2,!ahaY"|3Z74@os=…;Y!0MRV;B \Mbx}PDX 9y ^X\r^@6(w[C r|a.`)MPyi]meYufxR [<V25KIftAkCv+gnɹ_y`nBEVZB}=IϬm޴H0uEMO47\>{q¢=1̓3?PZn ='V=ۍlbaM@G'?)Q.]DC,]զ6rHJ #̍#byÇ|I-)a U)?#}-zwGoෳ5fVJSisHf{ "}(hvϬ!.M'"3dvՄMpu)sk)& +,m3nHKt餺/Ì|v+. e`lOҧ*Ě#y&ь= b)q@djl?zB|7Z,7 )m`-hIDL옦J7]`G,O'I<ONŚqلt/}Y-@LqcHbM;9D@QQ?_}(lU[trTmz~!-/|z3LoX Kryȋ,ַwS|9kǽtUYuwxWK~+U tmdCሄl(Ohȸ8b"rrDD$#"26LAGTd ^0GTx#* pD啛'B|l$gX[jm-S ŷGzg -뼒ׅv<73G[albk˻jTo\eq yw:,G ^-_(~!aT>_=UHкCYZ"i u][|g{[)#$(1aHKyI>s'7_L&C^n y7!7AhKlZX;6[akMy6,5?>YOVFFM;D4)1`ݫ4˷F"9)cSLX.ix1ሾagb/+1潏Hh ;*Or^=z 2+w< ɆM={;7E]{$aÒDŽMeێعi-ɓ6V?3e6ۿխڶk0THqپgalOήlV6x 繴{mWZ};#ͣO~l@NJ.{M_;m:ht`1¸isϫglթ[a8 ሊL.@xȠMO4U3hު8۔4HGY?̹U&[~]!'5E(ϾC!c`Ag;G'4ibsU* -2򊏋Oe'#l@2Rчt#CH{yKgv=\7Hܷ: ű@";)/HD$) kUL~Q}6k_U0*"In6d2)S|Kg1w-=zs:)K?kFܵg_\8uK;8(8Ԡ Ód=H[cO"J:MѤ9<{>fGПې6vftPȾ H0d4^\]ܼv?n{QKӢ䡤=_Uq4ʫ~ bEUf=`xXkVѾcf֞M;<{n& ŨqSUKܭ7Vڰsp$7DK WMBI*f3.bW"hL:5_b &zß|U +Nu8 xiGSzy '0A _Y6n1_FCWwʫ~?Go SeVÌ0 ov6m&L+w_ϵң/G>Oq !3a5R5Ra6uI ĢK#wO!m!\˶JslռUqωQ-Z4#7 Q0lԄט#ݦ4 oQ#*p X éȤK#ShD$79#fX`f/{ 4Ea_'Z! \L޿3pZ, [W\?!Ξ BצX&ZXnՀ+@s KҜ@N<ڹ`@G}ayo¼EVP5mO?^oοQ%]F B'nХ,E5:4f"(.\*H1Ò+@Gq=K'mV@ #mN `47kѷ0 pM&yDрFD)B= t7L$}g4v @p۪,^LjI-hɋ <_">_F>  "EVwr=>VZ)Z#}`d0q+j,di VbԶJU%_Z{]k3hZ\"CFWN4MMVtҎAp-صd< U=7~{RF pH "VcttrÕ֮*(t|*1qY%zfd"~z~;k.rF rvj{ OlU/~YN%50?[kdBEcl7 YK ٶf6bߢr 8Rrpw;DDbYߣBAu? d7:Ǻቸz&ij[S\ BoqE?j(!T^Au)@TZD2Z=+!uQm28w$JЧg/HFJطf]0; ܄k%SHޒ2|>E_fe Eʑk =.%Mqq|,;u o7Giq!'0[9!ͼrCSHf#I-Q_;("BIގAgBYGhcG`7)F) ːvDAfE8.8Qyhj[5Wоذ@dWBdV8upPS62̞]`CQo䚧ϻ!M d)[@-H\[m_ejGLZZϐH2;^JfFy,D"}m!51֫88bmElIdt)%)@'',P8gާX:۷"P(Ned^4)T޳#n߅Qfɓ \f=iFGSBlqj7pw ( c9x=*>byBEVm $̷Y 24+ ;cbIIsl_"͏/F, :-Kc{L|'b|Hd@b0&]wbb9F}&p!eS`)l;goS-OF/dEE:~fw4DBՂ$/66[s` D1)$d*7g+YY?]5C1FWJu.2 G %dPQL :ШL:s}.r,}8G O˃ LCNDBtdng-Y֯_)χ 9|y|4y$m)iZ}DdcXfO?|E^qvwטzg1t#orP˷U&Fu . fΪ%\V߭`On^.e4jy,g[јek׾y>\e.ϩ8\Q  GT9 ջ@{L<֯.P+:^K?V?eq- Νf+ZU e6_Fcq`аQT 7'#FGɐHj)QǺj~DF((x[ŐcJu?Ǐت+4 LА[ h|t[ ~,akk_"sOfJAİ!uTC$&:#c#+.0h`x-4d$|z1Q: šdܼ~ EYfZW.3G"vPs&^8)ydHHlǽ!<l ^!ߪ#Uh֢{~\F:#@NQ ]ƌ:~${vnEzZ*&M[7iּ%faagefQӅY;{{ :DZ;tׯQY<VF=Nz^] bͰB9\\݈\N;uhekgF+zi[>쁪U5ܢnK>v{ώnf}>a߽W_}t/7-cE/7I2nTU^?`ЇZ,j(ThMԅztBV6KslTrt.@Tk%ߨcl>EΜ:6426)1ZVsS?mړ0e\̋Tk&&}ѯ0Gī0>FW? ݽb5ߢ%(t_6m׮j i: 8f0~ٴ 'F>S.kG^;`6-bUNiǦ%ڼ^5GqWc>N{O||2,\ӞӞs/nf/~^^}bF5 ᜆ=sV~jK &MhNN6Hveo祥Ӟjg0U {woe;`ƼeҕX+(SXvv;CbKUiiG.[N;}VN@Ƽ!0=/(4ε܄O[1:?>GG9|^#[S]۽~9.@prD #*\QT #"2)o9"- GTx#*rDE6p%")|pΡIENDB`PKbC% PK |W6 settings.xmlZ[s6}0}hCl&sKBÛE\I1vڸ3![:Yn| G z Zط᠙}vC_^ 5=P턗7os#e 8e,Sr@ˆ,os !ܲ_SfkRwK]"8=&%/>ezw?MhaX xQ׿hAX.6oRǕ2;[caCÿsweۭK+7y$}^V|9zA-rQ!17ڕ7JU/h@?ކ/"pq}},/..Cd/"/^]6Nn ho{d1Ce($CV؃S! o2Jm| bK6|FgG'04Eɋt|Q=~!7 ]΀ݗwOh` R֖Υ¥'+ h|ë/U)[*ѯdt)"MKh}.9TB,ء5顈都aȲL8.~\P&NbyAKŃXxV6WI |zҋ5DBY>M j @lأ"uYw!Q?_,}!]~hzBw8p)pUP/A1y"UeA݁IpCqmscA3s7uz!N_UT( {협xR?C9db@F5Ú~}[x`h9a6~P\>_:6G]7l(.φwJwԧ}cU#U>JțMl:سFSG}SU_M[OX9Wc]t~L+4G-=1݁k߮ߧ_<,gcY\aqn̝%ӿ0jQ(K}ҴwmH&D@?ynˢ{|5xYR/uCI? FͲ̳fL_,Y4mgڏ]~`]O/n|qz:_wbZ|PKcа PK |W63&//mimetypePK |W6UConfigurations2/statusbar/PK |W6'Configurations2/accelerator/current.xmlPK |W6Configurations2/floater/PK |W6Configurations2/popupmenu/PK |W6RConfigurations2/progressbar/PK |W6Configurations2/menubar/PK |W6Configurations2/toolbar/PK |W6Configurations2/images/Bitmaps/PK |W6>hshs-5Pictures/10000201000000B4000000B42FE5E215.pngPK |W6LLjLj-uPictures/1000000000000640000004B0C65EF472.pngPK |W6]F##-Pictures/1000000000000640000004B02C5236E4.pngPK |W6f//-NPictures/1000000000000320000001F480A092BD.pngPK |W6I#9#9-ȻPictures/1000000000000640000004B0AF6A3641.pngPK |W6- ;;-6Pictures/1000000000000640000004B0EBAB5C74.pngPK |W66 o I O1content.xmlPK |W6ls =styles.xmlPK |W6o7Ometa.xmlPK |W6bC% {TThumbnails/thumbnail.pngPK |W6ŻA& osettings.xmlPK |W6cа  vMETA-INF/manifest.xmlPKwchildsplay-3.3/docs/GPL-30000644000175000017500000010451313271013626013663 0ustar stasstas GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . childsplay-3.3/docs/artwork_specs.odt0000644000175000017500000002241413271013626016553 0ustar stasstasPKsr5^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKsr5Configurations2/statusbar/PKsr5'Configurations2/accelerator/current.xmlPKPKsr5Configurations2/floater/PKsr5Configurations2/popupmenu/PKsr5Configurations2/progressbar/PKsr5Configurations2/menubar/PKsr5Configurations2/toolbar/PKsr5Configurations2/images/Bitmaps/PKsr5 content.xmlXn6)z,Iv5b۴@ҢWZ%6%)7t(Z:NÆ8738}*Z`2Td]ŭX,hJLUI S "`s;,TD&$e}tr#ڬ7ن/bwxٙµ/bA>}!|+…K ,i8#hrss5.Jad4ZlI b)- 6xoU2e> MZ`] xwy/2b`M{06_JX#UCB.UKp/htWϩxZ5>mVj;S86݃Mw2jη[ίp[`I1J oF4yXfHi{lf(Z2EeDB'L6 hܘTQ#= ŮNܕYaդD8~$zBZ5#y;>lM3hs[XQ$G^JX9T%A#d8'71s&4SD352Y#hahΨ1$qٲ^=UǦ$HglUqi~ls@jXQ5 jә( FP{fr+Y_sZk}-^*֙ěFb/E_bh)P*kzb(>rYo6f(*Nil ++ɬVƄa{݂h !X;4X㣬7#֫Is,{s*&ޛ,-Odǖ 軗 U*iN;B4P+P w<w9TgS& %1h 64u k[G-%N H;ǭfy~ͣ7w5xZAnK~ tBv: xF"Y7JDRȔP4JSKj30 NiR\F%X=ȼJ2iuߨ@`) >g*Ǚ Fy4&$<:M*q Bp̜vr{N{mФPvy8s3Xr"pXB3"*feB MiHU Bd`$ҋ=BP($<1RƜݨG0p\y*qemr)"EdTj0_UxKۅTT\K`ŗ;m6.x^FԞ˟lOxl>xmCW=}Jqt,|W,1eD"eq-h'ʊr7 j\&' (T7][,!m=R*+C؈ >/B:An0\*Cnl+i":7wS\67t}Rɰ̢='aI[4>xu!7,ޡVcOn +Ԭ ,@Ġ+zm!6p41 Ipל*t&wNݰ^6`;uOv7B}evyxv2^z'#LdL"qEt|ioX]gR2IJW FaVb c2v]s^gf^zʸs捼v;Am0;+QG1ۉJ/5Fքa3 U Tjmzxꂚ$3=auºNXw :a=\'uš^'d`D OpenOffice.org/2.0$Linux OpenOffice.org_project/680m5$Build-9073stas2006-12-12T14:42:50stas2006-12-12T15:19:39en-US2PT6M21SPKsr5Thumbnails/thumbnail.pngVWWZ*HQBrCziUP#@PZU%4DTZ@DW@Bb B - HެY03`wg}ݱ2>'|.egٙuh .VILNqde;.jxwt tf;(i] :d6O^NŌY&$Q/0|SwYgs VL{wUd܄\ٓA侗;/ )3ۤ™st~s ]VJn~λ׏[j} =ȊHtCAA5wLWHhEצ,yޙ!_@66 4*άfp5<@оKDBӣAi vJӊ̇Fʌϫ~IGȠJtbu,r|( &$bPkST6epNmt-(T7繪K=$εQiSx I-tg0i= CE7Ϙ?6cݜӅ"A(!Uߗ=.Mعǔyz_lrRĺeRi2tuA:MVF eK8c2Gʘ<ƒgp@SBbD=W4:`0w\ܤ<Xe"Exӌ~J g SF?/c,GR'Anpkr'))xr'*{Ia\G2 2Ya968E&8l[T_utsϒyrste.z mˍ8xdI ;r 9\L%^YW{@%-ӳTv.APz+Et6 /W4 h22;H _Zt: ޹_[_?|q!= @z*JЎ)-щʲN1 YS>WGΨeH[alzfFˈыtT(@zӜ'&gJƉs~z VZI@Ri3̗gPB(8EځZ(V Di|g V{GN4mDyy~dg Kyq?>.<50i8^Neff8 3F^(FVyoq@rg) gP() &d(oip+&***r;f URWAڜff* !0wFv0Wc{a~3q9ǿS:쟞؛E-i+V:u$%qyϷ$j wOs*%ѯ6RAd.Yn: GםBpžI|>?_VkUv=4B9C]߻Bč#;!_svyqq]V:7V 7؜ۥaZo9?i|0 o27\qqWݵp.L/<6}v/j7W twѵ˫g8@L֌)-cDL 2(# ~` E'LWVan͡P"މ" 'Y?o[-Hui@k>p4qVO(;lՎ2Dc0)ʼOl6fmȠovQpGA@d n+zP"<|EWi?3$gDab#FP,4prXm)ǒ2cIKDd 9[4ff鯱xD&YJTJttp*ZP-LR\'!m@wm'VDlmRPL-&B97SۇWO0^Uu}xm/Lç&L-Kv4a6LQa[HryP{qC7ʒQ(N|A2PL%,Q(&gN$z->N|}]qK&#/%AbA=0Nom 7do3=ɖ@CoL<.>lჰ;;Ԝ~&#JP$ }Wn[Po*PF(bG[RtLԖ3pMpR)xPl{ꪇ;VG᱒&x8m8)1,̋biORX w_%1lG髁$:$/q[ UNfKk~wTfۭ([PF/G7 uJu/(^3JPKsr5^2 ''mimetypePKsr5MConfigurations2/statusbar/PKsr5'Configurations2/accelerator/current.xmlPKsr5Configurations2/floater/PKsr5Configurations2/popupmenu/PKsr5JConfigurations2/progressbar/PKsr5Configurations2/menubar/PKsr5Configurations2/toolbar/PKsr5Configurations2/images/Bitmaps/PKsr55SCf -content.xmlPKsr5;JCd styles.xmlPKsr5t Allh meta.xmlPKsr53eb Thumbnails/thumbnail.pngPKsr5 \Ѩ settings.xmlPKsr55b9>JMETA-INF/manifest.xmlPK!childsplay-3.3/docs/HowtoMakeTranslations.html0000644000175000017500000016163413271013626020353 0ustar stasstas - no title specified

How to make a translation

Introduction

If you want to help translate Schoolsplay, you can help by translating the .po files.
These files contain the original English strings used in the program and the translations in your language.

(As of 14-10-2010 all the links point to the new childsplay 2 version which will be released on 31-10-2010)

Preparing the environment

First, download the childsplay_latest.po file from Sourceforge.
Or if your language is partly translated, see 
translations, download the pofile for your language and use that.
Now you have two choices:

  1. 1.Use a special "po file" editor to translate the "po" file. 

  2. 2.Use your favorite text editor. 

Using a dedicated "po file" editor is the easiest way, so we will explain this first.

Edit po file with special editor

A very good editor is poedit: it is open source, platform independant and very easy to use.
So download 
poedit, install it and fire it up.
At first it will ask for some infor about you (name and email), this will be used when you edit a po file, so please fill in correct information!

Next you can open childsplay_latest.po that you have just downloaded.
You will be presented with a dialog like this:

OpenPO.pngOpenPO.png
 

Fill the correct fields and press OK.

Now you will get the main program window where you just have to translate everything:

EditPO.PNGEditPO.PNG
 

The lowest text box is for the translated string.
With Ctrl+Arrow Down (Up) you can go the next (previous) string.
When you are editing a string, but you are not sure about the translation, mark it as fuzzy. (the raincloud button)
This way we know that we should try to get a confirmation on the translation.

When everything is translated, save the file and send it back to us. (see below)

Edit po file with text editor

Adapt the copyright header

At the top of the file you can see the header, it looks like this:

# SOME DESCRIPTIVE TITLE.

# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER

# This file is distributed under the same license as the PACKAGE package.

# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.

By filling in this header you agree that your translation gets the same copyright as Schoolsplay, namely the GPL.
An example:

# SCHOOLSPLAY DUTCH TRANSLATION.

# Copyright (C) 2007 THE PACKAGE'S COPYRIGHT HOLDER

# This file is distributed under the same license as the SCHOOLSPLAY package.

# CHRIS VAN BAEL <chris.van.bael@gmail.com>, 2007.

Adapt the msgstr header

Next we have the msgstr header, you need to adapt this also:

msgstr ""

"Project-Id-Version: SCHOOLSPLAY 0.7\n"


In the first line, you tell for which version of Schoolsplay this translation is. If you don't know it, we will of course help you.

"Report-Msgid-Bugs-To: chris.van.bael@gmail.com\n"

"POT-Creation-Date: 2007-04-17 19:13+0200\n"

"PO-Revision-Date: 2007-06-26 18:00+0100\n"

"Last-Translator: CHRIS VAN BAEL <chris.van.bael@gmail.com>\n"


Next lines are your email adres, the revision date and the last translator.

"Language-Team: NL <LL@li.org>\n"


Please also fill in the language code in the Language-Team field.

"MIME-Version: 1.0\n"


Also don't forget to fill in the Version number.
If you start with a translation, name it 0.x.
When it is fully complete and correct, you can name it 1.0.
If you update it afterwards, you can name it 1.x and after a major revision, 2.0.

"Content-Type: text/plain; charset=nl_NL.utf8\n"

"Content-Transfer-Encoding: 8bit\n"


In the end fill in the locale setting and encoding.

Add the translations

Now comes the hard part of making a translation, you have to translate every string used in Schoolsplay!
As an example:

#: ../gui/SPMainGui.py:75

msgid "&About"

msgstr ""

becomes:

#: ../gui/SPMainGui.py:75

msgid "&About"

msgstr "Over"

Get the file back to us

Please send the file with the translations back to
stas.zytkiewicz at gmail dot com or chris.van.bael at gmail dot com

And we thank you very much for making the translation, eternal fame awaits you!
However, please do not forget that Schoolsplay is a ever changing, expanding program, so check back frequently to add new translations ;-)

 

childsplay-3.3/docs/Howto_activity.odt0000644000175000017500000012436013271013626016704 0ustar stasstasPKy2:^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKy2:Configurations2/statusbar/PKy2:'Configurations2/accelerator/current.xmlPKPKy2:Configurations2/floater/PKy2:Configurations2/popupmenu/PKy2:Configurations2/progressbar/PKy2:Configurations2/menubar/PKy2:Configurations2/toolbar/PKy2:Configurations2/images/Bitmaps/PKy2: layout-cachecd`d(Hc``e`2g`d``a2V@ : )Fh #Tw?3*V"PK~QtBjPKy2: content.xml}rF~B5ݡڡ($#vmJr{z;& $a CK\2 ^e{b"ɓ~Na<4 jm9" W{~sp }q$x(Oqvoi|xY]PdD4[_X$˧:ض׵_7P{ǏYtKÑ3xjodҞ^\\[=a_ӈZmPܳ5]Z˽]_ָA{oq`~;=9?|/wo \Hca4Y/['IvNzdI"5O6OChq M5# %tnKwoozEpu0r/. EF/Tx4m" .& z*]ȏ Td0;z@z/G˿qҏSZux1Ύj6 ޟQ}a{֝:8q&zĉЮ;ΜOЋɅ]:|[1nr/Iknn2罘 NsI-|gvo"WpSTepWI-Fae~yt[9e0S9M\ WMpϽqCt-.vIS_ѯG!0?i[B}a^s>zq䆱dLq| g G43˨<Ű;E=Awz X0uLt1K0p*.SgOS9 vsQ~ANMǝGnm c:b6A>q53'8zxˤx#A.TȍzŖd#+Ry*_MGnNR ddӬ9~k:tvON,N7Lz!Ŗl3̀Ry*;baE=sudzR.T>wbEGw@\Fo_zt6눏8F;'ooDv;^簞j]o@7d[25|VZFbɋF{ΈM ]~~;o;?;?jsmԴuMs\I|[|Qm_?ZG׭iؾ ݌b#ۤvS[\v~zK{l}C9EeޤnShSˠFmӅM:Z i{뻻 Q}"Nǝ6!Tŝҋ_:^c4g+K~[k۫0 +6b'LqmVY"VѮGoWc,=ǁH0 (:goq_(I k]w >bؒ{*ZhihIG~ρO~u?~zF'b!Ʒ{]x#9Āzħ&lI\c$MA6Bd|%1=,el%޺>D]%kVXfb9bmt+nm1g]Vbky9b:\FWRġlf5M,xm#2tv"Nd؉ ;a'2DȰV ;a'2DȰv"Nd؉ EȰv"Nd؉ ;a'2D"Nd؉ ;a'2DȰv"jÀvn'M줉4&vNI4qv0A{}e*j/OBI i,Sfț$U$8bY"xE,Oa VgWv'_$-Hb* d`b!̧N;7 I"C[v>zEo;{/_%)][@8=sstt^i~IlG,4p^-aw a:${S'@ C%G3Iz;({:_ˆoj-";еOȃb4Szs2R$N8o/ a΍UIQ&~@Bث_y\r"7 C1z!h FI?Fr/;q 46/ێB? `XڧA2E`׏1A.'0yiN97C+P6A;9/DaoY2j d"8r3MƎ,3arGxYXDۘQC'#/˨I0;Թ%L@ح ;v8T-,rES(@w7Qvyx]gmFS_cSgzhLz˵x6{"`52%%߭'܁<Ͻ~2{UEV?Hì'"sBT<Y|V" sL |||(ڑi!1 AL‹3(S"^u(63[@$;mJA"z0Y5L)nr J3[00ŒQlG MA`4?8獍­ϖK}/ks[ra/s-0]Uԃ$ GD(g+T!XuPa9NҌEzIRt U 8OԬGp$G,[>3JS[piye鉼(O*PϬE)pAgOj 4}c;I xfO0]- .# St$YRt6O)J|@IpF07Olcɘtd#qCFSedvgCL J6ϡ ;r_a^f@0 RL|Z`Ľ?fCؒzY,g3<%/HՓAQBqæ7e3!Ў>|P&VfT?9L ]8H&J,q&jx80fF/@j2?Z%uzi2DYFl1RŹC< 9^yr+MѨ>yGD,.K 4!ee DWV,}ۑ 9yUP;N1CjUC42s ӢT^]avl< >#ZMTI{CԀedh[q i0>-c >#)=Zj:6}xx3ǙGPGn=5xZڮɓ)ATP6b'KYI%yRebkT0;C-פ{uL觊<~ӹ wx`1 %IMN"4÷5i:jԦ=%p'Zɰ9`j.xE}wE r96R>cR9xʻnfy 'YVe{1&^a eBԀc/t1F^`<򕹷=m$nqXQb(hBWjH̎[Kb!P,ɇ&$*hͱlƾS(sV(}hjk6YN2J &C;m\\_}FJ|(DeA"n`ԒRw)CbWd](\JсfvuaEACePfW$^i"dhY#d{rѮI+7%3= AE8H,] (ev&͐Wp' HiLڏVl[yt:B%YHg:{m-|b hGYSmD*)Y!niN{mj7+xe/읜LP%2;oE'9b$XCC1Qs'Aj$]CVra]O0PS#H& F,HݒTPҢVQ*2Vн|mtLQ_"TlJ$zs ^BM,i#* e,Oy2'8SF@"h+*5b'_[}?m$86J؋L#'N{wrEk8rT=3^U&gifH}.Tz6A]BN)B1 XLI"ykQ!3 P4`0SobKLV#ZgUd\ +jTC7_`?2T)K}jI-J#yPg۶1l ѫ2>4=g\ O92k*EW^n٤="p$L`$-7L8-6d~'H~QζtJdiDE}&! ×be)56 [Y2&\;#cY8AUu9KU+҅V6&BƉR{LAS4oRUGMˈo9c:3Yi5:NKM)ZZAQ]QOt>$^ח܎F͙WA(A.lX[@#j,ebasGJ,,=@ EFE 8| ,*9-&Kr,[1Cηh11c;-TПcG Jeݿڅ] r:[tV)f٦Oݿ nx A :`_fΝ<u0|Zcک6|K + lg刍JzYZR ҄hp@3ҥ!xuE[խNr5l.o!s*U~\:niy ~(R$ȱQܤ1I CsaIJ}zrY@ɲ! pb֨PMǬPaudvyϭ=J@E}~FJӁr7jV.LNoPdfRKIZOFk+fXD0ImBbx^ 32XEIa? Ѥ/$!2^DevUL3V`[-X*$)rLhπzäVq_b› U RYH9Fͦf:C)Tƞ$CqRzIhfz5wM8 sed2+ҝTRX3򈷉HYHJZMw_ǁ*%Cd,]VSq&52U%xgô>+6fYH4-ϻn7M Fͦl$(qMr,6:Aa #jY0U؃$rxtwHM*FpNd@ʞ̓mv=У:g3=ffe0U§)NoȊL2GfTIT 4=b$\aDi45Kda3̞s padUJ6a@/,tn4}*I\6yGj=g4`Aj^E J;G2XJ:"o-@L[* ]yL|X9ejGħe|qLL bGLF+J%_>vŨHhOQ2&z4*# *a.Ñ[DU[z`Բxjr+ƫ$^>i4Jλ2DzJ{g[ @$[9 |$~Ekm&(Cb]cxDDi%P-)YʴjҢ/u/x{D+HN@LZ2gLhԌXZ(p8\VL&ɲeV}˔L8Ik;|FTtpqy2 F^~Q@[{"pK B?Y4VZ*xn kY/LQgq Wծ2x$H @Ʒz.o2n5Kd(vǰk -Q k ]<./P=`Ce*u΍, +)\"듄ւ_ψ᧫A2|`&vgN~E9限.^4<3asz8RHf-Mьh娚娮Z  ˯U1unRD.zXH^ *ֳ˥SЗGSesRȤ#5r]EWd&x)&{zĚ;elKn-x!>(QBӈ*|yԹ~ !r UU ӼիNS7a 5Ү"NO;I-]L'*ȳl+ +\TeON2=}Мe&@MCeO[E!tߢ LI9ozVyAEU(*8-jg'|2 l%U"l)ӪICVQ!PVPy8*\cY2LhgVR,]a#qHR-Nq83uڬ62 v*tI9ʙ+*A>2~?\.YE\5sk͌6NJT[xtԴ %ZQUe(01ld9 ˌyI˹'x#`~T_P"gS1\b$ɤ @+Xlȝ=/t*{[Sa!Y֬A%d0oQQtIɝbwScj lIQ^2]8:]6F5 Hk]VuMbsGMF&P!Ɋ8JCK=rIGTnj,MI8B'srpqLf O&~f$!wLv粢',dL-#qǯV!ób1^j:BTFz [QNċN{ UW}NtqAbKREn352SbZ(u*>1lY?5k [D+{/A4Ue1%W'dkO,$͵LUTͧ;Lٓ9yXtP{j&1zH;-ܡ]>0S@>Sp2) t]Es Q|Mm=ѤMDKɸEJÀT82McZ(_Z" qQ O*ˢN:faR ,c7,حv[cJooy-g#-_"q+J\9@n]QUGCY)P4JC'/vq KktJFk/Ji9-)P*(|kkPPɗ_0Vaܭ{Ÿ[q rGĨ_vʬZ6Zf OEDLj..IC]vfKN^DɋF>a$K0MYYEn;-)]@Ui|c) PT˭j[uvkomy8!}{! 9&ΉF҉ CzfdichZ$]HE)Wl4q `/Qq2(`P,b8͔|pA%иfhQ_o"Q91qT^e>;B4nUʷ 2}ʲd7#_,/V-֨k)_)nB #d封F%//geNj+}yM$7+SAK~"л;߻\; .orDZgH*#82xnTh(\zB*2aut[A {;K>w?|zw}7Rh׵$aqSyԝ.0zoŵ9won_De>Si3t-#e6 ȍNT\Qrtd] Wv/LQ1\OJ&d &_Đ~VCNq^/)|RͮX2c ˗^zR:Y^׭V׭[׭QR:Ys*\sM±t.FqZZ{FZ{IE %>F`L$ GXmQw"lUЭG6#$>At8"Zd׉1ȏUH.qNE;9?١17QD+{/qU3lb-]w Na{` Z(Y L :ᨂ"F|큡3< I0-~OZXYPKj2]PKy2: styles.xml[ݏ_!(hd[]^8ޡ^z%fNG $Z6Mr Ù C݇y0Oa<.bS4t& ^4r\cy ħbŒ"N@9K,i ;ir/RzD 󝮘d{2WV씡d 6uϢ5Hߟ­r<݈8^,cENjbJ1ΰ\Q<9W?TT 3o :^廍7"v$[ļO{.uHl|2s%yOL0RzoSs)rPt2,ÞeOPyр/Gwa`RQk i8[pK=_ dr¿=?"ǩ>ӂz!!h ] ]^5^b/|E񂘯|{->??1_0#.!@3ڗp9J"HS;Ĉ<ۮ0rN''N/)5J7f\WHVQJ6:n*$ - %+%ߢ#ϱOdO{.IDP(j$RF~ LswRo>@lgO65`1LJ${*AbYQVnX1||/,EaR0=cX@G,aJ*eD5WV|qrG"R+hK4-3x_v(,հy 224R$L})ӡ)|" C % {~U'4.ݣ2 $hGN<{xZ()lnK(EؚdfbЏfl!hCD԰d:TviZ~?T˖d3Ћrt(-+ɂ)mV̡&(ż ADFƿ׺gs# 1v7k[jkrSmjR@7 !GQo JI'QnƑΤ&&O@viohl/|PKkK0PKy2:2 meta.xml OpenOffice.org/2.4$Linux OpenOffice.org_project/680m17$Build-9310stas2007-01-03T13:56:07Stas Zytkiewicz2009-01-18T16:14:07en-US8P1DT4H32M14SPKy2:Thumbnails/thumbnail.pngUTL%!Xpwwww݂݂;wg}^{~ڵ#},#-78 otdE=/ `}$>zE1OB(UhhɷʊØFhoJ!M"iѓɉI9f &-=d(. ---/}zzIElW~]ڬ$I ۩41E0F@5ЏE+Gҗ*;קV?uBqqΖ#ۧr:T`V[E9Ɛ's4ݙ-cG=ه>aJLS;:)Eܼw߁0vĽG'G0o^Q I^kB1D6O\]nI Cb\ƶ, ɖu;ɲ|!QKwdOZkz;3~n̘>y#a`CR^iDcl ܫTpQ1' F*5tU}[o66_~OڏOˠKOB!Quc*)4vw}֠Ca%F.9`,p&[#! r;{~hL [dTc*jL6a+y NaDQBJO<6C55І$|%|Մ/![؊6c:v9B9?^?}5 lpwfu qw;t?Qp(֦Ms^ ̹RDbvK]Bڹ.%6/1,|cc^/0 /~:'BF P?Jnf%[݀tAJ:#x ~8Bn ~Y!(0`L핇 >fD@/vkͨ(oomr.}>p67VG-^5Z3Z 4FBU6D#ɁYx 9.Iam5&16J'tX(o!ɖFʡS.;yoŪ1ftzWKk竏ҡҧSr{gEB;"p8su1p}zAFzJۿ 0nlJT[gq ca4x/7/F~Er2zWgtEmѣ|Zn[pRxӂ,= ]:VQ\eWXޞ3ӆ)Ů q|E b'eS² 1uc"[[jŐ[N+J9jgyoVs֠8BJO"P(xyD"ڎ'^n Oh;Vw9W{>K֧;qX9HzG]l}m&G;k1Itm)"ݱ6xnZ"M[aĶbo=JV0\JJCkcv]c$` o i+Ɗ:S^wZ™#VG; % ̚.0By^΢  8㭚bGIR(y!2bZfN G;3v86ޅb w%Kq0̦7tKm>.ԋ7cxBRj 2Z e}/u?$88)nLvE>M0+Fgo·BmnTuPb&d~U62UQTjFZ>^xep=|&// U۳r<>AfS+z+?x.ϨNQ&Gj [82mFvu OZ#BCۭFy')[@G^Kx{O &\~LaB w@$d|33N)yMl-q<;X؆n)6珖"@H;u]o IQ&Kj.."|ev$zjtgo&[fUC?/J{Vnb HeJQ"YOzȩMF 6~DzS9u#FRgԸi }.j̴?Z]SOvx6q![h¨/$ֹsr_{F{;c#d-RޙD-`]c49QObfoM8lcC\i %F~-271P!C!`IQ+*g ONe ~B˞TY441#z:*8"ҋ -.Jm=>_6dժa/Տղpn,Č݅4R2qWC9]D P߻)Syցt=6H {f?Ы*?$.YP0Ph.+x;{ZK$K:+ ?g|AUTfhqNN y6,Ja,-ԙ}'osqq:7sN&nDnH恽{$Jۓԝ}/d^d ',nNPO;6F)~^ɼ~-I ^A7JJ}t^2'z L^`u>fj64-OXz]<˹.D-U#EM:6pzD-_x 8V!xw5Ql͑=j|r3)~Tczrd6KFN@?(# FN?[<ƊҵWŶǎ0fHx\ћ>_w>Z*ZDŽL1'n1#fHO1jrxROu)QJ]-}L8zP`%](*axƇ^B?&HN[G#51b;ʁ/}0b5WPIڗPD6lSڇO嚌͔\5 &/Wu3-, S>ٸr2I 򧳯|:>$ՔvW5iwxR:m' gqd s9Y5!r52%$[ĩoh!>OA{{TA5 R WR7u>YʪOP0[!é8:!kP1m~ Cpa-BBM6qEԛ%Z:(}!H\Nǩ#npoG5bW̢&^,``#ɗ3NWV! 6Ѓ}Pz\Лn3g62?ϔCm_vDIh?f\\t#tRm]Y^|=Pe^/?lm|ʙFGR孝/^p۰iwxR(^<=q1]ozܔd:gˌh1 7.%ۏ ` p_WVZT 5x}Ӑ&ZtmKcLφ\c޺HS ~#9N˼Ei) O"2.\Fm ˉyXB9nV-'t{OK?1}\ft0{BIIEaΏ"MmBWo}W[jG=Z]3p|"8/}2St D)e [R\D23X)`eovbHYGwe/ ޷I7x#&FH]WMs@Δ3cRo@K)c| ;?$;,͆l-Ig3DW NZȤʑ~4NNW~Dt@e{<[@(H?QXXkgE_Z }`"]2A͋^_jʏ􁇮':w~nhB;ᾦ_T3Ҥr"SFOFK *@d=ENc!P9 g W?w oZC`>A# +4ʏkq&Sc~¸ijϦi>hn2;ʏd]BY6~9 TRj"Y!C.Ijo$wӛiC|ܒi>A1IdU,TJ T5':e~5Vb~'j/&~Nc6`/>,v?5CgFU5uA% ZjDɘ{CUY)Jj̯{UwP">L #֞K܈ɢmtag1a,J01i<쳬w#NrvI?U}LkQi:MnsqHֳC4JjYvQ+B*u]x^\c?GJ>{n}K{e-Lo$-aQ8%F>n~b hfVma/>Jt( a ݤNu }=ASc;yդ:N!*pW"Aנ׊O+P8wCsW1С72Mmg<凜nISI0_'N 6.Qrmj=1aNL`9!s}*"D Iw4v)ۂ9gz0(6h!ZcGj3pGOW>!CHˊJd%E< K)*jh$Mq >9JwQlly֧*RK>l7Qٱ8\|;;ԍ3T$v I/CR7fQZ'a:㔇"Jݬ:K.J)/ CӕfV4b!yU bsjLѻ.Vϫ]l?N&4^%@O&و&VRxK:8)@TްRC1$`Q~V23kޫ-?$XPTSS9EG@Y obԸΈɤIz9qṬ+?#1pw{u68Ʃlr!z}h;5\*ﶛ1ba;v[肩UE~פd Yzir4>묱DrwRYky9pWO<5biF^%(c+?Zm83MGDZ#)3h`R5PJrK* aYZVw^&.5F7fJ Jg֒wa8%%)3NǮOev=D7:iՔwPtL*!ߌ `雥'+7u@yh/s@T L{¢C›OIU]>n%j\y?X(83\%_;**A'>ONPЏ*d S';ɝh! LkPyᲹSZ^4yc$Ph\;8fӤ>&ɦ -!̠xJٯ V96"BQnH= ,_L*Y-4Ox$?>{Ƞzp4F&i vt"ͬL4%W!̧lC)( ТJPE2|xx; ]%F݃oX82+֋b=F?R]DA D1Ӥh@;uC@:جV$k qdLA6j^H_ũ˗m -7^n.VkH\H jԈ핶kq{ݸx F^'L)+1^]:| XeS"QZBrEBe6 /"sϝ-fݏ6L#@Ly^$"EYGB)aT\Oɛ.,~q|񜠚L3 u/yIm{QP0:LDb/a:$쥙 OiP!^q(bfu£N'< ́DO"֝!{1MyR͹һȧ0 Gsf_msp2ދp8Oiuj|Dt8xwX5rX|ۯaO36G\ɸ>!kJ4́UI1^<|${fny~xj!p"ߝn &в緱i`24yfU%ŷĊx~`g?*̧$l6LAvZ}t`F'HI^NN ymh,gCHnl躻?cG8bъ\ئ,湋48\ChNs(pn L\3SrR]ZՌ;ye[N~y3LWgIO[$uVW E6>4ZæSchIRt.:$:UO^{hq^=7\W\-zQ۰f< \fbDGn,?]tuԴ6O}۾8q7>ɏ(س v6:^ `{=\RY0YsԨ ޿G]j kNUQlu:w p@MiF2__Xѕ7iP#D{URT9*dzJsNڣato&Ⱥ ܦÏ9OѷYZZD`yp> <ia,_E1Oa Qɍpr@9,_oowɐIkH*ҞimJ#C Ez-hBۂOPQH۠85;0hUD.<~꧊ڋ||d j*b3}R̍A*D#YO vkX,fF 4l-=Xzxrakx N]~m(pu p(|e1沼H9& CO9OD?Ǧ Uwg䄩3tX>=֔L++;Pr%4/ʟ HTu՟U6 +ɳ46x8nH7tku**1YpJFZASo|D<\2NA.7 /BBB|x&0F `5Kb9d4:\/U<zqM>eyÝggL@xA;okU`Z1g' 3z>sO\fFx_SȦ$ DgO1M(zc] .W !YQ+Rx l2DcCu.+& Vt?&L`ƴ frhU1)\Q%~D2{Zk/ mDLEҾzMtKqӹpw:L9^*k}})kqg+yނX+p҂s\G-!5[ڑ]yQ 5:K} !g.3m1ؽR~$h$BSͭl\5B@g~hzGs (dA✪ vD{jFt$ptP*'8̴_HS(pGF//S)mp!PjJ$/+9Zuyb92-;ǔCss"C.zm.-)Q癪:॓'L\8.^%(:bm횣ҡ-yub2^xwF;BS+?p1|jߞ.;>!.6aќ@b5$F1ːBfM7MNN߱a_wD ~zSɼ̦/,:4Ǔ'Ǎ7c\MF9Hj{Y 8Sٱ۾pD%aE\EBŪR1!"N`ԥ)8?[^ >ވ-yBF]lhPhC;bLJuc bvw`& ¶a 'tN}QM`a,ckzN>zxM(pV'8!PuVLٕߞ.d:1N9k{:@8gv+ȏՃ=9{=ҍhğ (мr R_b4o1ꈋEBYtptӊ9YZGhƖe"4tb*fPaPVVc?5XjJ6j/KL*#1TULt4Q5;64M p^A.fznIZ=Pmم w-9*;EVW̐i\M(=\l >݀:"4 c Bw[Xj=RP )xagZwwbeh65:# Z2_F_7: \c*}l %*T~Y4A"lhsOx2_)4W+&3I٩##ᯠ|7Wݤ/)怩mbe/Hޕpz;7ՑND')2g{l􍁅 QD|u Q7R-sw3dY Qy\%Z{"%{ПKaFn=l!fƒ?VrYwFOr7 q,\֞xevGz:mr0YӶiWEmm!H9NLD8{ߔﬤ f, }Zh 1þg_"I><=܀PʁG9<žVfG9D%*P!z ~%tYs$D""XmUȩ?Mu`mZ ҹDE=Fck잝Y"n.C',Եތ+g>.'ژZ::;PlEE/GM~X5TSMAط,FPt=, g9n:TO*T\nǯVخ,}<jղl_s |Ko7,iuV}} Uڻ!fwXHɞ@kl 8|Gٞˮ>xO@$ə~31Yβ.icg8uݵt^%'HNB-\PWߜ)G2 gҺo4𥼴0 FQzatYpc&ESsZV2c0$spAE>Ibv||92ݗ ʌ*b1[?6zߙ|vxnݵ aa | 𵖏ܖ["p#ĭ @:6a=rSS9trlʂ9pEYrFnm ʲnQ8зAjZnq+Ik:Q#=;0meҌv.>k=O}8 L^e{C0"%Y.dnVƆ nmP|`oYm1U&k91x0tEo|{2 vdkX_ZUtR21[rGH/g:ҁ9IJ`Beg/&TPy7Y-ܵ*&&j(O;skUl8J 4+*HLjm%HHPpZ;Fd4-١˰d}j |(" /.ag[ vDEKg+H)oU/[.OȰ(NJx)O SIܲsnjS(.5[֩.c~I<1[ۥy{^[# K #iJ>̴* c࡟YqD-ư|PiC )ᘲ,lXxlq:T=,4[]W!ۇ)dN) N#5W؋3_=5LuVJNM#˟f`$Hy7?Ğ)] s[3CTͣ.5잌,h:m Cա\1&W}Iូ(O)0(D#z]^|S*OYL MʌG uܑfJ'$UE fB. 5|WOv*? 31cv]z8O ǎfe.ts`DئW^Yz6t.ԟتWcYk6qܱ?jr65H<~)j1è<{RvFT+{оSdOPemoS/שIm P2'gC~$P2Cv3vN֭ ؁*ke Jm[LGx__*ex1 :ʷU[H9by^Ζ$s-} JyWt~ۊ8 h ʂݜOԣ*TWhWM܄\J4KGgmz]#7Kֻ{@IOViN)Or2Rꨣ8b ^5UMq00EwEBqš8Kqw,R|)_͹8*WL&$Op^ܓ.Kh`_akq򃤿8OHK2,lLL Yї1u)GC ҟR=tkn{sv~_@#,7=r]XopQB>SKU8 x"AʺE)g 12:u%o᧰rqj}w/ef/VF ,ubbQPA}a sr= Ngs#!g,*r#~ . Ʒ6B6A7C_g])E8> |Y5;~"IfHV az/ɳh>]̂9;ڨI3%Wasfd*Gz|5=XzH<_EzD`n>BezI8~i g-#Ph0 cNCom>@SƷԂL V b/;YkGӢ.8y4r(uguwd$A%yS5 Ōse`Rzƾ/ ]zb~12ܧ>Kpu\qilag3R?Q*į&3ᴮu_Txn>Z /#b }B=64OEܒ5bS_*Q#T/?гk{Hmhk0%ShI@TZs&&PקZL&$}QjDזa_|>#p'˳l[]?R**>GYJD{ǜ^8EQGTRE FNkw@whkp`VZI6ݺp|%n95,mvY7tv5E;;a@G´S}kO{^PkU ?؎7f{fW^c[{9;?B-(^~XN7 ypetD拕z'!C=xDDcV"sZ*DQﬧYkޛ +,B!:KO3kI dûI&TN,/v'p1}" r]v4,.H8/}M|tixȊhOFiu[+ۭG=TGB%wNxf\?{SJŨyg }Hb3U1j.K^ ]gY^C6^;DˤsRuCO^74Y_>˖۷f[0X0h3pMѵ NUBB1ct˜!&E;B`h3"4c?Jfw; 8]7#YS<#s0^<$&!tQb)@1G5ѶH~J?0JzhFadRy~M7KbIϨ is z)}r7Z=TtA8Gp9\ơhTf?^C'[bs5v=p'?od*<#p;Q-=$xL㙵8эF-/O[ 6(/^M , 0b[|ίpQ׆МnK G ŰAP/ׁ"߈/MMiB?Ev!er=z@_Ny?wkg>*vNzQ]x[{3+꜒X=+/؟c>szӌ'GfJ;̎b۵}x5zuki3<ԥ%vZ;r`_/fi| S]]l*LP}$'izᛎt(}V}ZbQeʿy`_7x@u9.E :)JXZzUHdjsc<攃Ep 1/v)mOfjz`짗e[6󫫗mmĂg mzHg0G \!U?'s`QsW wG;ʮ5]_HWx'|w&Z=]tgi<ܶΛ#s ;b_U hV5@h_4 ÷mBϓtlhwV %U%ZMV[g/Jdun1(+_^-ޯiguYfdLNw}` ߃hSh%WˣKv @ޱIO &lk 9q3UpAxE+q&~);Ф,h)~Bnh<0 #Gi/cI#a<dž3D$rIS)(}-/r ݳ }Yk3:-'tu5mzt] j-uO P;_cM~dv2YvshAD5CBAT,%R螗T>;_fQoؚ.9݅V/hc&j89U;ƒLSbUٳ̯yu>z&[hSKG/_*CF<ɸJs뙁3X -~ 2^KL3%7,m4IHۈYЋo4nؓqwЃ ?fo=C,1nN  dbus_Ai0WH@B$( %3`0j_Zr$FiiW/e1m3r{%. qDpg6G՘Ie2uZwQg6=Hn"_HqipTay>:Q36ݣ eE&^6xnM]|# pS$yJ3(j8lx}5UY,e."sqLdXx,)w58L|O|w6 58Cnjk*,Xm? j"r>E5[,BV?a8!\c .mh< R9${ BǼQp%0ljψmZS1jj05S_r9~_}ȯ7NQC0 +lN*6fq+j5sxbbqJym}"$톰9OxzK~Z']b)zz;*^>BTYlvv޴,%5)&O#wke,!Dg@fH.ĢZ%+{}nV=,-k{) -G÷q\'9 Lv[c@km柃vsV.uN3vVJTeq*E"#5Ƃl U:~{P밎G?M[ɩr)Wգ ~?ErӴ! bF<~ i ȗkJQ)Ke∱F~_0g_N3/kO#9R~a\ЄhPGabNlHj'x«+i6V+Bq,{3k+G?WQ fZEb6ղe 90-)|BPԲfL]1.FS>0aGf_@I pV&wB?%BkQM=/rB_cZ+Go}̯OQmsU${XZ2MGy׼-{򫰛goD*'3<ֶIay3¸S>fj"i>[=\Z? zg<=aq_'ݭfP @J;,&zU)QZ@KJ_*jYm |<1aё&퍭tdsOc8cLcG ;T%*Fu?뷽3ZC^/]vO[x_D Ad?Ƥ:m6#+E|@2/kZ 7bo^WE:̔ MilUXx:U.fw1 >SSt:<\ָ£ER嫄\mıKIda,-I=QwXc -U_ֶ`~*C\hk2yܞG"˖S9~, +TA@&zXzl@d'Rˠ[I?Ӯijw։)!Ь`\sV*$zf[PTKs\$:h0AR!~X\:+LWlKLČ%W;`7cz=ar)֭bj>0tk}?'HPccS^y]U̠ͼיX;tcw$wvX:WV^,)o=i侹Yq7PKrPKy2:META-INF/manifest.xmlMn F9ަDj =$ ő6@X)H;ۈAhky+zX`uiP}F`k0 լjѶN-ןדi(.N,0J=67Z:޶U]+*.Sz]#wnS^tñzA)4.HCݕE'3RJgL6G/q'k^PSE]kj|-" TLa'8 NG\ ͎alⰵ I> +o6ӛ{nR~{rWPKOPKy2:^2 ''mimetypePKy2:MConfigurations2/statusbar/PKy2:'Configurations2/accelerator/current.xmlPKy2:Configurations2/floater/PKy2:Configurations2/popupmenu/PKy2:JConfigurations2/progressbar/PKy2:Configurations2/menubar/PKy2:Configurations2/toolbar/PKy2:Configurations2/images/Bitmaps/PKy2:~QtBj -layout-cachePKy2:j2] content.xmlPKy2:kK0 5styles.xmlPKy2:2 >meta.xmlPKy2:ۗ8ZZCThumbnails/thumbnail.pngPKy2:r settings.xmlPKy2:O META-INF/manifest.xmlPK(childsplay-3.3/docs/Howto_datacollecting.odt0000644000175000017500000004056313271013626020027 0ustar stasstasPKT(6^2 ''mimetypeapplication/vnd.oasis.opendocument.textPKT(6Configurations2/statusbar/PKT(6'Configurations2/accelerator/current.xmlPKPKT(6Configurations2/floater/PKT(6Configurations2/popupmenu/PKT(6Configurations2/progressbar/PKT(6Configurations2/menubar/PKT(6Configurations2/toolbar/PKT(6Configurations2/images/Bitmaps/PKT(6 content.xmlZmo8~-NGۤhd@v=ܗh %jI* Iɒ"aSș<Ry!)e~ ay,/z^'x!g3(qcw#7{+UIr18+Iٵ܈6Kљ7 {0]KWMDEWf6g+g5|M^jLb,Ax~~ZḦ+J%,UL0\L *ڌU?mٔήnDU;#~5qJUglXvxI&oFM#&=L޿[aAe]Bږbŋf:&VꎆÓ7{^򘊸̶9 (aZw07]dw,+b8q=SZ+^VI9\ gFcOX, zw E}` "˸X^I lи^Y(y#%]į-gR_dFsAw;W$Kҟ)RHݢ(aS1]I/OtZjòǔ vԏҀ VN\o˄[ymU\_(H p=':O'g.|;+/!!l~V5|L:Cye7-vc&ĺ&0c&&W'#t$NJ0pxR0?U[A+Z `h_eBUڱ5-4Qaz؂y Un*E2QL'94Hx$${*&Һ;p8߶psTpקW^_x =9~c|̋k|x .<~dD~ɕKp2t&}&{gڟp;걄L8椮bomU;6'~w|iY/z@'6Z6XQZw̥U`[yuMJGhFI4>z~per! ~/8sArS7*.Wb7(ϞTe2KUwݪϏ~igL^^Vk-7o`NOp=7Uufk 2zf,SeUx /Oѿeu(hB6nH<\F)`VQΆK*Sf0g oL_c@K]owRз_ؕ2h6h1XjnO]1' XX25ލ07=q [!=x1"xNmH6A5h];~yPK5uX ,PKT(6 styles.xmlZK6W*ڛl˻ٵxsHQ4@Cm3Hv~}/%90əoCj_4BΖq:f ,/Jf_^dx*0STeL.,qW-8D.*\lK̼"^Sv(*nCij=E s( *y!KyDS¾/RbD}=GR* Ģ|rLDGH i$*`#At7|D$GOrG|!/A*\<ԸnݞQEI5;7[ŞNJ&Y7 E9%_bd@N;S Y ίd@r7Y/zOxQΎmb52D2 #eI?A[VD-+RA趧+xT$jux'0e@y)5bݮٵ'$00\cD%p ]lOuZ&Oҧp=kΚZUϐc e{(YBQc_1قTYLUVp¾΃% TF&USǸ,!M=<ݚ^[We2ݺLn/ӭe5LO:˸N &J&$_s.Sw{D+[2)$|3ώ?Q AW#xewJL 73kWx&  ]|ҧ?$Y ~@{4ߔEwFCql4r!l6MG7GOɭ=:+Cw {A.\=tڿ^M4n.6$ُ0IX1H\zu6Dpܦ_ C8a:n(ذٞyJnIxN#`k~DB $k55}s }nBK/PK*$PKT(6m*xIppmeta.xml OpenOffice.org/2.0$Linux OpenOffice.org_project/680m5$Build-9073stas2006-12-02T12:56:10stas2007-01-08T11:32:56en-US7PT5H29M9SPKT(6Thumbnails/thumbnail.pngyUX_5!C]C3R҈ -- ]R HI ؿyγk9p !#!6FG1>.+Nj_/zp: B)KNs0BVGVphð#s*>ׅtv4_O7^^+:OM\53C7,zV6U򥪞ror>C5ϛ?_lW>h K\x}[.ˏ H;FIWwEL@07ߕ Yw=;~KY+LCs)4s>=,=x;^n^pk&T{ñ hǐw'{EAMasUI_=|Ueu?*RSQw?6I&@oEGφN /O)UzE:)o6¾gY*aOO7{O}϶)^-5I8Жz@ڝ& _-xbp<+SA)F۝)G8[MńxOt$6o-אݲ\?O=81]W&۟_ L9#NM^2- gՂT0:+E:.&d݂=˝)qq>.*^^K\Rd?^㴻#̀{溎9qLqVRMYxܒ[ J=aZwҋФw|cXuTW^uS*vnvuuRYݸ_NtN (Y{9ůmyEt W/5$jqrVv,]ܐ,|~Xke^)աej:b h @/Ymq9X9r;p\h{qxOgʪO5pM1e}"\e:~*^7Mm] oƲ)to]uj~0@#ZV@!N$R܊8O:/ =>E?GB'Z|Na;Pw^.(K;?7{ūfWaXx_fw~j :ފVVM&5׭y8Rgt 흒&0\zn{X޽%x%;k>RM3*g#3QjGo(owISВ8f 5680~cP 93KzYE1lA:TqbbvՑdJK)] Z{Ԫ3-KePk4lL{A"j8 @؂MXHdcq-U%ʱOEQ^B}Q֣h *!9%☩)bFXƒ&F_EQXNYmmލU_='3t?C-|.>[Sߜ||ӏMjJx-ΔADRkgcҡ#\:Ήh!TEwǨ:P01b]<QJT{윏?(ԛ{s貿,Z =5__)@pD*h>;x7U1^.ۆñ0$o'q[By5IuaӬ%U+%xc?ݩ_~5+P=';WNWfs+sד\&oX z#h' /.@7zX9kIemb^Mϔ91:QEiլМwe=abG]_kډ DHŇO_z1OMKǒV춇WvKԻ~Lql/$˱PN0QhֹO v}4+i Eť{Y+u/d^.Q+7)|7a G?\m< Ǭ睿jb{hDB)0<J|_#7O/yBK!֤DFɱe#;!`ӎ.Q W=b4@FkK rc E`d] Eya>'910 0-diuc*E #2FW]GC#$/xݖM9T\5DcyAN(:V6NUӈ"p2j)-h8YalnlG$.F"S+M'@f S"ASr\Ad%8Fhʾ?䷝h$GZ3+Baob-1KY6VУ7+ڷ,jDJD+Vak4 V[o@PRbfHbߊw!wWixͷ\Gم*Gs,{8}q֕Z3skjZKp ںFEKha|)hJ y:nrRmS`ۻHSds Uݧ"-b7os?jV׉C̸(779H_|̓#.M6şTRƿѰE˝΋ɮ]U升a#>ʖZF`&?|ؿ|B͒24Ѥ|u8W9lH:"A8gd'|j'041;yہ8ui9lDC؉TC@ LNHɞ$'vJVsC P&K&~Cib@"r`:6(5; /fo\8ܞ?DtԸRE3cW6hʉ>a^UA.v O/4&޳]7iDb%'6N A S=Zǜu}jP1? 6^LTzPBlhӉo]@Ѥ[AZn6a:A,f]V[b\҈[FaZ{ؚ_ȿPs4lu.,bj?u vHH:2%9df D)hxl 2[y:6+;Sͻ\u+1ړȋԠ]@d8vE 5_>qsuNH;QqU5!4|I5x<ZT?{-8E(i*E$KIoq !2#,.r*^ FP~Bd7(7{*,~$II˔tw+h7[[\I(;=*E[Ռq SJKoWe ءnf 2Z1&ǼOU# dI>2t W'Gkl^g\|n"D!Cmc+O-W"p`kezt1YR9%aMbYb>TXj8':݈0\آS&Dn> mfH" Iq"ɠpv؆!S.@ˀ6H,E6LC¾hkCQ3yZ|#e@Hg#AՀԎêfOjmmڎ[_^t.-"g a3)4't.۾J-p;[S0ʳDvuDԆ_ow|@vʴ8>?b%] hHDư.x2YikOPc Q1^%[7ZggxKwyz_LxGKHL  >^tPCGn'18 7+='HP JȀ2oTh7:>4"pq! @Eʪx#U ,c'8x'5U# ^M%wҽCG0kjrΩVGVbf{yTvhTdVŕE7DjwL9TzR<0;>t(9Gl5ۃVAƇVK2Gm4W a3doSbx6V?KLeG f~55GS\)GFh֋ "]+JORӘ1ay $ Yq=)ω5qLO/Cisq4p}uZ+tsΥl?.Ҕ]J$c8,zmY9f39M~1_Z]Uu*=Mvƀ3I}h,sM窣P7nʐv<4)*Oý1 > K'I}By`YV%* -8##CϦ5>TM/YYӨgXcrx5,szC6Fᣏӎ PIMLZTh'1됹rVx 8Q %2H%WR tQ\5 Ol?E 㥠/kf(RD\Ȧ.Sb BۻʼDV_n׌W#ZF J Bf-]MWktneA!ʬS5%,"sQXVٕ ̢Ʊmg 4 nv'er)6U Sb.kDQpׇGe|6}T<¡“]LRR7+5;=3) Q,Øe=.&Wh7@̷˜.G*P*s)`V17fmbxD(B9>@ Œ/A|b l ?[4&_?N53 {US#'H,AkEboIaç |xFӈ ~bwǞ aKxgO:ސB r- 9cMd"\ cR}DndmJS5 TZEu2.oq_7.<2\E=HW kޅNמ8^nv.<6K1SGO|B#_( \Ċ6121|*}fig=UȉC~p] 'nn_ЛR H`Ӵi wxMZ~0a7Nf*޴LSѲۊ7Rz!*U3),v_:rYhmNI]fja\7~?]02) N s=i͝Mw}V0.(!dya)l)z8?Xϕ/.MPI),6>jI~цgǥ@8Q.`w ,pTEMiF:If媉&wh$v(BFw9?><7.F)& 'jc ՞Ȱ6[e,rH[{z0]/&N9wnG >@z<% ֲI@a nB~Yϯ] 8Y l;|2_gOd34j+y24ݦ}Kj^ t~%1nJ5u\XE.IG'.m斢d%v`n$j#Քfá;\#OV73EWyZvHwH/'ue:X 1]?$|ϋr%)*/_Pw r;hAp+twe?j⺈#{*1Y !fHļ8b(={m h+>ɜ!³y)|ˏ,cnFfWؒ^loPm9]}Q=e4/VF⹬w&=#i5 y)-ij^׳;dO.vҸh& /R_Z>JV~٥./@GP{j",K[;R݋.>qg=꫈o7$uI2dds>"tgrAVM@*_V|qB Zӷ۝8"x&Ol39y^qFF^OO΢_6JK{mxK9ً'RQ^sC[LX.+0Ld0zYefh+I*V;\zl ~J^:#_XOLu(=m5P4TNET́I.~GZd_%8?V<. |a˯gciy q2j[' ;FF\ف\.eKAM,%6"Nܯ?Np:lF|fb"Fz.9,ƛ0U, vS4Uz~u-4=U3m楙"p *5Ň{Gk0u]- A{fſ^.xee~y)Rph_rǯe\~]@w;~y0u' Qz6o Pɖ3Ϗ[| C$ܜ|^,h /E`:HO N"HDg{taÚ04@Wa06R1 =f%VCj%\ɧh05]hn| }(\_E`ݧWcP?'-Gx*!9cr)yg:'ÞΡSѰ[7D7[Nfs}\L$Z#}_(Fo M6\fO8&ږHd:To?M-ǒKl=Y{4ɕTF0Vp vVhrHUk|ߠ頭&F4r6 {z0ժPK͠2WPKT(6 settings.xmlY]s:}"wB 0 CJ/- f}Iﻒ!=Yi{ή|yWPjc.gӸS|nu)c% ME14Dt SLsݐ,0QSiXd)|ƤjuX/.Q۪ͪ{١M!!;!_3VgE~pMswkOHo֏2xxZo9?i|1 6o*7\yqWE8Sf~Y<oEןʁBL93[& FePFW.4ЧL+ K+\ưxW͡P<ލ 6O(jZpEګ(kA1Ih[qFpR#xGA ۃKAYC#0ٶ #tJLYnV_=(4Pamijq*dGks<<1lInPxX7 9u(`EwPY2j3e) D,SwI!bb'OV=Fm>Nl}YqK&z#/%AbA=0N߱UτW_e[!W&7A];ԜA&#JPL~JPKT(6^2 ''mimetypePKT(6MConfigurations2/statusbar/PKT(6'Configurations2/accelerator/current.xmlPKT(6Configurations2/floater/PKT(6Configurations2/popupmenu/PKT(6JConfigurations2/progressbar/PKT(6Configurations2/menubar/PKT(6Configurations2/toolbar/PKT(6Configurations2/images/Bitmaps/PKT(65uX , -content.xmlPKT(6*$ styles.xmlPKT(6m*xIpp meta.xmlPKT(6͠2WThumbnails/thumbnail.pngPKT(6`, 7settings.xmlPKT(65b9>J;META-INF/manifest.xmlPKo=childsplay-3.3/docs/HowtoMakeRecordings.odt0000644000175000017500000032707013271013626017611 0ustar stasstasPK=J^2 ''mimetypeapplication/vnd.oasis.opendocument.textPK=Jqx_._.Thumbnails/thumbnail.pngPNG  IHDRPLTE""$444::0;;;k | &l(m-q5w!=~44g;7w7J~`5SJJ?CCCMLKOOUPNLUULSSQWW^]\W[[[JJeWWeS^{ccZddcbbihfblaklldkkkllspnjppdtsstt{xvq|yu{{z44)E3M7Q:WDY@^FbUi[qLjPoVt]|zzx}ggccdz`}{{{GGLLZZYYXreecczzxxxssnzukgs{nnotw΀~ySNxx||[#W[}ownsx9ˤUVkłɋĊ҃ͅ“˛ʘՈȆԎے͖НÖؗ㩈̫ТʦīЬՠɮˢ۳ŽɴپމłēǜǴ޿ż˥nj¡íŲºŕ¡»ֽö W+IDATx} |u*߭*- !#J4 lَAcI%nlK(q I)DI娡@;MhZ:Ys]nJSXKc{wI?|g{-"A4/o8GECኡ@i?b29=(.'={^{ Bb KaRHO jBjzJ MJ=NXH J Q:4Zwe3& #ȕ3^FMO|hЃC >6/ "y*8Ϻap:Ӻ"{Sqiz@x77uB2d0fB&Q~b:Ny_&ڝwۂ:~[ĭqkr1Nڶ͊Z.$v8+p=yU{T_`YetDQFQ ~5hj"JYHS9Tʄ<9a01];斘")ԩ$DkT׸F%BN.F %jV8dgBC"ȯQUP{DL'zpPQĄ(xQ΄y9 %s)6HS {\bLt_p(\'P|*y 㾤גCbhD~ [j|UoVILHl0L#x\EJĢ(q ?;5%%D$& Q:jM4QʹbkT#lk= q:I,B3[:ҚH #g%AIN#=aJ@\ϩZt-t+9""Hf4Ι< K*y %> GJ (̰*33xLԮ_K'{baS2p]CeHƹ!Lsn,/.Q)CR[(HƔ)a)*A>C?0#V&wf>cPG9c0+)c5F5`\IY)CxMh2)d.JsިE=O pyINQ'n1ө4}:}& yCG({bY3ŝblF˻ w#{Uz*UWzaGv8Z`27; u"\3_kx jv+]~.mmmd |]6ڶ.m鵩ٞNwttב{tu+tck5mm8ѵ;;hMFXCL;h*M6oe޹k7˕A=!bKɵvvPfm%m*&o&"ON;4 u'[.ou}W]EWA\17k2S]~t"xf(n5Kk$w\g^@~3C"XZ##=C!ci2'$r]t2r5pDX #dgQ |'II=:+Zc)C @vpNpv!˄!KsIད>ъ5|95ŽbA)VqrNy8E uldRH0!d$JcbK$ Ґ:2}P{1LZ4)6 .<.bO <Ʌd h\NS$RӔh&hYsPtiPupByA(XVy ˟-h)WXCЕ4%b$ huGƣp6LDf#/#0.¨0J`YH C4 1gU{ث'Mͱ})L| )E- UjrV(R4J)=  9v'(-FxHw23@ 0 pHI5uBϣTv% +q I/# d(ÛO(jUrPJ-!a!L8MA7D8CcRہ%|z8QMrZk"/]d Z!Q]#^#+03C'%< kqJtq Zv8DbEQ ;3-4^wԁ7;w~x3nfM?E4Q $g8L`%D1eQ& Js1O|>&h~NCB<ND<BS_O+!Lga/z(`}6&EW{`+XE}\(psVЍ оpOqx~p*N^,{`>} !`pJ źS> ah)ƺil9%XX}.cYcRF9a\2!u!8y(-v.0 VuȕI#,a5i7JIэF:Ct-!Qu')ɴS-EtX:NHBdZ7]ƂS\lE|.885V?  3Vgۭb,|j0jMMNXh:4sZ{}E+Xz! LyѺ II $NP鄮j|1R, Wbu`cF @C1g.n-TN1ު4^}-nOws(}6tS梺CpGr10E$ƣZKAgg/:K:C6Gr({t5pbNQ?H!M"S(a6ED "̝mzBci}gS_3_~eH8$TY  b@8J!ĂlN3%tM/c՟rEjN#nQ#!W+/ _~Kp >weŧJNWa_ݗ2}!4|}ɐxSj 2O8A\aiVxa/5"">G_f1GZ&G K="W)i@,&2hiPIS1l uwI}Bvٛxj~ ૲i:@գ6X+b>ǩ`,} z"DѳF /`VdQ&YQ1٤:d৹ 2$56׮Y׺\ʭLUn}WQYP7Fz/ZJ5JI֑M0::v'V&bFܾ';:hɺumuMc=mnnc.oZb]w 5mj`k:Rf6ڕ)PEg<5 RruEHt{PGV5jB2F/ Թ%TEu^4Rp>x !jڬS90=옛BOc__ ~䰅I49T"!5A-Ii5tD ?&%Bc=l <[hD 7P෕C^*G38Ш&u̵k4h^mĵPxQ| D< 97D0 i Ѓ\80g>4YCb=XoQNj\xkIkGc.?q.&*QId8 ֢G"RY^ Ɉ:+~3 艈q`D.9~w.<* Ogn`$80ůuVd>IFiAS(Tq@bQjk2mL.#~IE RIղR.hZm8FW"bcZٖfu*6JGy5B 4*ve\`L.|$]npL8Fs*;BSsXMDfix׀gWx0L3"YTiς) ,Sʨ :xq בt́4~ Ёubz,4vŅmT4h:s ~m@;oa&(ѹkMVݛ\",cW1 _<ˑ^|Hs8,?O|R+E+?y }1~@7ԩ=6ğDO)?#`'^\[Pc}a'<П:j߻n!kfܺ ?>@/lXxw<l4ZB?D[~{=#G?_;a}_׿|w ~Zч~C/飿}c +Ч??Ɵ??E?3/|/课W }k_7b[;'\GkpcN㞀f"l]NI~+Ĵ:mP&H'NTOԪfN!j7ם\]=7`>3˕l>rr:[,䳶dB = S#=|>?/nؓ&ga8Km!:e}wO-Lq ѝٲ>78[֧wuݽ%Օ]\+;Փtg,z;-ٮAr#e^X6ssQ1s-Q7x~ژDzl;WΛW maEڴU';<L$V6*fT11Ph\GƏ4ŒR}FLDm\3gj6תզԪUA5p2&pAP͒kH:Aڠ򢆶^tms@==}ZMd:NaP)L8U:0h̔0w۵0.;]^Ykd|m!@p,qa1L9&| hՙxTC[);\g쩧&,̲ڴcBUyeq0E %ZkP%:eQ.aL5Ġe8SgL Pmp6rk y\@ـZ]{n0K+xԺ@S S5O:N٨MY_/hsXۿw]t<hpYwwė7j"m| !9k6OCֿF{RV3_|f׿U@[Mtxu ֔m/u S,3h)5pOap`Mќu^9bdԢ A|']4PY_cjyAԿ߄ pj䓟}䭚k?Е_z4 ۬& d51`#4(i4Q_2إ@! NASMnpW+n 4 ٖ(ЀiD.CZrpC9gv[%OWn2 DSN=誠t+&)ăؼƔl Ϳn}ɿ-cԺКԃPjX3k.cls`{***8,qԁ-擦k2܊E5끯A]Rͼis tfݢ ntmc#EƠlbbXoĤ-il0eTp؄đ[RkCw!tȒy Ѽ6@1|X ÃEBR^&I?_|m3IܡRg]H_L̅%=Gd]@KܣRoصZ}sdwLa?m~ݸ IԘPqzp<&wmɩ\OZhx[o~cf`-f" ffd6 =MIH,8%OMںhPer;Z*ʶ͛ڧ@/ hl>~spgzgRL1~m=@ M}tO {4;Y (vv` [^9jÅ'm>z{[+c*2SEZn'0GȆ ͻ/Ư=ܿ鞭߿[7oꫣF_ #hj>m9z㕣G=qԛ ~sK&j-m=RGf8ZJ-7P,+FcT5>\<ÇzB2Ǜghf7mݺG޺5isc6(v>?|wY;Ç>xhC<80B% H5gx;7y;@'@IdnO'uaux^ =6)>m7mtm[OUl?rϑuc'о{;ڿs}:;ۿo߹{額! UëT^|/uSL{78$!ԑ6#Mo~썛o3{<ӝ㩧=!jSx}n|g||ꡍv~d7vn|>|CO=ƍO~sc{z· 37>:_pxA~y~x:(}G`{~q=a8%ҘM8rضnL|Kz2Ʋq^/Wۼɛ, .ư󆤱A?C۷0Z1rQʱѢ8?!u!'+G W&WN<"UW~vXdWX~~/':=\AQ#E6/d,y)7l-sJͥil|D'4ZKdlRU7HS/ݠ`?_"KgU==$|(o ~Cƚ]n?,zz`?_dJF[I ~9@qGCnHka@[O6غUNRʑ7 ~5:ꇮ¬֦x`ߚ1Tٺ(xrޯ@?Nں+~_&]@wu?]}'フJz׽oO\^Ήo}K$kzmN襒ũ?8t#NCŪx]vMO6au_WqK OO#S^uW-Qs(2==-tϢ% J=j4Me ߙпql{&v1xɹ:66(\5<ۭL9qI;:1\.e3b-vwU^6 [Eյ#EcdK` F MwPp UfzFX"dFF#L~ļJԶ(g-{{zd.v f3GcVz{28;Rvod2ꉂw}/&'jQ[%˵E2G lZek):e53H=Q`3l^ eiekiuBM'yJr٥U-Y]-M[D q0;~S5T^)#{-|q[#$/q+8Y˰ 4x¼%(T//m|u^o߱}";n1tOu$ر}g;$to=tW{G >cI3(cU:_ˮm^dVmm:LM;}'N鄏Qܱ]hKӛ0Frz; w@'4M% &Cq |p0[7 Lm @^aۚ*2JD/%{ԾRitkg`MA 6Vkj<=FZ:WZX2N7(4bXpS_GqeIz2+.VvHT%aSedI}3y7Li/ʼBS ]aZ&!|Wdzs#[r= R抽-`oFsb&gelw4ӓc\>k\M=`.twor[-nw˖n7~tA<&FOOn}.g^kN^g\BD)gԾZ"`]U!*T]'r VMnO$OHn07X:$j&\j䂕\TWG_E}1ԍk4Ф ;2$44B/&4j/Rr: į -qi4v8gH̀0N1($l D;¿"DP n4i.j0eWoo̓Aa \/o\kdQueR9}?UG|b):JG1E:t:sX Ч@ zK"+U1͋tf:%0]Tp.A^ g%K,Ps#z\L|{h cyaX  ih<d̃MT; RL~n &q|^o_5Z?W u^.j,2+FKx46!~;[zra 8H;?t`.) V? 2Ҕ>OྸHm BD2Ma!*czk`4]!c»RwQ]gӹ+d(" 0 i6C;? C65 :i?{Жg+hU^Ez*LaIENDB`PK=J layout-cachecd`d(f``e`2>8 ,@PKjTPK=J\h3{x{x5Pictures/10000000000003690000026BC468F08FE95E698A.pngPNG  IHDRikULN IDATxyՙTݥQ(, mh1H Ib$Lbse\&Dcv JLF,F_bfTa[c !" n[U?Nt-Zuo/_XL.v8pö3㜇2w3 $R6( ^<3#ϦtDԔ!LET&Sc5g9gF%Ftqwdj~u{icϡ=ѾlӅ?'#L{2y.F_,ׯmebeg *  u?wfT=} QC#QX"" 8 *? ZjT򓯎V{#Q{'wmM WGúsǑ( \/*tюeeaߌiF Z&.I얓ƾa'}PBxv>nx{QM~$mzOQnڸ><^zG $:Ȍ}P*Įjqw%dҰ7^NIDDDvY$҈E~g8ڦx::OD@MMOYd4>]KuI::EoLԙZ{ N.ϳ3{&fNP]Dh>1(x s[D$˳A/W!I .1y99GбZ7 ԑlju91::ŧO{gDF&*Պ0\]`້>GD?Uc?8Җv`?Fŗ,V`vKYU-ulz}n/ޣZaҼC[Ǽ(ñX9 ĈbH#FA\ye,Ɇ3WC"qum$IJUE$%}ECIno'^ɮnUhK?oIv_ cp,x Q9,i,T3(\^+Bwvϕ%ǥd"(~ g|KQ9F3W{eHG[]b͚zyeؔ쏟Z4$zK\3|5"vqL=/^`i9nAhq @W*W Oq[%(/#hͪW;*vLR0V_a,2K3{&/XvN*@Y=9+k (*i9R$؝b6^e"We"a,:"zpcs,e&5 ^ث6VC|,(Q74rXUĖ(;&6]SW[[4]44|.םsli|͎iz"6xhYa-Y$U1Pow MpGIDcƌaq̘1sJxGP#=IښuZ]-2|+ݙe|>3GwD"zFw)9leuoQ*W^[sPl2(]%FǨ 쇠n"iz*Nkjj Lkt]7M0]]]]lw>fo4@KP&]5L$t<˥:H xUux2Qz DilՊ~nٲe;R@v^d2M,(e:::fsBe=$;~7麦Zu'D²,qWH^yQAz=EҎR\8AG9]Dw"xtMm&]Sk:&@g\.g ?=׎.z&Y麞Xs)WʋJ6n`m|Z-[ϑ0Efohj]QęH;jz"ZM-sb?a^#[Yj4|a\*W^T^udj͐AG 1??AR3Žwu-H$d2Lif:vvd[[H!-d{Ĕ|D"y3JAx+N˲|hS p1 Z-3JV\Lhjjڦ&Qkn|o* TiWgGG|>ϛLRRߦ4Maק'o8|.ަTu{|+xU o{Hiʎrۚ>bUWѱ>VQ~{* ;ޑ5WD*H& 2 f:mNip."2M3Lbʶ NW^yQAz=׆a1*6gΚkm3/=qlboPQT=a;꺞H$Hi\w3ݕ,"wq;$<1Oo=HM7 ˲XÜL&d"Wx^yQAz=׮_ IA3gMB?pt$(@EP݄H$ =44M#uwgl6ϛ/zMC}vQ6k{[MPE¥i]t]g s6e g`޾G 8@lYv[b)"^+/Bzյ}\"+6?y| L8_('pH߳N$Rm6M3osn^.PD"%R6Fy4IZ,"M#,]3t-d270Hi_^;7Aԟ)!nAU$P"!:+牖Yk󪭭}!ܫ6th)ڿ#sk2p[]jysy'ʋ`Wsrd]D.F~_ߔqO ye[ߑBN6_d?M?$& u(3p,RAEP݄H$u]H#"4\.E28'Mt>1)ɄHԼƠm'MJqQoOjD#.l6[NA^YYDjmK7?1QǝBD?d^iٱ&K-gQ'-W\Iwy@{es?~>-;ϗҫo~iSDZ7}M`򙇔ii}+/ywcaGmo+ϛ[2v|Mm+} Σ+^ϵo׬R˲yv`Zf>q60ݝoޞ}s'M4ܿcҘD*Yk+I(g;"b6+WYdy33Jl;qu9D!h%(oZY4<=v捔A-W:ۇ ><ͣ~Ē=쟦_ueј٭3?ҍN_<+/|zyJس۰,UiD~ܾ3ϝ19rb UX9׶BZ ;4[Y&3 !e-2|>5-K#0 gasYӴ4yMKᖾMK$H4>4l.`ǪeieYiuml:kc: [^hʋXaGo߳@W3fYiZ:S [)D0C'_(6aF0 .H"0 1Bƴg̐#,Ӵ |^l2CzeaZfYzK˃216h(W?-z|JUg~&wwjO$W8k7>nM*y]iC;zN ^kN~w(x_o;;;rݒ"뇥ҫ_ZyYQy\@FDMTUI񎼃0 4y_p3l41ӈemfi~rŲ,#g)O|'}΄3t)Ro)Kՠ>0ö p6yڬ>4L^ ]xdvOQai^nyN ~qɺ;;MYDצR;z mO6W=ʱ !/PQT=wL4 ZP[űS 0VO]54+m6ꉵz4L$p3?uy ^Љڢ4^=O=[p4-6]w֨+RT+ {kCAal4tU/fuҴ—9 R|Ly;[w8Rlr @hcC\vD"gi ',QL$3,WaxHGf̜al:vg^\T#i+3{WlݵY=e]|w!*"s\{~^eYu~jP2YlsYn$Bom\retK T=-"6ϤObGyxϦDQ]wq\8t畦y-2rF@s_gb~ޑN=kZR=)W? 4M.:0vP*ٳLFbf>:PIYe7l}u: _R:e.ӕ]lgz=cǟ+4M4=69 ðLwvşD =k1o׿fo򛱿UwEgw4 Ӱ<ǚ44ֈ:} ;iY=h)X]~9W|>d}]MvY.UPLAI늈_…١y]|{iD9Ub4M#Fnׇl߳5`ZWÏwK'5qyy_[`巿7y!}svo۲A_*&'`?}O̫.eOJ>Av#kLӴȲ> hBhFZ"2iY3}b_aR-Wi_¿^}aGwg; IM~9|%\>sֿny+~o[gM￵zsiO4m@a¯o:xfȲ]}t>zɔP)69a;*jt,~oв+kPL2,5N_Y4M=DM߶vhk%*GI"-Ͼ/_uGq7F(+/x;nI+}؏d25F4:;ٽ{k+n&p⹾ʷs|R)69a;@!xGq{'d9XTjH~E ]Ku)(sNK>a0K\SM-eY|*+1vww%d2J4˰?osG_4kB-FJ㕦i͡FgnFֻ5W)aÎ,W|'ѣGo>biNu]B^^ZKG1iw?w >%^>کiyE0oϼ༕-9,Mnug<޽]q5ÇO?Fs,Z)RlrwAg:`at( NLiUWIOiZ]ME,˲L0\.ݝYJ&2d>1lOl|ixgU4M;aJx[:c#YqO5Q\!%N+4mW ,>:ӫ_Zپ]`G>"Jrf>er+J% gΚ÷|]0`}#R?ѴLz!Y\7q1C)f;;;;::ټeYT2NZϜ ūxUʋ0:t_ "1mKPx=}y7o%uٿCL455}F:{w;ğ-[ƍ[lY5͏ =dA-ˢޗ&LG|lYV.rөt:#. ^+/*0Cvż;v?ND^z;F)E,X`A477=,c(}/뮻)yEO"5le|H%Z sFJs $ #ѱ\.L&jjjjRT:xsjkkm‘$==l74zu(KIl;ջCƫnQ)x-{㏇ r[7q}=v PKz?n+1Ma) 6xKw~8捒[\4M`Mfgg8p[4d& :xmy6fuev\3lo^ܾ馛@4ݻwݻwʕϿ .~  L$tY/"2 viۣIg&Y[Įmmmm]e 0M U^yQ)z=*Ţ^6?]՞׶74_8#OC]uuu?s/ r-+{9zh!w44-]xŲ,0X4E4_gv޺x ry6ktJ8p`]mm*J&6 ^+/*W,_:f6WFd̘1A,6bly~:5O|d";vmΝK|Uriiia#瞍7n۶<κWq#񎇰Oik/]-K XDi~7vuei|!8-GL&yVEW^US`f։M82l%ؔ̉AawkᄏGG^uUl7z󬙫U,; G+ xKO;5ll<ܝջ$ޡV3lw԰&su|;nM\u.U1"z=זi:w Gu\mզ\F0_^xoъg_޹sYۨb=p$; $wdNJg."id'kM 4 %HԤkj555t:f t ^ë֋±r=?o{\Ċh#D ]3XdO)r\":J%T55X̛Igi ^EUyzkW ##E =a׈?̙cӟpf+ QY|>J80 !id&N$c-A[g֪^bxU)z=\r2I5q#A;ЄZ^{Vga9' +xU *[_u.uѫ`VAmXԁWo+}%,OEPYl(Wrl"tVD#ՊϺ @("/Rl֯m0q [b 6x---cSSWf\"XlEgySm4-zDyYaX;nqa0K.<%'%sf%U<bYemaq0XJp.0ď<` d2q3XƢq.m0~G`)`E g ^ϲ%|&`\fp9|{%6(RG[=k]-;.׳7ZJlwxoW/ o0e %>|+m޼־יf%_ܠ#?q1T1 $=k"ڻ{5奾q˖-oq-[׳t g/^ND;wd?G6xa_vlz;~@)"?`k.<5! +]1oǎDѥ^cǎ#Gh ?[n{ׇ2i~Ϛ,XZ%"BmOf$͎7e۶m+?qAC%DT yJGyĖ`ܹruh3?<АH%'fs/ ͚E˗͚ձ|9MJYQ/(]=M?X=->u$ I Μ5gD_z|͛njG#7Kz?4䉁S}Gfxo}_?GaE?3886lȐ!+W>}/뮻N.qA% ,~ٺu뫯z>{[oѴsjoi_zyݟ8f"њcѹhM,pX(_v8=&gEvўҠ#oy33㵍'q[iN0#lj+;}ݢR[&O=WE;8޽{?!Cַow}O>d](8IԜ3dd745*bA!\˗/5k}3F_޹g:=leDK/{%A>LT&^˦MH!}m۶ѣGo۶xn/"T(D5tيl4scVC\㎢X|啩/daQƋx^csc?O?A&Y^o^c_xbYaD}Jipcƌq3fCʑTAZ,2r̃'?ZK6 Sh0zˁ"xn͹s]74^>bEW&L$#=/~!---l=ܳqF&%qAA ,{5$3 ̇zh֬Y,(ɴYGx:Gw^;=Y<_?媯xҎ7xⱇ/^GA&)y,ӗTňW(ΗANL#Gi7]]]\yMܠGމiIg~uR0WTrQ_w|l>(3zG?ڷo߂ G.h#~֭Ntծ^1HD5m: :-&M^*mӋyuk[n5jTW>Ӭe-P\ %~~Ѓb΋ܠH$KZ9̙ٚǬ`凗8sTwUD3ޱ',M?Qc&VL6m= }~(bU?*ibz=WlcԨn6jԋr' $U#ӻyܠ3(}뭷ƎKD--ݺNÖj d^kz\ Rǵh|-$7 :F"UCq<( 2s5(<"Z|鞏Q΋ܠG˴=ש]>3NQm&y C`ϫh;nci&>y a؄F QLg^P.bհ^'{q/AGܱzK(hجY>9{_vA5DqxbHBh[(nȑ#GM\ÇI(AT.eR;qmwN}g#C6 CCM;^{wݣ*ݛok3qic;cqQwd1H&(FDsu~WfԨ#"LT$<;wF#]cO]%ElNL1Q'P\]u^5gكΏ;S>0nDf ;ο/&Ͼs/`7֭*XPť3}֑X{Tibz pKhKp>qRP6 Zıc2(ܹWnQv _ֱz%$OU9|AqNLQ׹xk0AeYFvʿ=sg#ye;Do#w/IU{~=J~-F=aiu̙cEr3{il_ߺᆋta$]ո U'jeMߕF]A\1>ONCKsOAjPYP0Llm'}єU##w~r <5yA$_۪iZ[[ۚ5='P\yhoJIA<'y=^?`\PF?˶A5ɪ4E5dl`ĔDWˁ"`!c g?4XƢq.5D (80!rH@;/$O J$Ug?4XƢq.m0mS vh׶o2\3jFQPݨ<%^1e/_5Kə yb<T Khii@Ev3:Gf@U".D5z,H%bYǗ` P]4ߺ?]FD_lv- Cmmgs3BRg3W!8>RR窈^qV/n槞y8<;w;7oذ.`~Ȗkpxvu3)nY8bqb0p@Ȋdo&"76z>o *0_GD{םٹsW_Yyo悝;wX(͜uYUm~kpxp5<+W ? f thlx?G^@&hN=u*e7۷o%N: U5?"3g]6~Wkq9xGqg?Y3ZDi :wܹsgk_讟k}C?_uM"-*M#?\}%Kn-gUĸq|;](2uG!#u]#ĵqG8qZ"yk=onYʪ, @0`|gW7|u\s-v;  Z|bBtѐ0HXѦ[!.-vͯ|#e "[߆?3'^{#a]7x5ݲptFqGH1갰vohd;mllf̹n}@فv}YXD+ Pvю QRÇG̳V{# V 6#1{ؠ jDUØ+SU0Xn/91!Fڑ}fD:>(XىʙHUDe'5po 9:X9:X9:X91Ҏ *}"/֯m,kVQnw@@2L=Td2&3|pv }Yz`iG#@BԂڅO 0qJfhGT;b#@uY/ܜd%8_Mğ---_X'*믯; H̝[fg2cVmeoJxںmXb k[ &xG!pT*Άv,7|]c7y/46olxqNП%cAF=#u-סx*Dή];/ά^řeY."hLRekS[n_N(VՎXxIQl|`'(9e]tI\1A9cEDt/EGzOT8檱"/CSt=kO@ 'UDNUpd8:K<@Lyn%J+"Ŋ{bW8`cKpv'4aӦ7Y9XƀmSgɓns=Oz# gbѶQ0 Eu?^{"0T6}V W ?vȹ ՃP]K4Q/xٱ >g> ЯXb̡7||Ϛ7[%۶=i8SnFOi@#MX|Щ"Tug\3"Gk+rDEC8 qg'Զ=-|& 4i8>l V|mR;+"(/BYWkHӲ?TI `|vi@PҎ\]I6?ҨGS1="~c&.QE-kDʣkH@P@8@Tb}G(` Dj\ mߛ+]PH@E.BE) 3ЎP,l  ?Ўoo~0й܈ܸA<^SV9Rҗp $c vtj ?'YiոX 6*Rz), җ˗ ̷E)80V0׶%+ƉftFTDuAXEe'XsIQҎNgMB`rS| 7wMeFQ `uylLy6Φa |-xJ$e`RuU֟G2>kuy5("GyDA_Ѳ`vضú#ٷpոoxR$M9!qTVULdaH \FI#1RI2I~JlʣAΩ*n)O_їbJWwE8Do^`# "ljX~Rpw*\Rɏ$$cExTjCDU& < 6a[WIFm+īQBˋMI~ԹզqFY"13.?ҝwvŷ9{l Q0x{o;L)h)&Gb"$HTN$9qoK#ɨrM]͖Uhn5uwJ"uᥖJD.\5W_<Mޭ4n{Q!<#(qٔb3'%Zs*iY(ԋ -ui|S7gF[r-zR}weˮ];L&|ƽOVte`EV_A5Uom=)^I&?)g¨!&fxJ L!Sʸ`\Ӡ7yJ/߼pooO߯oΌ~wv3+f(o@c%1}tN>}͚=|I׬id)z.wҤᶟ ;6[QeTfN"5!)MIyXo|&ߌyJI|S<)_nM,B̨,؉Sfa;F4ixT4jtoMئ;l_SIF[Ĕ^NK炾9kXU| \o}sM9UpVI 1^{wd{KK˚5{ؿ& 4UID6IZ׬soyyIB/WF-IɌ.ftdleoqIM4ܙo6ܖƫޜ&9}[F[﹦ꍧtV3ȯoI|J|oN,m~v}O6bEQo؉JiS ה,yi/wzzȍ;oŔ6;਍CG}:}ni"!Z+蛘5YR}s6=fTXᒓ*Xcq9 ~ƚ5{$CUCE((ڑd\6OSLi;$ftvnqEyAmy۝)pE"$fd?]g{eH}z]덟cm%>,l>h+*֪kFkq͚=E*J,mgl`Xx m\p^)ymK^p%tԲd^œ9/LcBv-x2]+ߙљkF16lbFExbo;DѯoI9 h2yT"z{)/z [Klh~5\ZHǖu4/B/Q$$<^]3zId*lYh 1XVob^p+ciCEZIQPؚJng.yg͠-17lڴ`Sx r$bQy QTN\3M|^^dYD!lMX=3f8K ptA&t<$mgJQM~RBD;ѪUB}PaŒM>S :*Al{5JEl%ZS].HP2"䮪l)Ov f\85\&""8D ٍ,W}eĦ $e]?U'38)KuH^MrJF7Fr-@msIJ,*ĸ0Ԏ g-3S~V߆-e PudR&*ˎJ?r9LFuNtzz^)\tE+FT0y)TxMuSiJ,KWX7md{č"}0Yk+du $L`PA*\tyC\5zfmz 8>>;IoX.kG8,n q59kS<)*ϳfQF |:r@-~(6i9X=](\}TQP)"?E;>WrI*G!1emdJF_^@E! C8%(PR'(v е\qm~@UU} (}N5&ΛqMPr;m q\ $E_bH;@)*hG@#VY777GG%gΜ (4HwSxv@T`#| #hw5X#vymI(;ƚ L^_}T_S G@D)=)ЎJ"tbAՈX#_}D,"VL*Lb#8vOFL94~T6_+8P^|ժ%b#'T?@T@;og76_8SrQ1ڱrk׎ks=!iD96Hohp;瞮čR7QzV8[W1q&֎L]}\8 ΫuS7mzO9"":+DD:SH}W|t#ӎrZ?Lx^MD޺%xĄXXZz3Q$OCYE‘EN)g%+ Q|+mZBDo91_ĸG≇r=޳gDtd D{OSo$9{wW/>v]YLDǝn'SnzlYБz|_:"DDc[/`y?$7?<g/m*!s## V|n"ZSvuOI73;D_]cr?y!Οo%κ儳~wn}Nt miC_I? q3n7V"!'_hh7{azѯp$[ xG,hӎ'ްg>\3S//GαKQw@ 1KDo>XZ(^ CeG"]b'h]m\iM'\Ӱ#FNʋ8Q 6]%_7޽ȉ7ǝmSǶG6P&Lj3fAPNwudI >隶MKo5%:ROuѧk??qwCz3oyϷn;]f9M[_jGO_=o=ϚM 1w&tFD4Znm5z_+{>^3==F5>RDǝ=gĔ!qOu wBMq9MYlwޭ7'`5eb#`k|c"rQؠ"Ў gF@rFh "y@/K( a96@#PTv@;U*Ў@hGC}CcRvPF%} -{i@A]J_6WxR⊄J}̫9Ў"𰓨!)E;bףb.o^f]NSиJq-|gʲYWkAOT4Ў"F]7xI\،4z+ bkbbv"@ƐL DN$fȓRfUmt9_vt#pխE+ruB LJsQ$ Q8#) Xݿr6M{kΥ ?FԹtPR73\+8a`A.wo2@r$\WǦr(Uܖmkֶ!&gINzX[3bq [qwKءO?gBw1^i?NGL(=IS#!:+@.\#dGrɎ%;Kv @.ϕ`E2#tvt:- Mv`u~tva&w @.\#~.=!FQ#P#]]c5!Qd`3 l^xk4#+ {a]IY&VI$ޤQ`D9p>P1Y/׍[oCk]b8#Q%IDATw nt^wmG"K،+ᚥ:F^GYd)w`cꋹ9kNрY0w`{֕ۉa!ۃoF4J؆/[%qc]q}0k:F.dq#ȥ+u2V\#\`unNv`]nnnnIv`]NM:ɎŰrKv @.\#dGrɎ2#ۥ#tFv0w @.\#dGrɎ%;Kv @.\#dGrt]yW~~z~̢F@Ev蜤(`Ivsw/CUa]NpZ;e:?|YSvt<K?^EjIw%v.6U\eG`a]Mg1G\H濰Ɏ4na>0Gs#@A5Ǿw@>?=wCƛ/pˑ5jMxceқ$0k=й0\#dGrɎ%;Kv @.\#aoζoޅuSm+SYԜۥ~G RK#+T&ycR 2y**e1?vsmRҭՈVܥ-.IƒFYb8&.ߑeo=yfnZoki!mpđ+[u-HZמ&j;ٯ} %øEkJU7Fa5zu!?uHcjJȎ+dW]׆wj-a{t}h5&UO#';H IgZCO"]yfZ~N$AټDSú*K'VHTqkօ[dG`tx(wX\NZm8(8qs{s|rcW]f~hsڙ(vߧm)˒.gt-6L5r]U1Ni⌕V*%]ewGoz~Lp4z<-]Q~jG>P~G`c°~I!|AU[uQ[krn=VEazkOBszfJWVOX=};8s/";0o߾-݄U^M{ss#ˎ+@.\Y0K`;Lͻ7ZE~]%Yߪ/VN#pAX-jkvbp=?=spE}9#pYܓ@[ is,R2=-'KuxKx5c7j"n@ܰ6[[.0(E|f_/x9ՌǸ% {~z<as]6;n⻰P=eb"'?(;{Pu]hu> {5moq?\̺t(!.-~UEz[w$nUxFEg&0/A2T׏<1&M3MkiC54XҵՈ8ג޵۵*h۠bfMmnpdG`Qf6ZUHWο쮯‚z/j{#C2MCw:t`%*xs[o4\ɳYq-yNmE+' i2i,*QrBUW!]ۄe6 +g)5>4؞͎ҩ0,v*ޢV#͛8 Y\V:,O,8z2w=dG G"# #TGqLޜ? dG5(Kp$&;0-='dO?,J?3(+;nC+ևyv q3~3Gd -@V dMEȎ#8Kq&=؊ jU#!i&Gㆹx lȷoߖnª1XGWuceȥqnoo']&㇥@ǟS]]]U/^^^VߪWNoVuzMͻ~.^/l]m-3lȅqlŃ+pwv4cז:UsQy%. AZۜ`5;tzyy#FkfiN]k {Cˆ9zDdz҅=ï%2UKLtjmv׾ԞӼn*zg4̋׸}=qlELd 8eG`c°g!2.۶VԵy#k Mzn٦6781vXާtJ?9?}Sdn ZȞ&:5f,,6י  Ww?&JNޠ`^-D]S,CaZCan{קR7N3;ʋ7'[_yjtamlI8Фu!-1Oζ%1.]oum:eP]k(V]q#H8n;Vؔ=ўZ"T%a7P *H6 Uj'o_Sދ)dvM}|{ɞpF]}f0n2A?yu5ǝ*j?T۷o›CΡѩfS+v1ž9ŚX[{(^ghp8~Ǯd%a<~k&XVcH_]oz/xN ] VoכhCҮzWoZ ~v!bc|s?uƺ'%|W~.8+s8E,{3dӻp6٥)9?9?y%8[r~;ܼHz!8&j)ҿ[dKDonn5౸ǿS\8='cenS7H3 rv@frjյuEnm)gY?'osۓfBw/t ٻtčM vIv8 =q!1m<>}PI+^{c_|;]=?=&">` Uo7Lr.Z4:pokܘq/'}Q'Gᛰ˝X>zlTģLЄ;3awhe~#El\ J\ǘa0 ytA/dͬgNPWv1?%3t6?O]e{6ݩp?zk Q믿nȒϳ^v`6waEu!(|c [~ݺsAqW45Na'}X~*L&0uV`S `7J +>~.^4>^xS>|un^0Nj ;2j*ysh'5(yc}a1%^U|dPǭVIAO=بszw)߱u@&FI TŮywrwrc8&wdNU@P#̬[C^0gIB9/:+Z)xI. %Zcwo}rNspma],!~=.ksK|2qvcso;"!9Ak$sY;P\,u5_ׯJru+t :84Li.mH:n w\U_.i]pn]5t]U{Źz L˔r)wu2Ow[9h_K7͐ռf!ltvDv;} ȇYB ~p.|)L5,݄sO^ 1w'`s~t΅>S0GdGrɎ9Ȏ%;Kv @.\gLv&PL?\ !;MjrO?VwO{h:^}u͖.*8dGǺ3뷳91cϪN8N8h{|b>f @] WHIENDB`PK=J@2C|C|5Pictures/10000000000003670000026C755D6D0F98F17AA0.pngPNG  IHDRglLE IDATxy?S}# ^xJHg\B4J4YagD(Asu.A!h KnA:~<3EMuWuuuUw|:vuWw穧ؖMdjL V8RH`XU^>R}Դs{f=ԃɪrd6orSӶ3LaJv9rֲYh [7S{911o0$Q'd8b]uj$@,5^/[ʽ1YҼ;B/*w`Qin~Dӈ%  M4W^ynd~E Fc-\8/ۻ;=4" +> q 3,ޝv)LvT*bei}{g. ?%z^%Uc98,nve-/k?^scDTS$`}"_0m5snS8c 5|烏okfit!5Gj9Q15Ğ!E"TB~qM խx7UO F[P;uZ:<=Ψ/*)in=,5_4OH;'?fНbvVyt,zsC{>jj~}${'*5S4)o^OtO'ZY{S˩:1l$GɕwSlkmӣcҎ= ô 8{)CD·6Lk8Ɗ5bGz%ţܱ6~FcDD8:KĈ]z)1tt{ѶP$FPD$2I7PInJiET|S,Q#QXLz挩3 =.Wlvhe}6S[|s % tfoXB/uHh2E%UF5d,ou=_81oP"Q*hH?(Sb.߼H }i %[gVmD- D-~t)_am'ѷ'WltJWOe+"bʊZFFj3c̑u,*ͻs(D{w_"9X"OQٹ *?0*UKƃ  3d;AQLNXn{cla 2*6 `-[J 91@R(xgVJý6ˬUG)Ng'mwAQ@R?QP2 60#i8KV܍)Rk_iv#"S/5*<G;G7ߑݙQw(yF)cR 9;" v mn۸g C+G+rsR1~fyRQL6{4J6L8D@c#7?XV ^>8J •mMsp@EM"T&N# ߱k])u)`g]We*^&egOzݝzjѕ#Vl[}mzSٮGt$0k.UfĖm'M3RYꆤHx`gbm2"ՑwzӶŽ]Aͻ WN]:eO*=J ?t9c; @:Yk 3Z_^Kc/0+{4YSxg6ڗC7O9c߂S ύμѩ2 es:p~[YQ˨n^`uubܷ"YlBkP!kĐ5@bw0̜15x555FΜ1u nFN% cc1"eYeƘ(Dgc tM$I>_͉2'1/SgjjjO[>uq 9F:sLr7ЮK~9;i _3oB;P}Oꑙ2l`~QK˲BD1Ax1 !7-q(,IcL$Y>Kuxi Qe[T-7Ψ̩fmj2{eA՘-3̞ChFc x V4YSLlhh9dȐTL#?z,kT{ x<z}>y}>QRJYEdYbLe%&1cI^2%If٫qATʍr%Z1|bҤI:?nQV.2d.q2dHŠƄq(=_0&(Ȓ$QQhTEIx]KܾJ )=$@Qdu_/ Q9܍61aw[/jL2&%@q_z ⢢b11&˒(hg3*FNYnrc'뢢ȒtE辕7ҙT *DFT9~X)$eID_{nJG#JFmY~5֟@ځjQ!*72[oNQF̱X +Sqז잒evJ:{b fUȺ ^pSEbI=(˲S Q!*72Cג$G9ṳ%J"WhMp1(|@FA<<^"e9t"aQxvv7\ՕeQYV/EQ%z^ǃ{QɡhOIQ2N-Sd+6S|@^r_x1&˲$FHg$EQlcD]}dD'k\]rW] D%vT{;߀5ok1LgTiDTHцF[ۘB3:ӽhO(ќ9jǯʲ,v+$I{9*x'ˬ)3Y&"If cHXzE=9hw/Rm!o\DWvTʪzݴEگ__5KgT'NrJo5斾}պO'^udCPæO{0oqG'*$mdgGHeoFqҤI>9iҤ_qLTSFzhg)c=<"(@F+#FD,h4Gs(y?C^Y&A0Rz'vkپC^YV<;K7ѺZƘ(H$IG(t_5-v>'"]cIڢb:v(lpBbDjU;,QU3yku[kY_/k][kkj::=Ngqlr'sD #2b/ڣMG}~mm2ؙ̟ކ5q5W[\FV.FeRFbhM~a* q@kB8PyɡYR%IeY2cTQ(i<|(L80z;#O%(~a\-IϮ!눈W]b)Ȣ,Feٞ}ؽyߘYڢ""e%"˒a+g{H|Rwj kbxWy﫛嫽'qOX)TY4W}|]6y ZSHцBA9ohjch5u\z$͒9 F)6L[<8[6# 8_Rd'KRŒ?Ȋ$b4"+ #Y$EJ$IYVEId̫b陴1c=,GQd*UQHVdEQ&\ |¶o]w{QɊ,ɢEQQƨ;0y_;~'%Yb}Ѧk'v$9*Y/Pr쬺`1u^~Յ݉b;*#6mhjj cE!>-8˨T0'X@FEQ$Y%IuR1*ȒY S!mȲAE2ŨYd1E:W}XzUfi*~/OXz*}Vǻ~:~B:zc:me;=BBT\T_]W]MmDe$hC}Omjmm49/_fLs*Z:a+ RzgnԢYOר6IȲzRuU,Ue$Eի2B˲>'#٨REJOho+F]kd*+MtݷW}~őce%}XKU-ʱ#,?*>!0O驑b(E2jpu+0$mÞ}ýŇB!eD E>_k[Ѧg~pt2!#8Pʙ~,˒Dk%fRS=615A5E_(J6*FE,L&G8tm|๗V\Z{6HOT;ͿΟSFYŗU"mʘԣ!BP c'VoT:*+J=QI"#r{d?}"jrLhƻp]/i:x2$21A{Ɇz9^,8"]lG%IA!9*Q9⏬?m5Gntzz5KcOmPg)]ٝ1"hk uG:۽G{x M%*#֣UdeшZ862XlʙIM^×Uz<*1Kb*eb̨Q)*E"pթ^6ZWQYGfb#VRTv (zMY#ᶀ8/VE㭇hbFSHRђ'ɲy< G"!G5:@YYV25k$I>_͉2Ns'Psv$@vr_$ɒ_#HrbƟ{/1-#.N(]d׮e { e{QA؛LRTEBaj ']yYCfTF=FZuFB7p_Vݯy© ? cH#4m;܁%‘Б7`D)^QI6g 2QpjHIV;?K}p~ANk(YRǰ)fOm3]#]}= {\:¨ȼIEQ^A[3bTI: ) 4ɓ/׶ /*kxF0n~74:3*7϶w)~i>VQ1xxǻ9/vhm\_<1VRvTF̳Ɏ3E֓ $R%:x7<Sz}ц\)SJFiA>P}u8Pˁ~Hb^k'1Q`L aDDAd cLRGͺ;c($KFXD/L>TEQibUtI_;cנ(qޑ5UKi{K&>:ㄠC[Aw{[}TFiS勦6~s.?眳}ߚ2sOHмd2b#Zг{NFҝ8*()xxu/DnGJ7peIeYC{<]MrJϞ1@t%aCxHhp֎eI™>WݐOh/e>H$FEY̔lT|ZΖΎcуQ8%hHOT11"DQHAEpDR_$ՈzX0С2aߚ?5>,QE7ys.8,"#[w;/?wh(E|2b##GA[^SEI[Bm9q>qh7Iʕ2Uk{kd(vW(LH"itE( y|+._<7_9ZEQQ#Hgg(JDx^0٨cjkrމM:tZkkc]';gX8jn#4G ꌡC+c|s+ΡiiJb7U1& WvNOcU؋ʈh/5u={E>GdHX{G輶WCi.WTXc65@Ns_$I t6ʌ1"[j*uMXqfkaNQE%IFpSE~yGE^)T㻏V'*9curTSǖmGV =B͍4GuUv+bMz|'xGe^\>eұ`Mkr{ԋ'O+! NNl,O@s_Ȳ̺{9A RQQ@uHMjwk$)BHDT5UIGuEW '%|Ŋt @^r_+>dk( u3 ZB1vԺFuHg /YQh4 h4* ~_eATʍPtmhDtM7544 2$+1Fq IDATq-k;w˿MYT[[P^Б܎D^WW7cƌ}G(@F"$2N4BYY}mzVhO^,;:Z[[;:²,@ u *DFTFr%ZNk."Z|M7ݤߵkWeeeܦj+-YnJ!Ͻsnr9Z9w6KR2߿o߾k֬z5k̙s5<\sMCy+uuieJ E)***...)) &훈 Q9\輶0Y4Z?L-q<8lSmbSF_Y:?Y\\o5? Ho:tݛ7o=z_o :hB>P;ayF?ֻ0dY֬("IAai_iiqiiiqQzr#*#~V.whUVVn+S{ᯭexqL%|"ZF.\;S} 71,C=,Y}}.%m/tGXJDDETVZjʸԑ |1n5F* B8hmIc#ގzR[{X0Jxj_?z G@r_#/ Ry]YBDz/륾v_)ptp$KKz m%BTnDe$uO2Ѫ˚K1ahmFm۴fmL_/-\p ?7RӥIX ;93^# ^2AǮKYHDBw.~Tc-Ohu#H8EQeuxҲR>ȈU|D\*'t)#-fFeB(mgDŽc*5w}wewy'>PP8H=eT7duKW/iHDQ5"N2E1զ@ /%%%EEtjQaMr#*#yr̸)uqLQ2E*{O&Uonll||=:y 92:9dFNd'3DQE~WD{I%IVy<@@QQQIq|x)0aBTnDI1e,@K,Ѿ|^{LUM SQGoc,F=AxZҽ|"WD/~U/Bh&{!*DpT9 ߺmv*)㉬KeR|u>˙3g2y~q -D{_x$IhTFa^7{< QԤ/! QUDkt^9_kcL2m%i{׿XB~' 9ٯ1.y4m{znfj/ QUNDy]hi|d/_,͜רeDeJ]ND+ɮPMFψov.<OZLp 3HLH $IJ2d3Ʃk1ڠ}r²FU˖eYe=lxM'O>4ߗ$I,1 L|MU|^I)o#u6,d~.G#vospw(0^P`4Php7 @z}(0 ^r)! f: &8w# L';|s ˊi4@mN6S^rY J)PC6pv]鿡l Pܹs_o"TeL=|" D"Ç1cƾ}^k/LΧyG IK.խ0k֬7j=q_3DW]KӦʕDDӦu\I'wYT_5JHxlz8#65Zٵm}I[R<Nk."Z|M7ݤߵkWeeQ&xV٩=_^q=WutĸF. 7_lJ^9C}9x`#}ӏOG6x-cf͚ɓ'WG|β>ڻwG}4Yk}_:s'MtxÆ>}h 6JyOc-M+XJAūߖ/_>wn 54\<-j3<>/ ,bTfgܾex7s +|/ϕ~/戏/?~VFf =z}};g}72$P3gL"jLuEEvtZriӈ袋Z+*{͝]c-0]M4`ѾLw&E@m7c.+>Z麧_{|vnٱ?6:$7H͝;uQr}^u^B\WfE!YEQ0g7.pꩶ||9߻O;ܯC=NC-HÇњ5k.s9筷޺k,ݗUJDG]tQ=W9,]ֿIW\b&*I*”h Lb2:dqͷoK;+Pye~ޅ׿u5e2wDm[f@"Ҧ ü"P7lKIVS7;QU&eF/[锵9˱^Y:+..~eDt hCUV{N:t6o<`믿~߾}Cݷo{aG>PJT+ȑ#lŪ֕סFnĭkԦkN|Io8l7+Mejok_5G|W^핿oE߼EForOaL-Z2v~ee/ +EQ)*Z.m_]ƺH$NqWXƅ |ǪT:khF!Ͻ4v~zR]1x%Kl߾&u\6**xV^6mh j7ϭ7UF_$M[7w~gINɪbu^7jT[ Oc׬q69/:V8ZF귤 L@~!CkᰚAt@dOX$3XХGZs.`B­w)z˺} :tΜ9>hssܹs>l`oF7޽{3?նQ|e25U'k$[,Ɂu=;z޽ 0Z/HՈ?㎎WWV:p_zA[A0s@-GhU#G7M*P8֯Xob%Ϫu*Iťcu#eNVc5: *:DE{Nx<ȄRL9ݓW[ר]saÆQ]] ^oHuɝ+q7|;.+**( 4+IZ[2T%Uj3<"ZrYӱuyxZIq)"EH[$>c_>-nɯѯ`;X~pB7™dO0O>g_r8]ʸeS?$=:LNmo|o#~@ yjXSSG\cܹSӦz}umȪ1yE#]Sak]ې!C bbuߪ_o?( +")N4> ?0K/I% G$u9߯qxi"ZO(ɪ`P;2f{wj jt.Koxh1qhTݥQ᷿y^~hC G|ƣƥfuj0 _ iX+Ee~Qڻ^\ދQ[f t$s@dOyEQiQ__*,{WFgM.WCd{^aZoכS@f5:Y?xVgr1@+Lru^MDF&Ʀ}Igd:ѶfgUqwJ.jo6ۨvZ9"v:M6#<)$rgKgDZyW_<ڈqr+ϡߧf̙9Ff32(ڳw>tБi|nZg/_L|~lHmsGsL΍AVdspy&)c위_7ݑ=$jkrމMb;_wWls9:GlTkiiٰs>ӎ3;%R %[hM뉩sGͿ&K͞o+ϩ{Ҽ>/JpF/Yyq˱)z?{[2 Ⱥ%[6ݛV=Y.\rCeRUCwQ1cZ`Rl+0]eIZ&i <~Ou02%+!;g#νs8+(n8F'5jV6OԎ攷+x1o eg]8R63 kG3ۖ8 Yc19pZT>o,3k.0kw:\FH3RL8RoV?8/K8Đ̜1U@^9y'ҠnLP@&_vfCa 1dXJYc#TW}dnQKK+_ʎ ɱM7=xaxK]j;l?k뮙BDúköm;z 5_ VۛS2rd';`3ϬD4b(k Î3?N~gghoUu^HDO^^ 5 Vۛ'_ʋq;+O"ӟ^YO?Hz7|u\qvP#aZxOkx7L޽byk׭) kۛ:mc{,-))˿駟k 7zǥ8^u;'K/6n\rRc|jϛ8M39vR&]%]ݲN޽lW̏mRG·7NLfz;7OÎ09:N[f˦ؙ'߶mxfeS[o߶mǪ۠~!@] I7#vag>ļOy#$7-}Eaaw޻vU+_wcw=VkHx,:"ο ck7v5xtDͷiiiԙaf<~ {{ }Y09c {\[#lŪ9MMts PSӗԴm挩)'+6a>V9cw>'0 +pl݆#6pS679óg:7 J Gm)a@[Դꫯ~Qט؃F ҉g9"\}ըqX W!etGej M87Ug: " '21E9"GB9֥oC ZeUc>B#6a9{GGC}=yfi*%h[h¯pݖ0x(F2Xٕ5#Y9N㈬:2N#v9Yug<G9RS8őaY*d՛ʪ`R]Y#@P謷~; f: J`p˦zEQl ش#p` ..(lŪLe挩{g% k(D3gL=# PF`eZ>@Z,;Y]#8-ևo 3c/cLν}-[Z /'f>`Oyj@Cp]]]ݬY&g92 8&׸nJLv\'VZz_x3u Ɲ wU޲h)5!ǟvmkdWWhQzduEi Nɢyh&4mh8&1xfӸst-NqS:-oEׯ]hQpŊ ϧX'䱤F 7۠-Ҧ98%Pk}㘆w7bĨ;/8c{rKmmmRۿZwsLq}s;vl}7'SS-P= @-|̝3fa7>E(FOZ%\ uRShȫ9w>=o^"@@;5䐭Y_φɌE Uـ! IDAT<(JPטl7d/X Ro87|Æ&6 `0Tqɮq '$hVcܥv="@a֭۞8FhB=̼Ѽr$ d=h #>uڥP'QK@Rиq, %1^.3s!;)c}6_;ҩhV3m> EQ9TO7'vcN+"PynN]&ē1rDDzn|N[Nl]#pO}UbxH!eEϡVoa6I8vg!GK5ꚛ=DE#qʉj+PkoO1JH[xʚP5`լQͫL&b_ceGFs_Z\i"@K]l< eQF4C-#uQi2$u̇5@SF%Hd !kQ/@B vS2"w-jA+Qd?Ŀil@ ~?%ijabbBl9q ʹ9@`+fcڑgX@va5*J-Ա['vhGQWk)e:?$P 2!'Gѩ߰@r.\(ț- & Vk> KدkhnzѢK,x~~"7/hq)&mgqy$oF5dJrY.K8Nֻ?+v"˭_L~ťԳZM"Uj\dF{/uM?A=dOiunT6L.,nix/tf϶h;nrCfgWc«'4_!nQ솹xeoH*.ySֹOKa`p挩FOغy-[J] EYn{^V-x|b֒,eի6T4YSk:K"E^7ۻ!;GIц MIGaC5iG7ִL+K'"f͚e#\1rH" mgnيUuuu,^Ѧ4d}9?@۲05j_M1aߵUU- !k4fhv݈vت@ T[6g0tؾڗFk}ۣ|G?N3#<ӁQwȓŪ1Uc&M wÔ {uӎ 5/2$˱ۗӧ>8e:?MFDw": }Au}?QϹ?hDt5D UN^vSՙ#]@D[|FM}l˪UM'o]ljh_~n2ц3~FD-7?EDz6-!H%mT+&u6v>3Bݲc 9on'?'[QW-ݍ6A":dxE1 /">FD'<4`>ǣDtϾl>?vѧ̧=Do'{Ln]#_ןLGO{b̴??O]o? nzrMOч<fzωsC6 Օ2$f]cٰ{OitFձ-O6k5H[HDWva1jc&l^ؙnYD= -H=}Λ}CQF":Sj Ȧр2/7$Ž}piOl뢛LؓlgPlU_6_㹓D.0=NVVjͺƶ^#eDGmٱDBh$BX ~pOwÜ:ߏla g\>ָnaܥg]񨶅4)m{]K0#~t?}CkPLe_Y_wÌCm f<ъ![F$5V 9o.Zc/x@\;`kJbh?d-jjɢK瓦FTqE ugC'Q taѓon!Q6H}wD4Oxw㉣fnzRc߲X @VkېS= QN)Z+2m[@\5@i rjI5~6GJ@B]#$C!kĐ5@by5^#Yfu Uy5Q]]]C8ŋ23-k${/!@J @aQ'XYHz?Ѵ) H "k?}.}k%%%rQ$IDTTۧO^6苍K9~ou4Qv_)NݎY9wۣ\AF-3f G8Y<$)o߾p{G=;3JEG+ؿ씳wϟ_be;7J%ef\#&Y)m*_gk;hw?'z^3񻟯[{vڔՎT@2bq+c|"vɢ$ZRR :;B$I$IڲmeeV+rjII@mz nmf9O#?_ſzNс]3+ sGYVlm:je56gUcĖMNRQm5k^lw?._Au/\>?'F?G*35Hݩ,Wl_^z[Z[B}5Ͽ "S^^/ϏJ;gl|>OŽyX||eŌ'v;hx/k|g]t#>yLʑ=hB!Q ~Y#@Nr8kfxf{R-$|aGj;Lyg)GVD.䒔hV#v:K{QKkkg8\^^~s(L(*.nMޑeþYk=cS^($vMC#@JSF]u*ImoBLr ;wc;޿]DwC_SnԤ ,JBQiYW]H,:v/&o'5}RE"5e$Aiٳw"+~߼_#"_v8vtg8g俕o s+ϟ^1O~x_cJ%QڮowF_̗KӧOkjD(4:4uduqJm buLJN E8E*Ե|cPq)ɖn_9N5wGQ6$PB ɒ(JGG3+D{{+uK=ԏK%c9_$HƩ@ƑmщRvB䋛&2F M0.Ph#u-C刵c-ٖXm^~s< gfjw3s彿s !K?ow'~ۯN;FXzKru\Iqk?]aýzb=5~96.ݱC!prӛ.~BؿCq[]z^<%g}1kuw.\\\|Cwuۿկ~~]\|W+Wí{o{W''Bz[޺+/|Wv]7_RY7ܶmۏŋ'66.^xҎѩo6|j7='B_;ɫpcaDFYQ1XICYXxϽ;|\X ~{;._wJ5FA-ZG2kRؔgeT<-ZS~FJnsmo_q«®]~~Eŵnp?xw.^ //^Xg.7[o/vnAOjMq[sk ܰ\_}ߗo95d(avVۖlڪ£ԿEu+ a1ܺ•+W{^ǎn~oƯ}ܼs=<ԗ}u~h-?+GB/vڕ:7u;>:Щ>oCO?B ׺?Da53k]Ykk]v3O=Tѱ;u=d'c.)ߝ}N\хKkz^{ʞ鍊憹}_ k/|g+g[_h.Pgyw_pna0+p_~bZka="_հv3kgܹswڵt$nkfjyqkڱc/}+o[{ޅ .?ݕv{z?p{nw~ba{€]V/bYG)71swj:rHS[>ro7ҥK^nw-ne !;?t]a3_kY]Y6Ï6ϟ?wR" |W0n;zP;vsWVVڮ|Ԩ`L7sIj@5jR#F3M`VVV{QSD5&=Ϟ=;N&L+#@kZcs<~zޮ^^^^ZZjj_~~{Czd<'ylz^v3vڱcGTя4~M{cdSN=wqG`H^/kOa) Ғ_B`HTk:~t^^^^ZZjj_~~{Czd<'yO~f׮];vLXĺ>_O?\>u^y !>pwpЮR޽{n@OXhW1/L+ &5PMj@5jR#դF-vvۮN[#O>3JscGϿ\` -WVV Skq2l5PMj@5jR#դFIT~ٳ`U=vfX3mW2~Z]]m3Ljgrw2> `tRcg϶]kS0Tk15s0CТzSp^bәk`?);`XܽPut:3&۠`-)2~!Sɇ%51ʎ0`5C]US&e?K0JK~̓ehg<|;*f/p"7eyf VƒsnRp'7UjX4/ȈqaId$kVNubqQSdwRT:tJ^:/Bvo/WQm) mg9̽1P(U<80ʶz߸LYXmi%pVuu˭[9 ϴ# &ifSWͤ_%?x;Jf7RZ7Ct|zS/ڍǏVi19?)swl36̫1kw"ԚܒOU 5[ˋe%Mz%hX-۔x_iщϖ?~x+`š8:#+ _?81d\2D eJQT -y ɕٝd:>锔urt 4?PQ*<ԚɅę&k[xCT>Uu|%Wl8VBI n~Rcv f.Rh90?Tq4~Giv}a=mW94X_xZu?vtGE^Ć0"$Zei*8JcQgB ơSKG)lk /5,.! T8^|*YRh=Ma[c}>|rS宯<{5LIﭤ0sZnj`N>vztrMw^ewnb0:v7 mJ"8HO 1=h=wpp/׸x6VI z9ZG+5֕ adeuu*i=u~2f~/6{yFˍ!:5[7?#:yvEŃik\YYI>ܚyq ٞ뒾x}њn7{E+ zmW`PK%(]ʂ5B\ 7G`yerjqPްJq˖/ɠGt+$qSZTa sQ6}vOkH>p=8cC(kk}qɱ]EI],Z|uXWƾht:hygee%y5C?^Zyneo~-caq͓l[Q@݁wh\YjLjܲh,`ɽab:ϴ]d`Tk|RfNYj,ZO֟lMw,:Nat:~Н &y,fԠAEΞ=fJMɋ瞍[g1oB(`5&M W+!Lc%#chK=^p_hc};hJkcZ0/UxejoV"I%uHm3*I9EИ X>5"wMΓ 6(v*)Yݕ T,-)lcטۻ:BQT͕_jE5oy7 f T8Z|-JF볅ˏ1_QBϢA&] +#YÏk o.NENS,w>lredF92S12U'eOT): \5@5^o`46q8hl^j򆽢lJ)+4Vl5s 9 MK=k5 '*9ͳ{Y)-lu4!x̊:+:ژY3Ϟ)4TfkLa$'q|>p=8Xf?ǏMM0a#?Di#kT lm}*w|6e7zV6%T^ -T%a] [И><|eL5C%WN)z˲_/K;^pgANO<}&F桞(۳t:[p1Ik[P#_ =5y'gr%/0V|(9WGڪY.2ƓόFs|zQuFJke|4qThտ϶G3mW!f3Ҹo?Fk޼- /ASkrN[sb|ӟn я~4w&yw55̙桞Qɞo?-zs;SɌ@lhnwyvfŶx]-CݖɜN6 ]`Ksb_K5H+$=2{++0ܯ17WgxMͮrCw&{' T טV綅$:\$U89D2&0Α.<[ӽ˫78ipo{sQ8"0k^M2J.j>[r*yȻV^UX* pG oN[ނi{qD`2טK8nWuL {ͮtw但vmy_?g_: w IjM&FWCD( xqR#0]R cA'l-dOe$^aVMrXYT̮i*+'#cbFAQD-^7gܕEsS*ܪ&5g{5%[6)qdo$5%JSbq*'Ԛ%#cdDFk"g:1H[Yed,׸{߁ '1cjEoMko 01cOC =DFZ,IENDB`PK=J6V^^5Pictures/10000000000003230000017C7C093F1B1749A703.pngPNG  IHDR#|S IDATx{չ/wUw Ġ(DD C0Fvb Ft\'ƣy~193$MܚlwsqTq1ކht[bxAPan]U?̢.W]yj[noZU6m& ˖hƬyՎtvvQy㺪PjP?>WKd|u > 5Qڊfa|lٖ}ܢw|"X/Z+Z'lK^%,djy%5ץeEpsy|<6>G.KV1{tOeJ!EQnu?G;αɗh"؎$2jEp,dX.K$פDk"TZ"{=V\[Lf%ryԣ}ʋ Y"ߥ [dO_`.|*+Ls-O : A"FloD? BZ&a<31cxmg_AʌcVxȨ罇=k[&Ͼ{DԷ퟉e '٦C8(kV[ަտBw2閾;~oDDԿ~Dnor,H;׶9Ӧ <+6i>sI}4>8>v5R:zs*̖C֩L^>39bE{)_)D[8}  z;Goov1n$㈡Rv\5IdW\2Bá}o]x_mV:~|z޶ ~ut Qb"cūK?CұǗfyC[_# Խ^:@?7nh"eiehh%iD9#͜酿Q/w~ .6D@ټl}l佸{X&"m c]RONߢMԜz/lFDb2qW~4v ,@/83*|5:h#≠G 4kci< ky;$zO= NZhpɴZ&߿};Ggͦ<KԤѤ8hYxHo^p^/j0S O.miѿ}4cdcOl@Dg7@0~㇙˜'Yr~}31@HڴjdJwh 2-  2-+ tڋApѕs fdTxЦzZ JTvv5l/=[$s HF';$ yI8TUK+@Uδį|k`b!9%뇵"DHf'*"Yv4׶^{-)l^1DdDbuW돓6@ݪiy/8 ?J򉊁I&t=xY!%U *"\v'J[kGK.%S*"(z<&JwQW R dnX WhoJ{j 2- ˨VVaEv:;;,^4cּuvv~=u1ac4M"1Mӆ?{u4|O^LY2r+G^] /8Zioo[r[՟7֭ZoW6Әy?gi3 ]7 CKCT*mQe=ZE˫E,dC<^* 3Ӳ ܴi1M4-Z.4Mi9v0ae4r$L *DU2~mZ2HܵksI”^$=LK࣠5MrZ. B.W Z.iI? ]7MS3 10tb18 Q!8J^ x[΂ ֮]+>'ʫ54i-ٚ4iRqi>|>_(4 |2?\=1Mc_V4-o52 ~94*i#Elfn`%[i:կd!8DOKtIZ.W(4446544 B?&λipgso-51}1Oi Q%UmDk);2E+Rs۶mÔ)Sm(~ZL.ohhlllnhj*scIzTRI/uC]^d#sx`4ļfJ8FH<٪fϏ}z3g4˗TUԌ(iLccSCcsSSsCccc0r\* JR8dk+1r8k# ( QUF O+2%i?`eє)Sx5eʔo]eB?-GdoZ MLrqhphh84P*rT-w\N3t"'>#_)?܏ QG_\LNY\,2gn5A/X:cZyLCCiazyphp`hpT*KR"M4C4ƌ\N̂Q\SiK QUmD;:*iϏ'K=DZ]7Ts۶mՠU2E(wLBccsccS.C}šG<\|&~'4ilS\4MQ!h2 TR}q- O A?-1/4464? *JpJFY7U72iRy Q!8hO;lCUܾ};Ņe^PQP"Ŵ\_4ihhbL3M\. ?+쮇K=eq$~+麮ieAT*d#ZZ 2C6hQ^whSq(Gaiir|!o \1bqppoo``9hÇX9&˕Jr, zDKuQ3M˔A+6}}.%E+`{{J ~ͅ(u'{F5~@P\'}^'04N64S.K2x4M3Mm BTqD%3vW$ƘIZ(\S!.8* P~Zr|.3MCbqhhp\*zrtC!"0zs9mEo|9^?b*DKگu]/c*e.dT,sʔ)DAK~г>p7TM~Z6\-'"0J@qh\Oyk"Qb|0ĉ-g&?|>/*/kv}B}H\toQY~HgMfnE`V.\1f^.šbX. "ct #"#Ft뉦1Mi?E~ ի;wL<1cZ9>jNQJzT^BF;88skC$?6%xED~-i@L"xa.Wg20zTg]ę/˳\0ȉ`T6 khh f1FL< s?|NuR.g;^q{̳Ws9⎊,-?ۢ="8o㏴պ_pz਼[6xcJrY;zŭW1N`,*/ݿox'}{pT.4ڮgx.ۛ+Z>UW4SL$qnğ5A.UyZl^.ieflޓ dfN#4 v_ FLM9Y9H!"Jc&F(s;Nݹ}M9T׮3EED[ \1exegϡ GuhW4'{z'\&]W&MiZߵ}or'wk@ov``osLa׾}CCiu2ƈ^3]:F&MG!/*VΦ !T]:Q$WJ ]9UMrT4Li2KE03zDr^Q,}I~.40 4M^sܱNJ+t#!9/>_/d 7{$ȅ]>uŇs36\􁯼mAFQ&5[~h<4Ӥ|y˹5l ]^~ĝtЦic y਑D+YhyKVq*l?-DuC/n"*$:1L'kii\.'Q&c٪u ==/c.rcǺʴr̒j^co`o.Z{[+"6v앜d575>yeMDo?f_ooАdkŋ/*ZR95PQTi@?'8UY'qb8ay~re^ҵwn=|Ɖ8!ɨ+ G5e'{fNO߻c[d=cN(_p|ГИvcwzknKg=y&*/~o D5 `#G~5O^9tكTML0t,ۯy@k1&y&ј16~4iS敋+ f;R{w}}SzV>{TjJgdxW|[<2LS.P5J8*QpR@c'[ = ccGWCcr%]'d+iF_2|^TVVz@y? sC.+Dl4x~ô\N35Y)z#0JuDCFI7JF>Χξ43$_#;}Wg!2gW,C#IQkÈlz90ԗnִ3DE=Z0F4P&QTD'/x ^k-&i<M>'oEӑ-w7OiGk ?8c^mZa%x8p` Sg3VZQ\]1$#yP*4-4(5x(Mu޽[^s _RCA7 y< ,"k:LQa!22-9Jn'/x&$:$0=N[?N:?'g?8A.Yi_ó6!E%n9jnrPq ysKW;*Ѻ"'>x豣;}'jsݿZΘrLLUr5k PȨb_qsksWmJ )!L'._[u#&Ǝ/i;r'M!auU*v}Ok}s@cooܖ/b?<1tD਼ҋ[Ojl"c+4͞=OE_220Ot#MҊPQP2MS/x1 y"3ce1ʹ#\N+iLdl(#uCb$^km.4^+,,MdߓwsrQ1FeŒ{eݨBT#}dnl=SO=-On.XJx 2f~ܓO;;s^zt<""Ͳ~ p$#ɖ9Roib.D늍~5d$Rfj&{* jI~Zw]s%޻Ftl>o14Nq#clS«O5rX\ܼO_{OaQ!XT^D{iϼmƘȱtx}z^CWRyOY)SO K~ZF\in2M#q_9wziRNc MFyg5|x8>rcc`=?)ns,CCCNDï7*Ƙo:/waccpi3E'c{CAd4IH8};^ <u|SO9>I_x/t6v)ɧ2SD>L8.8k1v\WG%Xipgܟ_.G'}xܐkUGF-d:)i%ڇ  Ԫ 0 6}iY*Ip~@DD"u?_42: u]׋@X6MP744nwxUKzJg]mT^D{QG-DdmCmP^_ڶm[SSmxE,ͯ~1qKL~nooⲿ<u}dc٭۷oO;իWR/x G@4Emftl~h^0a IDATKxɦiJRiZCCAGT*d(0]>{vED<]vev4i$ʖhi-]wuvvVM?EҊiյx;vؒ-TԆHufYAr0 +Loooa QD֢Kl۶x.L ߶m۔)S\/#ԛ_q)|)]ki'hb(|o:Ǐ3ϴy7x3٪{/Od۶?~ب.>_ltb0h]/(J|P(nUQyFBdK@"nKG3gz]ړ|%)S~Pbbȶn͚W}o͝W߿?~]wuu}_OW;4EpsAwð܌;h·{rE 0t`:744'榦\.vQ!8hGQl+Yʬ?&g뚯,s~7aVaݻw<5\sE?袋@"x& ADΟx02radACCC}}}====i655577466=!*D}T^~6k|gW\s#87m9zYisCwDUW^z'.ַ%bɓ'o߾}ƍf>Oo+Q!8hZЪ)SVSLͯ~:LɲӖ̐$qڒ-WkV~Zzs?٭W]yiy̒oUbȮ.Co饗vAK]YI?L+ u]xOaML7ak}b/r{!P(7vرcZZ!UQe1Zb5i$Af{h+zS{ּrxwɓ'_s5w8tRIaEA<-A ~vf-W3i'pju5R.K޾!"* G1#8bBO0;*/يJ s%V_bʔ)b$r-S2!H$qk֦)ɅH/xT Wᬖf Ä',7M,cIL(%aia#?ʉcir gbX4a̘c1v,FmUQyP"Y,"ZЪ}o>IbKRfʹ_nz=qz- >z(1""Mcӌiȳ90RLDHW~i:K\.ͭX,aV1cƌ3Оs9WUQek/گy"dKx^]y)BLIwk筊Vi-[ۆk7{2{y5|f kDOkgp>Ob2M # :|)rX] I<7HorBUQyI^i΁i:2Cr-S~U?%u>OD汧w[dpU iftq)JDrHɆȆ[uuZ2M+& QUmD%dUnvwj*ѦYl4_+)saJR.i"~ʏ@BYP(Jc0~'myŞ4 QEUUo~^0iV_Le !{h{%KiiԳhi4MR. 2zT2FQp>olhr ]g\ QUVگE'L8j\,gᩔ\g`Wiԧe,/t3G^9bVb=LjI8~qv>"*DGT~]oW {5)XU5)~Z6J *u*LD+}^=LLUZ!o êu/ eBL,DigzX8.dNwySrHY)4۴{ƬyUT;l W^eojoo2a53aypi?__MO^qBW_--K TmH˽)$ߗKš۷D8;$, @x:P` ⬱,. @bZĻ? LBVDCH}ٴ<>(0IX]@w"ZЪCjCHhWU]/G ϟ ϬDz6n-^x!mϜ5#X_ڶm[SSmxE,ͯ~Qo/Ȫ k٭۷oO;իWYk_~| __?>k< )Db .''h uY0{M("o扤@f=cDt^x$ْ_ڵk=DteڵkҤIH2*ҥK{OTƴLB?O^HX<Ӻ/^cyhW(IlcͷD㚄I <묳l#LVݿo\!?XzgK衇.h|j(S*oB2{qՕ';?Gh-!Eb*Hefx$i[ Uj7HDd+Ӓ%۶m#x.÷m6e\F̢i x≶!^p&HZxkG=~gy;Vhrʯs=WeSz󭽯B ;GD?S=YDs#`9?+3I39x3777sDt'.͜jq=[{;tۿ*FTݯ'Z.UGW=x=/ i?sȫfN?sYg%zQF}$Y?wnc>czOWWuK<͒L+k_:Zr*ݻ'NJ:+/M--D/#:#c\bo!{?kȐRi)SWy5k9 is̙>HX^v N,f_-?FOKY^$!'M$z4 (]Zz ݕ6;ɓ|;Xti4 M` Z@qIXD$%eĊmZD%5&[nU[U0;]gkr)de>--j5oحy+P{Q-d뚇CRR"'d7L&8,Y1Ɵ `=?+_ڥ^YT$ Bl c*GλOj'Ik s7DXȮ\,dKp8gTDj%[6_HlY >DrVӀYki ~o^SOXkd+Cy!d?7#ͪZQ/?aU5%$͒3V}feQOuX`getfȴ6mWPKT$ W3%kj.)i=loosES 0 ?GD?4MPu0~[@ryʃ9Ў[bvδ~3=tvus1c")5&n/~3D@-̴C4roί^>+L@3gZ6C,5@O$2FdK'ҦWҜ',L2R!@iaiLc/lX׶{1F %iInnG<^0uA;ۮErm7Jm`iUzt*P}z셮b(Pfn5ݸ_OK% `#~v?e9c^ũCiڵ/;|0= iy0M2JQ2:nϼsG.8ժkԟ1QPypE?pL4Pyཁ 0p޾*iM+"Z4_8r4\ c3ܽg.;Ξ@j_\_$!Wi}W؆#!al @q8rm8ݻH ~W̓+lՅm8a؆/~r?[am WtnٲU<ئ W^-[y>~@J+g~Q5` lq6!~I{~i͢ GH^5 u}OO/tzmWXW~oXtD߿κZ pxȚZe:kSEfYlg+6m؎IDATş'0)9@C[rʜ;w֭>|@eOÊC믿?a+8Hr,tc?mȶC_X+Yy$X } ggƬy*9/2ƕiĊܲQ@HP6o\`*YWb}Ȣ9s&_[X 3dVGG<ߜ9bjyZ&x@N -/!*ZdHqguCx첵ly5tUlBCCp$NJ-1⌜' T ڦef%@ݽǿrP&Rozɥ"o_*ǖن8GsŨʓ)r>{(r[A| q':HIZRΚA R6gad-f,ݽe͚{.߰HUZ=ح mCGz4g΄9s&hӲ] PK1 ZE@B]=vQJ\\lj$q4  kuH)OqTf5DH\u߮ u%-{S: QHSu2-*@ mZPf@yZrЦZlώ\A.L ,J1BPKivc-p~>2-[qr\_^Qp/6*U H|mi؄ǀ -L˙ uwo$=:8q-rhŰk)CXGɊ\B)&SRHU;Jjدnjw=W1ъD.sVugai_QJuѶy[ꩆb!a jW ,W8 OB}4o'OWmű YcQ$D5H1{˔|kGrJB9L5ݑ\=$KՄEi`{ߩ+iI+ZDu6ƥ*>Gbozgͨqg|Mϼ8D2f`Y9]{˯'C"cC(HGSC[ |0i”Ksi-*7|[ETM '#m-[˛h=7qI-Hj|~ 峐4LwV]K%lYOL_2dNqB/q #GdnN}ltw1VeLC[T;uHT0ǐXxFzL[bxٳ+؟Uxڅ\O%GsۘY`p,|8֩Jl~kBY/Jl* %E A]:!&L1DCg׾P*~C*¹P{C\f䁏!^1[ieI[[֯'Ι3aVsL7S1кJ&ubl|օ5 ٩$'`,Wl󦑾~'.Ɣ/-6ŅUج,6?Wbu;qnFۘ½66 5`|1+no^1D=&-1y!ؒ%?KP!6-Evuu_;g΄9sg>9sń4Fc5!,5T,TjΜ q*6Rolx՛36kI6ZⳘP m mͺPFON%-LQK7zksmFf۾`F5r:G`;m6rF6i՝(6A2 zCʻy҄J9O=uR[(mŠYg$dZ6mN$ح_8 wް~8z{cھN(!.m Pc:}uB36ukB`ZobjM75`7然Y[Zuu]N~hl] P1ZJEl6ڹ.l#T5mɮ=rr`ݬ#H.Ѽ&.-xlobLCmv|1 cjv^PP161$6%Lle(Aȴ5w|"zGx뷮9qyZ@3Զ)NH#mLɅsB@ DzPh1KqBglbBke[9υmB+6ؼ&xs,\K/dša7SYb+W ,!2+ m<yPe:!y ^g ^`؂->yg^FuӶP #k}Uo*n?s bS ,PARe"g"Yl,ׄ iѺu/EGFcP|y-G.[ =y8P?v(FaB2 y*sT?J;d;O %+NN!b09] :?Jv ɼ*Qy,aJe+zd9g #B9gk.vpSbI iA+Vtrʐ>Gz㺟B}s U૜-s:3"9̄N>Tu_v&Ê,r[RϺd{/*9& 6~Œi^ÇX?w|]ǩSO 'zأԏ1SG[. ++? O^gZTg|Y|iڬzp^/Ԍ\(+{(m7w]{MrjLmZ"0&|it˖gT̫~P{bi7OŨZp vʷH2${m}S^&dW}VړЎ}A^P3b%ndruHPT-gM@Jtvv0;uhDփ -<-'^iB+@=䓛71kic@ڤ}C#@jJf̚g6HVKJC P|Y6 ֢EWFypij@;ˣ +iY-et^0´i9Iє9Iӂq)gv@TЦUtttT; zeKqkAfdT6-dZDWY_Q8"hN%=*B@M ֩9ڱjڴ"Ij+Z6-w\ C@,cD7 etۊjGܰlO>yU_'LP'T?橌&6#5VfRD5̉O.H#5oVNjCӑYRie,VtuNȴ2 i@ͫz:RzyWdZك4 T=%IV(<2H +Oȴ2 @ͫz:RzyWdZYd U=]+<+2 CPêڎL IGdZiTtMr=⽇ ߈ UtOȴ2ecRH {'٦ "[zMb3IK/"Utuu۴۽&S Pp!@\iC&p= L t3BviRiWɅP~Zӑ.L}5P5svM7svȶL}MI\ [3Xח|.W!3Z""z'@ZvFe>H#kVL \""A!wl_N隓EVlLsIfa5#/ܻFڪH}K!>mт"p^Pu=g̚'S/*MgnFV f-,8+6SzZܵAHjƫX\MTE1kKW 1;ByŊK:bqoWd̊.1哓ۂ }?n-p>x]8PX@$z qrNnQ|&,]A ]GcOpc1L YmL*KP?TW+*~KTߩӿDiYצ0䅨_ vxRzH`E;zāV-;RE}HgU#OIiɁ>d!a&|!~ZE $54MެҠSoHҜ=UȨj>O+!'$L K$mLScx{5Ys,ޟ)E^o2q TwNa(6@iw#N$" Iq+6n).W8u?m-$*ۉkghO Pb|[1jB:%GI9s=I"QO+TVG4d-Y"[- 8|`2\Uvn c6tUx=&>Jx qR?5Sojg36y7ӪE\]Ūɮ"Y( Q0eu;掳 *=T*Hi9{ V^cD)#E je%,m+(>iy㓶u `VWWWLʏn[Q"P'++anXAqH΋utk!x?-磟׏-/uttT;LZ`Lb+(BXdq]p{Q֫{[vmCu UVK-V+?O1ffŁCpׁq?-:hk;$>wu8m*O_1XA1尮##@Uϙ\s2U[!qןQrX B9ic/6@ܨXA2~{iC-BN{ՕmCIbHbDd;§5B;DH0so^%'vj VPH?7LϘ5OXc_%^+tUl=JUaKܟi<ĩ=39 ՕR8{}Ťb)YG$#jqYq¶iyu"GɘkM}Yqr*N\Bk;$swKq~ [?6-.B3sMئ k__BJ-"T{K1 vRyY~ZV xYP$ibL+d&Ӭ\(:+"a@Q4B?%3rjٞ%ik%OD $VjHJ{!VIENDB`PK=J content.xmlr۸_Ud*jYYƳnۧ(I է~K?_sxD)r.Nv2>>؝FZL$ d~~MZߟZ,/fX$UbY+Lq#,03T*Ԭ=#Znutq{a7 ~:|ua֏/ԱM-h=N[\G2=k-Mgjꬆn:vid/LG] $fN[cC:KIυ>Z5h _r}oy1=6t&y{ULA+JV Pbwts zu|yWqOܡ0{ n6^|{u/E+`a`O&ҌF#t"UږY0ZᎻhv!!;)Vlmd1rJ:B@y@E2E$ò-TPrTh[c+\C{؃oAdtb0)OYoAxb؃`4ydO'=b;#=\__`0xL} r#wm;{|Ǵ;.2#<֍s--:E7hHE)&S 5_(ީ22cݵI~2W\eF>X^V*[8[¸~1fnHPa9dnIV_^Ap$Qt[snaĹS*.aTAF,/kb>r*c+XRDpoU"n &8'fF :b !)D;xEfc0{lcwc%$Jj$@ B~'J-LQnܚmFtm hploHFIQ:I.6dZb9|8-AgZ]2ЀSi(V]4;ǐ^"DbC ^DohellkTf[1 Z0{t8J=OF.qktV%΍8PjUj[*+6b=J1_q俼|R!+T-kƵ?Q!3d!:=UYI  (̊໏,E$Wfh0  һp HJCqFlE0Y:šZley(Pz ơ"aD.R!2 Ճ|tZΘ^""F(A.p&jSv\e~$ۢ pUUd,,ZXtЯ 0H؍)G:4Z/^Hx]GGtr[GSxyr:M.^OGO_>k9, ** XwH0hכ;;E96KGy`O燳'v~Ei2.Pt%)LL$* mV! D0MN? b3`ԠM*F塈-CGtqmb(6uD:$d2XؓJMj5CJBH<nK Lg* c u`uqZ!;v C9NROGIs3K yz9^]L'/5Kd]`lgzlvg`&'-)R )H%K$dXUc}h$=gx<,)a?Do$'e:Q,G0ɵ%>KI" XUfn:D(0:܀ 6%p8:0tƂM[>tQhˣRő0Δ*p.vjW8Ԡd)t6M6 OcCXolЙW~78"$cÀ]ݻHñ9RYOO@4|Xǂȇ؆AӴp<ܫ5fjEAEO.Doqw p) "aBOT /P`OL?4Aw"M;b  >|3nTX`е!֩fTc|ڀK*voy`TT Ia0(j84 (eR'Σ\FA`bnT )}3մHP+99w+E RPlJ>OCAsSX3eJbIK^A`upKv!yHyMGqö .k׋ #@D%P_H_u7@5kOIj> J7(yU;DœT8Aaf>$T*룷VEOX03Nt<;,NG9J#tݚS|FɷzjFb=駟ǵ aH>_ ^L> 3ۈ4EM$'~n(YJPW0<}=C\dG)RxrLL]'[#=5JZ;a]tQxE)id7Am8!{~B':XS (* ?×V>a\DNkC6!R$qoqΣHBuT91Je[ԭ y>ÇoԺVr$ ݙR6\)k'rahv@KDkwii=V~zjI4WZ~]nDBTINIU\.l*@N_#uֺN+ەJ䗤䳳7Vf ];Lqx/TYFDECҝw l_1T0}eevE\{mM &wW6~#ᅽ';Zv bX?h΃'ؼ_1w1^<0]B͟V7Qs(/>{4{6BX}CB ){-˸uxla1|f%J^HrJȁ!9FTqGYGOβBϢ:y97ʋL߾5WzvbGgZe2}bIENnv XmO=MOC=9Ӵg&OE^y)|gIF'eϋ3]YSSّ f5,97/2nMSmCjY`HAPWLd$@zg`w6@1m R6R~OmNv&0Gn@@ 4 Mܼi74 rfA 4 M j#4IWXV|Kveu QuR\]UR?>[zCsOo|kYڧ Vб5{l˙s]t< oUE#,8>xkhO 6x&8mPSTq5j'Yujvn6[IVR*~\ %Q[˰8 f(saEVŚ6ٸrtSip쬉@J|Hq/ sX-;@h ubz]PR*6jw:oOA8Fw g/4BQYr$=/95B}=u#- PKury J6PK=Jmeta.xmlM0 `VꡧZiS%rY.6K+MvS<;cSܟ{m[?#w_~(ӓ`@b] X94dJmNKHڀ!Ղ\$&c)r|Gk[PaJW(̵G35  -M %ԹрOv8R4Ҝ׷plCji"{ ~lwQ!j.-5W@7I;\5GqDwQNLG_N YtEnϮMnS#|egn6.g=r1a :s&gwiS.cXA:X!ja!;KFql,UZEL9xyU'3[9Q1ElL w$$~ &c2 9*S3A%rUYo#.*#tYdP_{t"qWG,}ϗ/KMûiE'muH !iξ-C楑'm-f 3[rAJ& _Hƥo}ʱX:瑯23]zxMM TWavMep `"jU Mz٬3JCLˍNPȲl2 :3.=HDB0fUGJ0!`c&`ho[ë33o3 vIwTq)UX>ljJAflTD}6L.Wkizҧoi X5$SaiZx,F C5C|ǨJA*O2X2ȅ&qha"ʄ1|dZ@Rx(aIϴQSmȞ {. 'hج<sJVO滊Tm4Ϗܨe`4lYv"*K>O3'vK;xMDm0F]ۢ`^֫w iOΜ\DT;48ʷtm dGjagO+muG-s>RDI>v6 J39$Ͷ{ݘ5C5r[OސMp0>Q ]7Dwm.Z dse (Iq@R#\h>4k`2#vuEWJntvO>içk $Ɍ _t[*(;ޓb{>mdG:)eU1իYVH;Qo+wn jVA{dݪH9xL*BE?PKϨgi!z)PK=JConfigurations2/accelerator/PK=JConfigurations2/toolpanel/PK=JConfigurations2/floater/PK=JConfigurations2/menubar/PK=JConfigurations2/images/Bitmaps/PK=JConfigurations2/popupmenu/PK=JConfigurations2/progressbar/PK=JConfigurations2/toolbar/PK=JConfigurations2/statusbar/PK=J manifest.rdf͓n0\n" "Language-Team: Slovenian \n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 0.2\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "%100==4 ? 3 : 0);\n" #: ../SPHelpText.py:76 msgid "" "\n" "\n" "Touch the 'Play' button to continue the game." msgstr "" #: ../SPHelpText.py:71 msgid "" "\n" "\n" "Touch the changed picture." msgstr "" #: ../lib/packid.py:503 msgid "(max two per word), you can play the last level which is a maze." msgstr "(največ dve na besedo), lahko igrate zadnji nivo, ki je labirint." #: ../SPMenu.py:348 msgid "A collection of braintrain games for seniors." msgstr "" #: ../lib/memory_sp.py:216 #, fuzzy msgid "Accuracy is more important than speed." msgstr "Pravilnost je bolj pomembna od hitrosti." #: ../SPMainCore.py:478 #, fuzzy msgid "Activity :" msgstr "Dejavnost: %s" #: ../SPMainCore.py:590 #, python-format msgid "Activity : %s" msgstr "Dejavnost: %s" #: ../lib/dltr.py:377 #, fuzzy msgid "Activity:" msgstr "Dejavnost: %s" #: ../lib/fourrow.py:131 msgid "All pills, both red and yellow, stack on each other." msgstr "" #: ../SPMenu.py:349 msgid "" "All the games have there own help page, just start a game and hit the stars " "on top of the screen to select another difficulty." msgstr "" #: ../SPHelpText.py:142 msgid "Alphabet" msgstr "Abeceda" #: ../lib/fallingletters.py:207 msgid "Alphabet/Keyboardtraining" msgstr "Vaje za abecedo / tipkovnico" #: ../lib/spinbottle.py:119 ../lib/synonyms.py:117 msgid "Already found:" msgstr "" #: ../SPMainCore.py:277 msgid "An error occurred and BraintrainerPlus was restarted" msgstr "" #: ../lib/quiz_math.py:106 msgid "Answer the math questions." msgstr "" #: ../lib/quiz_general.py:159 ../lib/quiz_history.py:251 #: ../lib/quiz_melody.py:111 ../lib/quiz_picture.py:103 ../lib/quiz.py:143 #: ../lib/quiz_royal.py:117 ../lib/quiz_sayings.py:105 ../lib/quiz_text.py:112 msgid "Answer the quiz questions." msgstr "" #: ../SPMainCore.py:871 msgid "" "Are sure you want to quit the dailytraining ? All the results will be lost." msgstr "" #: ../lib/puzzle.py:247 msgid "At the bottom you'll see a image of the complete puzzle." msgstr "" #: ../lib/quiz.py:145 msgid "At the top of the screen, you will see a general knowledge question." msgstr "" #: ../lib/quiz_royal.py:119 msgid "" "At the top of the screen, you will see a question about a member of Royalty" msgstr "" #: ../lib/quiz_picture.py:105 msgid "At the top of the screen, you will see a question about a picture." msgstr "" #: ../lib/quiz_general.py:161 msgid "" "At the top of the screen, you will see a question about general knowledge." msgstr "" #: ../lib/quiz_math.py:108 msgid "At the top of the screen, you will see a question about math problem." msgstr "" #: ../lib/quiz_sayings.py:107 msgid "At the top of the screen, you will see a question about sayings." msgstr "" #: ../lib/quiz_melody.py:113 msgid "" "At the top of the screen, you will see a question about the song playing." msgstr "" #: ../lib/quiz_history.py:253 msgid "" "At the top of the screen, you will see a question from general knowledge " "question from the selected period." msgstr "" #: ../lib/quiz_text.py:114 msgid "At the top of the screen, you will see a question." msgstr "" #: ../lib/billiard.py:345 msgid "Balls" msgstr "Žoge" #: ../lib/numbers_sp.py:190 msgid "Begin" msgstr "" #: ../lib/quiz_general.py:162 ../lib/quiz_history.py:254 #: ../lib/quiz_math.py:109 ../lib/quiz_melody.py:114 ../lib/quiz_picture.py:106 #: ../lib/quiz.py:146 ../lib/quiz_royal.py:120 ../lib/quiz_sayings.py:108 #: ../lib/quiz_text.py:115 msgid "" "Below it are a choice of possible answers.\n" "Touch the correct answer." msgstr "" #: ../lib/billiard.py:287 msgid "Billiard" msgstr "Biljard" #: ../lib/billiard.py:273 msgid "Billiard Game" msgstr "Biljard" #: ../SPMainCore.py:814 msgid "Cancel" msgstr "" #: ../SPHelpText.py:121 ../SPHelpText.py:122 msgid "Change password" msgstr "" #: ../lib/ichanger.py:323 ../lib/numbers_sp.py:194 msgid "Cheat" msgstr "" #: ../SPMainCore.py:227 #, fuzzy, python-format msgid "Childsplay_sp - educational activities, using theme:%s" msgstr "Childsplay_sp - izobraževalne dejavnosti" #: ../SPgdm.py:73 msgid "Childsplay_sp login" msgstr "Prijava Childsplay_sp" #: ../lib/pong.py:425 msgid "Choose the game to play:" msgstr "Izberite igro:" #: ../lib/memory_sp.py:207 msgid "Classic memory game where you have to find pairs of cards." msgstr "Klasična igra spomina, kjer morate najti dve enaki karti." #: ../lib/soundmemory.py:197 msgid "Classic memory game where you have to find pairs of sounds." msgstr "Klasična igra spomina, kjer morate poiskati dva enaka zvoka." #: ../SPMainCore.py:953 msgid "Close" msgstr "" #: ../lib/fourrow.py:536 msgid "Congratulations, try again ?" msgstr "" #: ../SPHelpText.py:129 msgid "Content import" msgstr "" #: ../lib/electro_sp.py:203 ../lib/fallingletters.py:201 #: ../lib/soundmemory.py:205 msgid "Correctness is more important than speed" msgstr "Pravilnost je bolj pomembna od hitrosti." #: ../lib/numbers_sp.py:241 #, fuzzy msgid "Correctness is more important than speed." msgstr "Pravilnost je bolj pomembna od hitrosti." #: ../SPMainCore.py:1244 ../SPMainCore.py:1417 #, python-format msgid "Current activity : %s" msgstr "Trenutna dejavnost: %s" #: ../SPHelpText.py:119 msgid "Daily training sequence" msgstr "" #: ../SPHelpText.py:53 msgid "Default group 1" msgstr "" #: ../SPHelpText.py:54 msgid "Default group 2" msgstr "" #: ../lib/dltr.py:434 msgid "Details" msgstr "" #: ../SPMainCore.py:813 msgid "Do you really want to quit ?" msgstr "Res želite zapreti?" #: ../lib/electro_sp.py:185 msgid "Electro_sp" msgstr "" #: ../SPMainCore.py:575 ../SPMainCore.py:583 msgid "Error !" msgstr "" #: ../SPMainCore.py:582 #, python-format msgid "" "Error constructing activity\n" "%s" msgstr "" #: ../SPMainCore.py:574 #, python-format msgid "" "Error importing activity\n" "%s" msgstr "" #: ../lib/fallingletters.py:185 msgid "Fallingletters" msgstr "Padajoče črke" #: ../lib/packid.py:722 msgid "Find all the letters in the right order." msgstr "Poiščite vse črke v pravilnem vrstnem redu. " #: ../lib/findit_sp.py:212 msgid "Findit" msgstr "" #: ../lib/findsound.py:118 msgid "Findsound" msgstr "Najdi zvok" #: ../lib/fishtank.py:242 msgid "Fishtank" msgstr "Fishtank" #: ../lib/fourrow.py:119 msgid "Fourrow" msgstr "" #: ../lib/pong.py:400 ../SPHelpText.py:143 msgid "Fun" msgstr "Zabava" #: ../lib/packid.py:516 msgid "Fun/Alphabet" msgstr "Zabava / Abeceda" #: ../lib/billiard.py:312 msgid "Fun/Miscellaneous" msgstr "Zabava / Razno" #: ../lib/fishtank.py:263 msgid "Fun/Mousetraining" msgstr "Zabava / Vaje za miško" #: ../SPHelpText.py:124 msgid "Gamemanagement" msgstr "" #: ../SPMainCore.py:1021 #, fuzzy, python-format msgid "Generated by %s version %s for the %s activity" msgstr "Ustvarjeno z Childsplay_sp, različica %s za dejavnost %s" #: ../SPHelpText.py:118 msgid "Groupmanagement" msgstr "" #: ../lib/spinbottle.py:208 ../lib/synonyms.py:154 msgid "Hit the 'Begin' button to start." msgstr "" #: ../SPMainCore.py:658 msgid "Hit the 'space' key or a mousebutton to skip the countdown" msgstr "Pritisnite preslednico ali miškin gumb, da preskočite odštevanje" #: ../lib/pong.py:573 msgid "Hit the Escape key to stop." msgstr "" #: ../lib/ichanger.py:287 msgid "Ichanger" msgstr "" #: ../lib/dltr.py:250 msgid "If you ready to start the next activity, hit the 'start' button." msgstr "" #: ../lib/fallingletters.py:195 msgid "" "In the last two levels the uppercase and lowercase are mixed but you don't " "have to match the case only the letter" msgstr "" "V zadnjih dveh nivojih so med seboj pomešane male in velike črke ampak na " "tipkovnici ni treba pritisniti male/velike črke - pomembna je sama črka, ne " "velikost." #: ../lib/pong.py:388 msgid "In the multiplayer modes, the one who has 11 points wins." msgstr "V načinu z več igralci zmaga tisti, ki doseže 11 točk." #: ../SPMainCore.py:1034 ../SPMainCore.py:1254 msgid "Information" msgstr "" #: ../SPMainCore.py:932 #, python-format msgid "Information about %s" msgstr "" #: ../SPHelpText.py:58 msgid "" "It seems that we cannot use the sound card right now and because this " "activity is all about sound, we just quit. This problem can also be caused " "by another application which uses the soundcard right now." msgstr "" "Trenutno uporaba zvočne kartice ni mogoča in ker to opravilo uporablja " "zvoke, se ne bo izvedlo. problem je lahko tudi v tem, da zvočno kartico " "uporablja drugi program." #: ../SPHelpText.py:139 msgid "Keyboardtraining" msgstr "Vaje s tipkovnico" #: ../SPHelpText.py:141 msgid "Language" msgstr "Jezik" #: ../lib/findsound.py:127 msgid "Listen to the sound and click on the image to which it belongs." msgstr "Poslušajte zvok in kliknite na sliko, ki ji pripada." #: ../SPgdm.py:122 msgid "Login" msgstr "Prijava" #: ../lib/numbers_sp.py:233 msgid "Look carefully and try to remember their positions on the screen." msgstr "" #: ../lib/puzzle.py:253 msgid "Look closely at the complete puzzle picture at the bottom." msgstr "" #: ../lib/memory_sp.py:210 msgid "" "Look closely at the pictures, when you have them memorized touch 'START'.\n" "The pictures turn over, you must match the pair of cards." msgstr "" #: ../lib/synonyms.py:116 msgid "Make a word with the letter: " msgstr "" #: ../lib/quiz_math.py:122 ../SPHelpText.py:137 msgid "Math" msgstr "Matematika" #: ../lib/quiz_math.py:97 #, fuzzy msgid "Math Quiz" msgstr "Matematika" #: ../lib/quiz_melody.py:102 msgid "Melody Quiz" msgstr "" #: ../SPHelpText.py:65 msgid "" "Memorize the pictures.\n" "\n" "One of these pictures will be replaced by a new picture.\n" "\n" "Touch the 'Start' button to begin the game." msgstr "" #: ../lib/electro_sp.py:209 ../lib/memory_sp.py:198 ../lib/memory_sp.py:222 #: ../lib/quiz_melody.py:126 ../lib/quiz.py:163 ../lib/quiz_sayings.py:120 #: ../lib/quiz_text.py:127 ../lib/simon_sp.py:183 ../lib/soundmemory.py:211 #: ../SPHelpText.py:136 msgid "Memory" msgstr "Spomin" #: ../lib/simon_sp.py:177 msgid "Mind the sound sequence as well as the colors sequence." msgstr "" #: ../lib/dltr.py:227 ../lib/findit_sp.py:237 ../lib/findsound.py:139 #: ../lib/ichanger.py:310 ../lib/numbers_sp.py:247 ../lib/photoalbum.py:200 #: ../lib/quiz_general.py:174 ../lib/quiz_history.py:266 #: ../lib/quiz_picture.py:118 ../lib/quiz_royal.py:132 ../lib/spinbottle.py:222 #: ../lib/synonyms.py:167 ../lib/wipe.py:124 ../SPHelpText.py:144 msgid "Miscellaneous" msgstr "Razno" #: ../SPHelpText.py:140 msgid "Mousetraining" msgstr "Vaje z miško" #: ../SPMainCore.py:928 ../SPMainCore.py:935 msgid "Movie" msgstr "" #: ../lib/pong.py:387 msgid "Multi player - Play against another player." msgstr "Več igralcev - igrajte prosti drugemu igralcu." #: ../lib/pong.py:386 msgid "Multi player against the computer - Try to defeat the computer." msgstr "Več igralcev proti računalniku - poskusite premagati računalnik." #: ../lib/wipe.py:83 msgid "New" msgstr "" #: ../SPMainCore.py:729 ../SPMainCore.py:872 ../SPMainCore.py:875 msgid "No" msgstr "Ne" #: ../lib/photoalbum.py:233 #, python-format msgid "" "No photo albums found !\n" "You should place your pictures inside directories called 'Album_1', " "'Album_2' etc\n" " Place these directories inside %s" msgstr "" #: ../lib/photoalbum.py:188 msgid "Number of levels : 1" msgstr "" #: ../lib/spinbottle.py:210 ../lib/synonyms.py:156 msgid "Number of levels : 6" msgstr "" #: ../lib/numbers_sp.py:222 #, fuzzy msgid "Numbers_sp" msgstr "Spomin s številkami" #: ../lib/dltr.py:434 ../lib/dltr.py:438 ../SPMainCore.py:575 #: ../SPMainCore.py:583 ../SPMainCore.py:814 ../SPMainCore.py:819 #: ../SPMainCore.py:820 ../SPMainCore.py:924 ../SPMainCore.py:1023 #: ../SPMainCore.py:1034 ../SPMainCore.py:1254 msgid "OK" msgstr "" #: ../lib/synonyms.py:152 #, python-format msgid "" "On the next screen you'll find a keyboard, try to make as much words as " "possible that begin with the letter '%s'." msgstr "" #: ../lib/spinbottle.py:206 #, python-format msgid "" "On the next screen you'll find a keyboard, try to name as much %s as " "possible with the same letter." msgstr "" #: ../lib/simon_sp.py:166 msgid "On the screen are four blocks of different colours." msgstr "" #: ../lib/findit_sp.py:221 msgid "" "On the screen you will see two almost identical pictures.\n" "However, there are differences between the images." msgstr "" #: ../lib/spinbottle.py:207 ../lib/synonyms.py:153 msgid "Only words from the dictionary are allowed." msgstr "" #: ../lib/packid.py:491 msgid "Packid" msgstr "Packid" #: ../lib/photoalbum.py:178 msgid "Photoalbum" msgstr "" #: ../lib/quiz_picture.py:94 msgid "Picture Quiz" msgstr "" #: ../SPHelpText.py:120 msgid "Picture import" msgstr "" #: ../lib/fourrow.py:538 msgid "Pity, try again ?" msgstr "" #: ../lib/puzzle.py:245 msgid "Place the puzzle piece on the right where you think it belongs..." msgstr "" #: ../lib/quiz_history.py:219 msgid "Please enter your year of birth." msgstr "" #: ../lib/electro_sp.py:240 ../lib/memory_sp.py:283 msgid "Please, choose a set of cards." msgstr "" #: ../lib/wipe.py:156 msgid "Please, choose a set of images." msgstr "" #: ../lib/puzzle.py:302 msgid "Please, choose a set of puzzle images." msgstr "" #: ../lib/pong.py:373 msgid "Pong" msgstr "Pong" #: ../lib/simon_sp.py:167 msgid "Press the Start button with your finger." msgstr "" #: ../lib/fourrow.py:145 ../lib/puzzle.py:236 ../lib/puzzle.py:259 #: ../SPHelpText.py:138 msgid "Puzzle" msgstr "Sestavljanka" #: ../SPMainCore.py:729 ../SPMainCore.py:872 msgid "Question ?" msgstr "" #: ../SPMainCore.py:814 #, fuzzy msgid "Quit ?" msgstr "Zapri" #: ../lib/quiz.py:134 #, fuzzy msgid "Quiz" msgstr "Matematika" #: ../lib/quiz_history.py:242 msgid "Quiz history" msgstr "" #: ../lib/quiz_royal.py:108 msgid "Quiz royal" msgstr "" #: ../lib/quiz_math.py:111 msgid "" "Remember, the order of operations is multiplication or division and followed " "by addition or subtraction." msgstr "" #: ../lib/dltr.py:434 ../SPMainCore.py:1023 msgid "Results" msgstr "" #: ../SPMainCore.py:1027 msgid "Save image" msgstr "" #: ../lib/quiz_sayings.py:96 msgid "Sayings Quiz" msgstr "" #: ../lib/dltr.py:378 msgid "Score:" msgstr "" #: ../SPHelpText.py:126 #, fuzzy msgid "Select Language" msgstr "Jezik" #: ../SPMenu.py:334 msgid "" "Select an activity and click on the button, the activity will be started." msgstr "Izberite dejavnost in kliknite gumb, da se aktivnost začne." #: ../SPMainCore.py:953 msgid "Set volume level" msgstr "" #: ../SPHelpText.py:127 ../SPHelpText.py:128 msgid "Settings" msgstr "" #: ../lib/ichanger.py:296 msgid "" "Several images from the past will appear on the screen.\n" "Look carefully at them and remember what you see." msgstr "" #: ../lib/simon_sp.py:155 msgid "Simon_sp" msgstr "" #: ../lib/pong.py:385 msgid "Single play - Hit the ball against the wall." msgstr "En igralec - odbijate žogico ob zid." #: ../lib/soundmemory.py:188 msgid "Soundmemory" msgstr "Spomin z zvoki" #: ../lib/spinbottle.py:196 msgid "Spin the bottle" msgstr "" #: ../lib/dltr.py:261 ../lib/ichanger.py:321 ../lib/memory_sp.py:430 msgid "Start" msgstr "" #: ../lib/spinbottle.py:129 ../lib/synonyms.py:365 #, fuzzy msgid "Starting a new exercise" msgstr "Začetni nivo %s" #: ../SPMainCore.py:650 #, python-format msgid "Starting level %s" msgstr "Začetni nivo %s" #: ../SPMainCore.py:834 msgid "Stopping timers, please wait..." msgstr "Ustavljam časovnike, prosim, počakajte ..." #: ../lib/spinbottle.py:120 ../lib/synonyms.py:118 msgid "Suggestions:" msgstr "" #: ../lib/synonyms.py:140 msgid "Synonyms" msgstr "" #: ../lib/quiz_text.py:103 #, fuzzy msgid "Text Quiz" msgstr "Matematika" #: ../lib/simon_sp.py:169 msgid "The blocks will light up randomly along with sound clues." msgstr "" #: ../lib/packid.py:499 msgid "The aim of the game:" msgstr "Cilj te igre:" #: ../lib/billiard.py:295 ../lib/dltr.py:214 ../lib/electro_sp.py:193 #: ../lib/fallingletters.py:193 ../lib/findit_sp.py:220 ../lib/findsound.py:126 #: ../lib/fishtank.py:250 ../lib/fourrow.py:127 ../lib/ichanger.py:295 #: ../lib/memory_sp.py:206 ../lib/numbers_sp.py:230 ../lib/photoalbum.py:186 #: ../lib/pong.py:381 ../lib/puzzle.py:244 ../lib/quiz_general.py:158 #: ../lib/quiz_history.py:250 ../lib/quiz_math.py:105 ../lib/quiz_melody.py:110 #: ../lib/quiz_picture.py:102 ../lib/quiz.py:142 ../lib/quiz_royal.py:116 #: ../lib/quiz_sayings.py:104 ../lib/quiz_text.py:111 ../lib/simon_sp.py:163 #: ../lib/soundmemory.py:196 ../lib/spinbottle.py:204 ../lib/synonyms.py:150 #: ../lib/wipe.py:110 msgid "The aim of this activity:" msgstr "Cilj te dejavnosti:" #: ../lib/findit_sp.py:225 msgid "The arrows to the left take you to the previous image." msgstr "" #: ../lib/pong.py:383 msgid "The classic pong game where you must hit a ball with your bat." msgstr "Klasična igra pong, kjer morate odbijati žogico z loparjem." #: ../lib/electro_sp.py:244 ../lib/memory_sp.py:287 ../lib/puzzle.py:306 msgid "The difficulty of the set increases from left to right." msgstr "" #: ../lib/billiard.py:300 ../lib/billiard.py:306 msgid "" "The fewer hits you need to get the ball in the hole, the more points you get." msgstr "Z manj udarci ko spravite žogico v luknjo, več točk dobite." #: ../lib/electro_sp.py:194 msgid "The game is to match pairs of pictures" msgstr "" #: ../lib/packid.py:711 #, fuzzy msgid "" "The last level is only available when you finish the first three levels " "without errors." msgstr "Zadnji nivo je na voljo samo, ko končate prve tri brez napak." #: ../lib/billiard.py:299 msgid "The longer you hold the left button the harder it will hit the ball." msgstr "Dlje ko držite levi gumb, bolj močno boste udarili žogico." #: ../lib/packid.py:723 msgid "The word to find is: " msgstr "Beseda je:" #: ../lib/numbers_sp.py:234 msgid "Then push the 'BEGIN' button. The numbers will disappear." msgstr "" #: ../lib/packid.py:501 msgid "There are thee levels with three words each." msgstr "Obstajajo trije nivoji, vsaj s tremi besedami." #: ../lib/pong.py:384 msgid "There are three modes to choose from:" msgstr "Izbirate lahko med tremi nivoji:" #: ../SPMainCore.py:1525 #, python-format msgid "" "There was an error in %s. Please check the logs and inform the developers" msgstr "Napaka v %s. Preverite dnevnik napak in obvestite razvijalce." #: ../SPHelpText.py:46 #, python-format msgid "" "There was an error in the database this can be caused by many things but " "most of the time it's caused by the fact that your version of the database " "doesn't match the version of the program. I will backup your original " "database and then replace it with a new one. The original database is now " "called sp.db_back and it's placed in %s" msgstr "" "V zbirki podatkov se je pojavila napaka, ki jo lahko povzroči mnogo stvari, " "največkrat pa je razlog v tem, da se različica zbirke podatkov ne ujema z " "različico programa. Izvirna zbirka podatkov bo varno shranjena in zamenjana " "z novo. Izvirna zbirka podatkov se zdaj imenuje sp.db_back in je shranjena v " "%s." #: ../lib/billiard.py:319 ../lib/electro_sp.py:215 ../lib/fallingletters.py:214 #: ../lib/findit_sp.py:244 ../lib/findsound.py:158 ../lib/fishtank.py:270 #: ../lib/fourrow.py:234 ../lib/ichanger.py:316 ../lib/memory_sp.py:228 #: ../lib/numbers_sp.py:257 ../lib/packid.py:523 ../lib/photoalbum.py:206 #: ../lib/pong.py:406 ../lib/puzzle.py:266 ../lib/quiz_general.py:181 #: ../lib/quiz_history.py:273 ../lib/quiz_picture.py:124 ../lib/quiz.py:169 #: ../lib/quiz_royal.py:138 ../lib/simon_sp.py:189 ../lib/soundmemory.py:217 #: ../lib/spinbottle.py:229 ../lib/synonyms.py:174 ../lib/wipe.py:135 #, python-format msgid "This activity has %s levels" msgstr "Ta dejavnost ima %s nivojev" #: ../lib/dltr.py:215 msgid "" "This activity is known as the daily training which is a collection of " "activities." msgstr "" #: ../SPMenu.py:333 msgid "This is the menu used to select an activity." msgstr "Ta meni se uporablja za izbiro dejavnosti." #: ../lib/fourrow.py:133 msgid "Tip: Try creating multiple winning scenario's." msgstr "" #: ../SPMainCore.py:919 #, fuzzy, python-format msgid "Tip:%s" msgstr "Namig:" #: ../lib/quizengine.py:800 #, python-format msgid "" "To little questions found in %s for locale '%s', found %s questions should " "be at least 10" msgstr "" #: ../lib/fourrow.py:132 msgid "" "To win the game you'll need four red pills lined up after each other " "horizontally, vertically or diagonal." msgstr "" #: ../lib/ichanger.py:298 msgid "" "Touch the 'START' button on the right.\n" "The images will dissappear and when they return, one will have changed.\n" "Touch the picture which has changed." msgstr "" #: ../lib/packid.py:500 msgid "Try to 'eat' all the letters in the appropriated order." msgstr "'Pojejte' vse črke v pravilnem vrstnem redu." #: ../lib/numbers_sp.py:235 msgid "" "Try to find the numbers, in the correct order and from low to high, by " "touching them on the screen." msgstr "" #: ../lib/packid.py:504 msgid "Try to find the way out while eating the fruits for extra points and" msgstr "Poskusite najti pot ven tako, da pojeste sadje za dodatne točke in" #: ../lib/fourrow.py:128 msgid "Try to get four in a row in any possible direction." msgstr "" #: ../lib/fishtank.py:251 msgid "Try to remove the fish by clicking on them with the mouse." msgstr "Odstranite ribe, tako, da kliknete nanje z miško." #: ../lib/simon_sp.py:164 msgid "Try to repeat the sequence of sounds played." msgstr "" #: ../lib/fallingletters.py:194 msgid "Type the falling letters on the keyboard before they hit the ground." msgstr "Pritisnite padajoče črke na tipkovnici preden dosežejo tla." #: ../SPHelpText.py:123 msgid "Update BrainTrainerPlus" msgstr "" #: ../SPMenu.py:335 msgid "Use the 'sub menu' buttons for the different activity menus" msgstr "" #: ../SPMenu.py:350 msgid "Use the menu below to choose between the different game categories" msgstr "" #: ../lib/billiard.py:298 msgid "Use the right mousebutton to aim and the left button to hit the ball." msgstr "Z desnim gumbom miške ciljate, z levim pa udarite." #: ../lib/pong.py:579 msgid "Use these keys on your keyboard to control the bat." msgstr "S temi tipkami upravljate z loparjem." #: ../SPMainCore.py:465 #, python-format msgid "User: %s" msgstr "Uporabnik: %s" #: ../SPHelpText.py:117 #, fuzzy msgid "Usermanagement" msgstr "Uporabniško ime:" #: ../SPgdm.py:104 msgid "Username:" msgstr "Uporabniško ime:" #: ../lib/simon_sp.py:170 msgid "" "When the flashing stops you will be prompted to repeat the sequence by " "touching the coloured blocks." msgstr "" #: ../lib/packid.py:502 msgid "When you have finished all the levels, without making to much mistakes" msgstr "Ko končate vse nivoje brez večjih napak" #: ../lib/findit_sp.py:223 msgid "" "When you spot a difference, touch it with your finger.\n" "You can click the question mark in the middle of the screen if you need a " "hint." msgstr "" #: ../lib/soundmemory.py:199 msgid "" "When you touch the picture you will hear a sound.\n" "Match the image with others that make the same sound,to get points." msgstr "" #: ../lib/wipe.py:102 msgid "Wipe" msgstr "" #: ../lib/wipe.py:112 msgid "Wipe with your finger on the screen to uncover the picture." msgstr "" #: ../SPMainCore.py:729 ../SPMainCore.py:733 ../SPMainCore.py:734 #: ../SPMainCore.py:872 msgid "Yes" msgstr "Da" #: ../lib/fourrow.py:130 msgid "" "You can vertically drop a red pill in a desired column by pressing that " "exact column." msgstr "" #: ../lib/dltr.py:374 msgid "You have finished the daily training module." msgstr "" #: ../lib/billiard.py:296 msgid "You have to make the blue ball enter the hole (in level 1)" msgstr "Modro žogico morate spraviti v luknjo (v 1. nivoju)" #: ../SPMainCore.py:728 msgid "You play very good, do you want to try the next level ?" msgstr "" #: ../lib/electro_sp.py:196 msgid "" "You select the pictures by touching them.\n" "As you progress through the star levels more pairs appear to match." msgstr "" #: ../lib/numbers_sp.py:231 msgid "You will see various numbers scattered around the screen." msgstr "" #: ../lib/billiard.py:617 msgid "You won!!" msgstr "Zmagali ste!" #: ../lib/dltr.py:376 msgid "Your average results per group are:" msgstr "" #: ../SPMainCore.py:1033 #, python-format msgid "" "Your image is saved at:\n" "%s" msgstr "" "Vaša slika je shranjena v:\n" "%s" #: ../lib/dltr.py:375 msgid "Your results are:" msgstr "" #: ../lib/billiard.py:297 msgid "and the red ones in levels 2 and 3." msgstr "in rdeče na stopnji 2 in 3." #: ../lib/spinbottle.py:118 msgid "beginning with the letter: " msgstr "" #: ../lib/packid.py:505 msgid "funny sounds :-)" msgstr "smešni zvoki :-)" #: ../lib/billiard.py:604 ../lib/billiard.py:618 msgid "points" msgstr "točke" #: ../lib/quiz.py:157 #, python-format msgid "question id: %s" msgstr "" #: ../lib/quiz_general.py:134 #, python-format msgid "" "xml file %s is missing, this shouldn't happen, contact the %s developers" msgstr "" #~ msgid "All the data was stored succesfully." #~ msgstr "Vsi podatki so bili uspešno shranjeni." #~ msgid "Aquarium mouse training, difficulty: *" #~ msgstr "Vaje za miško, akvarij, težavnost: *" #~ msgid "" #~ "At the start of the game, a photograph of an animal is shown, above the " #~ "picture the name of the animal is written." #~ msgstr "" #~ "na začetku igre se prikaže slika živali, nad njo je izpisano ime živali." #~ msgid "Billiard, difficulty: **/***" #~ msgstr "Biljard, težavnost: **/***" #~ msgid "Childsplay_sp information" #~ msgstr "Informacije Childsplay_sp" #~ msgid "Childsplay_sp question" #~ msgstr "Vprašanje Childsplay_sp" #~ msgid "Childsplay_sp results diagram" #~ msgstr "Diagram rezultatov Childsplay_sp" #, fuzzy #~ msgid "Click the buttons in the right order" #~ msgstr "Poiščite vse črke v pravilnem vrstnem redu. " #~ msgid "" #~ "Each part of the screen can also be clicked on to make the animal scream, " #~ "his name or initial spoken." #~ msgstr "" #~ "Vsak del zaslona se lahko tudi klikne in s tem znova sproži, da da žival " #~ "glas, ali da se izgovori njena začetnica ali ime." #~ msgid "Exercises" #~ msgstr "Vaje" #~ msgid "" #~ "Failed to get the dbase data, try to run childsplay_sp first to setup the " #~ "dbase" #~ msgstr "" #~ "Ni bilo mogoče pridobiti podatkov iz zbirke podatkov. Poskusite pognati " #~ "childsplay_sp, da se vzpostavi zbirka podatkov." #~ msgid "Find the characters" #~ msgstr "Najdi znake" #~ msgid "Flashcards" #~ msgstr "Karte" #~ msgid "Flashcards, difficulty: *" #~ msgstr "Karte, težavnost: *" #~ msgid "" #~ "Give your login name in the box and hit the login button. Alternatively " #~ "you can just hit the login button and run Childsplay_sp in anonymous mode." #~ msgstr "" #~ "Vnesite uporabniško ime in kliknite gumb za prijavo. Lahko pa samo " #~ "kliknete gumb za prijavo in poženete Childsplay_sp v anonimnem načinu." #, fuzzy #~ msgid "Goal of the activity" #~ msgstr "Cilj te dejavnosti" #~ msgid "" #~ "If the menu consist of more layers, sub menus, you can always get back to " #~ "the main menu by using the 'exit' button." #~ msgstr "" #~ "Če je meni sestavljen iz več podmenijev, se na prejšnji nivo vrnete z " #~ "gumbom 'Izhod'." #~ msgid "" #~ "If you start the GUI for the first time there's no username and password " #~ "set so you should just hit the 'Login' button.\n" #~ " You will get a warning message telling you to set as soon as possible a " #~ "username and password.\n" #~ "You can set a username and password in the GUI.\n" #~ " Go to 'Settings' -> 'Set password'." #~ msgstr "" #~ "Če program poganjate prvič, uporabniško ime in geslo še nista " #~ "nastavljena, zato samo kliknite gumb 'Prijava'.\n" #~ "Prikazano bo obvestilo, da čim prej nastavite uporabnipko ime in geslo.\n" #~ "nastavite ju lahko preko menija 'Nastavitve' -> 'Nastavi geslo'." #~ msgid "" #~ "In the last level the fish needs to be clicked two times while they try " #~ "to escape." #~ msgstr "" #~ "V zadnjem nivoju morate ribo klikniti dvakrat, ko skušajo pobegniti." #~ msgid "" #~ "In this file you can set a number of options to change the game play." #~ msgstr "" #~ "V tej datoteki lahko nastavite množico možnosti in s tem spremenite " #~ "igralnost." #~ msgid "Info" #~ msgstr "Informacije" #~ msgid "Keyboard training, difficulty: *" #~ msgstr "Vaje s tipkovnico, težavnost: *" #~ msgid "Listen to the sound and click on the character to which it belongs." #~ msgstr "Poslušajte zvok in kliknite na lik, ki mu pripada." #~ msgid "Lower case characters memory, difficulty: */**" #~ msgstr "Spomin z malimi črkami, težavnost: */**" #~ msgid "LowercaseMemory" #~ msgstr "Spomin z malimi črkami" #~ msgid "Memory, difficulty: */**" #~ msgstr "Spomin, težavnost: */**" #~ msgid "Memory/Alphabet" #~ msgstr "Spomin/abeceda" #~ msgid "Menu" #~ msgstr "Meni" #~ msgid "No data available for this level" #~ msgstr "Ni podatkov za to raven" #~ msgid "Numbers memory, difficulty: */**" #~ msgstr "Spomin s številkami, težavnost: */**" #~ msgid "Ok" #~ msgstr "V redu" #~ msgid "On the left the initial of the animal name is shown." #~ msgstr "Na levi je prikazana začetnica živali." #~ msgid "Packid, difficulty: **/***" #~ msgstr "Packid, težavnost: **/***" #~ msgid "Pause" #~ msgstr "Premor" #~ msgid "Pong classic tennis game, difficulty: *" #~ msgstr "Klasična igra tenisa pong, težavnost: *" #~ msgid "Put all the pieces in the correct order." #~ msgstr "Postavite vse dele v pravilnem vrstnem redu." #~ msgid "Puzzle, difficulty: */**" #~ msgstr "Sestavljanka, težavnost: */**" #~ msgid "Save" #~ msgstr "Shrani" #~ msgid "Scores reached in level %s" #~ msgstr "Rezultat, dosežen v nivoju %s" #~ msgid "Sound association, difficulty: *" #~ msgstr "Asociacija zvokov, težavnost: *" #~ msgid "Sound association, difficulty: */**" #~ msgstr "Asociacija zvokov, težavnost: */**" #~ msgid "Sound memory, difficulty: */**" #~ msgstr "Zvočni spomin, težavnost: */**" #~ msgid "The aim of this activity" #~ msgstr "Cilj te dejavnosti" #~ msgid "" #~ "The faster you find all the characters the better your score will be." #~ msgstr "Hitreje ko najdete like, boljši rezultat boste imeli." #~ msgid "" #~ "The game has a configuration file called 'pongrc', located in the ." #~ "childsplay directory of your homedirectory." #~ msgstr "" #~ "Igra ima datoteko z nastavitvami 'pongrc', ki se nahaja v mapi childsplay " #~ "v vaši domači mapi." #~ msgid "The table 'activity_options' doesn't exist in the dbase" #~ msgstr "Tabela 'activity_options' ne obstaja v tbirki podatkov" #~ msgid "" #~ "Then the animal name is spoken ('the dog'), and the animal makes his cry " #~ "('woof' 'cui-cui' etc.)." #~ msgstr "" #~ "Nato se izgovori ime živali ('pes') in žival da glas (npr. 'hov hov')." #~ msgid "" #~ "There was a problem while replacing the rows in the database.\n" #~ "The exception was:\n" #~ "%s" #~ msgstr "" #~ "Pri zamenjavi vrstic v tabeli se je pojavil problem.\n" #~ "Napaka je bila:\n" #~ "%s" #~ msgid "This activity belongs to the category: %s" #~ msgstr "Ta dejavnost spada h kategoriji: %s" #~ msgid "" #~ "This database table holds the values used when displaying the results " #~ "graph in an activity.\n" #~ "The column 'MU-value' holds an integer between 0 and 10 indicating the " #~ "average score.(the dark blue line).\n" #~ "The column 'SIGMA-value' holds an integer between 0 an 100 indicating the " #~ "standard deviation in percentage, probably always 50. (the light blue " #~ "box)\n" #~ "\n" #~ "Click on the row you want to alter and then click on the field you wish " #~ "to edit.\n" #~ "You cannot edit the 'Activity name' field.\n" #~ "Use the 'Save' button to store the changes in the database." #~ msgstr "" #~ "Tabela zbirke podatkov vsebuje vrednosti, ki se uporabljajo za prikaz " #~ "grafa rezultatov v dejavnosti.\n" #~ "Stolpec 'MU-value' vsebuje celo število med 0 in 10, ki ponazarja " #~ "povprečni rezultat (temno modra črta).\n" #~ "Stolpec 'SIGMA-value' vsebuje celo število med 0 in 100, ki ponazarja " #~ "standardni odklon v odstotkih, verjetno vedno 50 (svetlo moder okvir).\n" #~ "\n" #~ "kliknite na vrstico, ki jo želite spremeniti in nato kliknite na polje, " #~ "ki ga želite urediti.\n" #~ "Uredite lahko polje 'Activity name'.\n" #~ "Za shranjevanje uporabite gumb 'Shrani'." #~ msgid "This is a game to teach the alphabet to very little childrens." #~ msgstr "Ta igra je za učenje abecede za zelo majhne otroke." #, fuzzy #~ msgid "Tips" #~ msgstr "Namig:" #, fuzzy #~ msgid "Type of activity" #~ msgstr "Cilj te dejavnosti" #~ msgid "Upper case characters memory, difficulty: */**" #~ msgstr "Spomin z velikimi črkami, težavnost: */**" #~ msgid "UppercaseMemory" #~ msgstr "Spomin z velikimi črkami" #~ msgid "" #~ "When a letter is hit on the keyboard, a corresponding animal is shown." #~ msgstr "Če kliknete črko na tipkovnici, se prikaže odgovarjajoča žival." #~ msgid "" #~ "When you can't find the correct character after a certain period of time " #~ "a box will be drawn around it." #~ msgstr "" #~ "Če ne najdete pravega lika, se bo po določenem času ojrog njega narisal " #~ "okvir." #~ msgid "" #~ "You can add your own images by placing them in the following directory: " #~ msgstr "Lastna slike lahko dodat etako, da jih postavite v sledečo mapo:" #~ msgid "You can hit the 'graph' button to see your results per level." #~ msgstr "kliknete lahko gumb 'Graf' in pogledate rezultat po nivojih." #~ msgid "" #~ "Your language, %s, is not supported.\n" #~ " I will now switch to English" #~ msgstr "" #~ "Vaš jezik, %s, ni podprt.\n" #~ "Preklapljam na angleščino." #~ msgid "" #~ "Your language, %s, is supported but you must install\n" #~ " the 'alphabet_sounds_%s' package.\n" #~ " Look for it in your GNU/Linux distro or at www.schoolsplay.org.\n" #~ " I will now switch to English" #~ msgstr "" #~ "Vaš jezik, %s, je podprt ampak morate namestiti\n" #~ "paket 'alphabet_sounds_%s'.\n" #~ "Poiščite ga v vaši distribuciji GNU/Linux ali na spletni strani www." #~ "schoolsplay.org.\n" #~ "Preklapljam na angleščino." #~ msgid "badger" #~ msgstr "jazbec" #~ msgid "bear" #~ msgstr "medved" #~ msgid "beaver" #~ msgstr "bober" #~ msgid "bee" #~ msgstr "čebela" #~ msgid "bison" #~ msgstr "bizon" #~ msgid "blackbird" #~ msgstr "kos" #~ msgid "bull" #~ msgstr "bik" #~ msgid "camel" #~ msgstr "kamela" #~ msgid "chimp" #~ msgstr "šimpanz" #~ msgid "cow" #~ msgstr "krava" #~ msgid "crow" #~ msgstr "vrana" #~ msgid "cuckoo" #~ msgstr "kukavica" #~ msgid "deer" #~ msgstr "jelen" #~ msgid "doe" #~ msgstr "srna" #~ msgid "dog" #~ msgstr "pes" #~ msgid "dolphin" #~ msgstr "delfin" #~ msgid "donkey" #~ msgstr "osel" #~ msgid "dromedary" #~ msgstr "kamela" #~ msgid "duck" #~ msgstr "raca" #~ msgid "elephant" #~ msgstr "slon" #~ msgid "ferret" #~ msgstr "dihur" #~ msgid "fly" #~ msgstr "muha" #~ msgid "fox" #~ msgstr "lisica" #~ msgid "frog" #~ msgstr "žaba" #~ msgid "gander" #~ msgstr "gosak" #~ msgid "giraffe" #~ msgstr "žirafa" #~ msgid "goat" #~ msgstr "koza" #~ msgid "gorilla" #~ msgstr "gorila" #~ msgid "grasshopper" #~ msgstr "kobilica" #~ msgid "hen" #~ msgstr "kokoš" #~ msgid "hippopotamus" #~ msgstr "povodni konj" #~ msgid "hornet" #~ msgstr "sršen" #~ msgid "horse" #~ msgstr "konj" #~ msgid "iguana" #~ msgstr "leguan" #~ msgid "kangaroo" #~ msgstr "kenguru" #~ msgid "koala" #~ msgstr "koala" #~ msgid "lark" #~ msgstr "škrjanec" #~ msgid "lion" #~ msgstr "lev" #~ msgid "marmot" #~ msgstr "svizec" #~ msgid "mountaingoat" #~ msgstr "kozorog" #~ msgid "mouse" #~ msgstr "miš" #~ msgid "nandou" #~ msgstr "nandu" #~ msgid "orca" #~ msgstr "orka" #~ msgid "otter" #~ msgstr "vidra" #~ msgid "owl" #~ msgstr "sova" #~ msgid "peacock" #~ msgstr "pav" #~ msgid "penguin" #~ msgstr "pengvin" #~ msgid "pig" #~ msgstr "prašič" #~ msgid "pigeon" #~ msgstr "golob" #~ msgid "quetzal" #~ msgstr "quetzal" #~ msgid "rabbit" #~ msgstr "zajec" #~ msgid "ram" #~ msgstr "oven" #~ msgid "rat" #~ msgstr "podgana" #~ msgid "rooster" #~ msgstr "petelin" #~ msgid "seagull" #~ msgstr "galeb" #~ msgid "tiger" #~ msgstr "tiger" #~ msgid "tucan" #~ msgstr "tukan" #~ msgid "turkey" #~ msgstr "puran" #~ msgid "vulture" #~ msgstr "jastreb" #~ msgid "wallaby" #~ msgstr "kenguru" #~ msgid "wapiti" #~ msgstr "vapiti" #~ msgid "whale" #~ msgstr "kit" #~ msgid "wildboar" #~ msgstr "zver" #~ msgid "wombat" #~ msgstr "vombat" #~ msgid "xanthia" #~ msgstr "xantia" #~ msgid "yak" #~ msgstr "jak" #~ msgid "zebra" #~ msgstr "zebra" #~ msgid "zebu" #~ msgstr "zebu" childsplay-3.3/po/childsplay_sv_SE.po0000644000175000017500000011200413271013626016431 0ustar stasstasmsgid "" msgstr "" "Project-Id-Version: Schoolsplay\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-07-09 11:38+0200\n" "PO-Revision-Date: \n" "Last-Translator: June \n" "Language-Team: \n" "Language: sv_SE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Swedish\n" "X-Poedit-Country: SWEDEN\n" #: ../SPHelpText.py:76 msgid "" "\n" "\n" "Touch the 'Play' button to continue the game." msgstr "" #: ../SPHelpText.py:71 msgid "" "\n" "\n" "Touch the changed picture." msgstr "" #: ../lib/packid.py:503 msgid "(max two per word), you can play the last level which is a maze." msgstr "(max två per ord), kan du spela sista nivån som är en labyrint." #: ../SPMenu.py:348 msgid "A collection of braintrain games for seniors." msgstr "" #: ../lib/memory_sp.py:216 #, fuzzy msgid "Accuracy is more important than speed." msgstr "Det är viktigare att få rätt sva än att vara snabb" #: ../SPMainCore.py:478 #, fuzzy msgid "Activity :" msgstr "Aktivitet: %s" #: ../SPMainCore.py:590 #, python-format msgid "Activity : %s" msgstr "Aktivitet: %s" #: ../lib/dltr.py:377 #, fuzzy msgid "Activity:" msgstr "Aktivitet: %s" #: ../lib/fourrow.py:131 msgid "All pills, both red and yellow, stack on each other." msgstr "" #: ../SPMenu.py:349 msgid "" "All the games have there own help page, just start a game and hit the stars " "on top of the screen to select another difficulty." msgstr "" #: ../SPHelpText.py:142 msgid "Alphabet" msgstr "Alfabet" #: ../lib/fallingletters.py:207 msgid "Alphabet/Keyboardtraining" msgstr "Alfabet/tangentbordsträning" #: ../lib/spinbottle.py:119 ../lib/synonyms.py:117 msgid "Already found:" msgstr "" #: ../SPMainCore.py:277 msgid "An error occurred and BraintrainerPlus was restarted" msgstr "" #: ../lib/quiz_math.py:106 msgid "Answer the math questions." msgstr "" #: ../lib/quiz_general.py:159 ../lib/quiz_history.py:251 #: ../lib/quiz_melody.py:111 ../lib/quiz_picture.py:103 ../lib/quiz.py:143 #: ../lib/quiz_royal.py:117 ../lib/quiz_sayings.py:105 ../lib/quiz_text.py:112 msgid "Answer the quiz questions." msgstr "" #: ../SPMainCore.py:871 msgid "" "Are sure you want to quit the dailytraining ? All the results will be lost." msgstr "" #: ../lib/puzzle.py:247 msgid "At the bottom you'll see a image of the complete puzzle." msgstr "" #: ../lib/quiz.py:145 msgid "At the top of the screen, you will see a general knowledge question." msgstr "" #: ../lib/quiz_royal.py:119 msgid "" "At the top of the screen, you will see a question about a member of Royalty" msgstr "" #: ../lib/quiz_picture.py:105 msgid "At the top of the screen, you will see a question about a picture." msgstr "" #: ../lib/quiz_general.py:161 msgid "" "At the top of the screen, you will see a question about general knowledge." msgstr "" #: ../lib/quiz_math.py:108 msgid "At the top of the screen, you will see a question about math problem." msgstr "" #: ../lib/quiz_sayings.py:107 msgid "At the top of the screen, you will see a question about sayings." msgstr "" #: ../lib/quiz_melody.py:113 msgid "" "At the top of the screen, you will see a question about the song playing." msgstr "" #: ../lib/quiz_history.py:253 msgid "" "At the top of the screen, you will see a question from general knowledge " "question from the selected period." msgstr "" #: ../lib/quiz_text.py:114 msgid "At the top of the screen, you will see a question." msgstr "" #: ../lib/billiard.py:345 msgid "Balls" msgstr "Bollar" #: ../lib/numbers_sp.py:190 msgid "Begin" msgstr "" #: ../lib/quiz_general.py:162 ../lib/quiz_history.py:254 #: ../lib/quiz_math.py:109 ../lib/quiz_melody.py:114 ../lib/quiz_picture.py:106 #: ../lib/quiz.py:146 ../lib/quiz_royal.py:120 ../lib/quiz_sayings.py:108 #: ../lib/quiz_text.py:115 msgid "" "Below it are a choice of possible answers.\n" "Touch the correct answer." msgstr "" #: ../lib/billiard.py:287 msgid "Billiard" msgstr "Biljard" #: ../lib/billiard.py:273 msgid "Billiard Game" msgstr "Biljard Spel" #: ../SPMainCore.py:814 msgid "Cancel" msgstr "" #: ../SPHelpText.py:121 ../SPHelpText.py:122 msgid "Change password" msgstr "" #: ../lib/ichanger.py:323 ../lib/numbers_sp.py:194 msgid "Cheat" msgstr "" #: ../SPMainCore.py:227 #, fuzzy, python-format msgid "Childsplay_sp - educational activities, using theme:%s" msgstr "Childsplay_sp - lärorika aktiviteter" #: ../SPgdm.py:73 msgid "Childsplay_sp login" msgstr "Childsplay_sp inloggning" #: ../lib/pong.py:425 msgid "Choose the game to play:" msgstr "Välj spel:" #: ../lib/memory_sp.py:207 msgid "Classic memory game where you have to find pairs of cards." msgstr "Klassiskt memoryspel där du skall hitta kortpar." #: ../lib/soundmemory.py:197 msgid "Classic memory game where you have to find pairs of sounds." msgstr "Klassiskt memoryspel där du skall hitta matchande ljudpar." #: ../SPMainCore.py:953 msgid "Close" msgstr "" #: ../lib/fourrow.py:536 msgid "Congratulations, try again ?" msgstr "" #: ../SPHelpText.py:129 msgid "Content import" msgstr "" #: ../lib/electro_sp.py:203 ../lib/fallingletters.py:201 #: ../lib/soundmemory.py:205 msgid "Correctness is more important than speed" msgstr "Det är viktigare att få rätt sva än att vara snabb" #: ../lib/numbers_sp.py:241 #, fuzzy msgid "Correctness is more important than speed." msgstr "Det är viktigare att få rätt sva än att vara snabb" #: ../SPMainCore.py:1244 ../SPMainCore.py:1417 #, python-format msgid "Current activity : %s" msgstr "Nuvarande aktivitet : %s" #: ../SPHelpText.py:119 msgid "Daily training sequence" msgstr "" #: ../SPHelpText.py:53 msgid "Default group 1" msgstr "" #: ../SPHelpText.py:54 msgid "Default group 2" msgstr "" #: ../lib/dltr.py:434 msgid "Details" msgstr "" #: ../SPMainCore.py:813 msgid "Do you really want to quit ?" msgstr "Vill du verkligen avsluta ?" #: ../lib/electro_sp.py:185 msgid "Electro_sp" msgstr "" #: ../SPMainCore.py:575 ../SPMainCore.py:583 msgid "Error !" msgstr "" #: ../SPMainCore.py:582 #, python-format msgid "" "Error constructing activity\n" "%s" msgstr "" #: ../SPMainCore.py:574 #, python-format msgid "" "Error importing activity\n" "%s" msgstr "" #: ../lib/fallingletters.py:185 msgid "Fallingletters" msgstr "Fallandebokstäver" #: ../lib/packid.py:722 msgid "Find all the letters in the right order." msgstr "Hitta alla bokstäver i rätt ordning." #: ../lib/findit_sp.py:212 msgid "Findit" msgstr "" #: ../lib/findsound.py:118 msgid "Findsound" msgstr "Hittaljud" #: ../lib/fishtank.py:242 msgid "Fishtank" msgstr "Akvarium" #: ../lib/fourrow.py:119 msgid "Fourrow" msgstr "" #: ../lib/pong.py:400 ../SPHelpText.py:143 msgid "Fun" msgstr "Skoj" #: ../lib/packid.py:516 msgid "Fun/Alphabet" msgstr "Skoj/Alfabet" #: ../lib/billiard.py:312 msgid "Fun/Miscellaneous" msgstr "Skoj/Diverse" #: ../lib/fishtank.py:263 msgid "Fun/Mousetraining" msgstr "Skoj/Musträning" #: ../SPHelpText.py:124 msgid "Gamemanagement" msgstr "" #: ../SPMainCore.py:1021 #, fuzzy, python-format msgid "Generated by %s version %s for the %s activity" msgstr "Skapad av Childsplay_sp version %s för aktiviteten %s" #: ../SPHelpText.py:118 msgid "Groupmanagement" msgstr "" #: ../lib/spinbottle.py:208 ../lib/synonyms.py:154 msgid "Hit the 'Begin' button to start." msgstr "" #: ../SPMainCore.py:658 msgid "Hit the 'space' key or a mousebutton to skip the countdown" msgstr "" "Tryck på mellanslagstangenten eller en musknapp för att hoppa över " "nedräkningen" #: ../lib/pong.py:573 msgid "Hit the Escape key to stop." msgstr "" #: ../lib/ichanger.py:287 msgid "Ichanger" msgstr "" #: ../lib/dltr.py:250 msgid "If you ready to start the next activity, hit the 'start' button." msgstr "" #: ../lib/fallingletters.py:195 msgid "" "In the last two levels the uppercase and lowercase are mixed but you don't " "have to match the case only the letter" msgstr "" "På de sista två nivåerna blandas stora och små bokstäver, men du behövder " "bara matcha själva bokstaven" #: ../lib/pong.py:388 msgid "In the multiplayer modes, the one who has 11 points wins." msgstr "I flera spelare lägen, den som får 11 poäng vinner." #: ../SPMainCore.py:1034 ../SPMainCore.py:1254 msgid "Information" msgstr "Information" #: ../SPMainCore.py:932 #, fuzzy, python-format msgid "Information about %s" msgstr "Information" #: ../SPHelpText.py:58 msgid "" "It seems that we cannot use the sound card right now and because this " "activity is all about sound, we just quit. This problem can also be caused " "by another application which uses the soundcard right now." msgstr "" "Det verkar som om vi inte kan använda ljudkortet nu, och eftersom denna " "aktivitet handlar om ljud, avslutas den. Detta problem kan också orsakas av " "att ett annat program använder ljudkortet just nu." #: ../SPHelpText.py:139 msgid "Keyboardtraining" msgstr "Tangentbordsträning" #: ../SPHelpText.py:141 msgid "Language" msgstr "Språk" #: ../lib/findsound.py:127 msgid "Listen to the sound and click on the image to which it belongs." msgstr "Lyssna till ljudet och klicka på den bild dit det hör." #: ../SPgdm.py:122 msgid "Login" msgstr "Inloggning" #: ../lib/numbers_sp.py:233 msgid "Look carefully and try to remember their positions on the screen." msgstr "" #: ../lib/puzzle.py:253 msgid "Look closely at the complete puzzle picture at the bottom." msgstr "" #: ../lib/memory_sp.py:210 msgid "" "Look closely at the pictures, when you have them memorized touch 'START'.\n" "The pictures turn over, you must match the pair of cards." msgstr "" #: ../lib/synonyms.py:116 msgid "Make a word with the letter: " msgstr "" #: ../lib/quiz_math.py:122 ../SPHelpText.py:137 msgid "Math" msgstr "Matematik" #: ../lib/quiz_math.py:97 #, fuzzy msgid "Math Quiz" msgstr "Matematik" #: ../lib/quiz_melody.py:102 msgid "Melody Quiz" msgstr "" #: ../SPHelpText.py:65 msgid "" "Memorize the pictures.\n" "\n" "One of these pictures will be replaced by a new picture.\n" "\n" "Touch the 'Start' button to begin the game." msgstr "" #: ../lib/electro_sp.py:209 ../lib/memory_sp.py:198 ../lib/memory_sp.py:222 #: ../lib/quiz_melody.py:126 ../lib/quiz.py:163 ../lib/quiz_sayings.py:120 #: ../lib/quiz_text.py:127 ../lib/simon_sp.py:183 ../lib/soundmemory.py:211 #: ../SPHelpText.py:136 msgid "Memory" msgstr "Memory" #: ../lib/simon_sp.py:177 msgid "Mind the sound sequence as well as the colors sequence." msgstr "" #: ../lib/dltr.py:227 ../lib/findit_sp.py:237 ../lib/findsound.py:139 #: ../lib/ichanger.py:310 ../lib/numbers_sp.py:247 ../lib/photoalbum.py:200 #: ../lib/quiz_general.py:174 ../lib/quiz_history.py:266 #: ../lib/quiz_picture.py:118 ../lib/quiz_royal.py:132 ../lib/spinbottle.py:222 #: ../lib/synonyms.py:167 ../lib/wipe.py:124 ../SPHelpText.py:144 msgid "Miscellaneous" msgstr "Diverse" #: ../SPHelpText.py:140 msgid "Mousetraining" msgstr "Musträning" #: ../SPMainCore.py:928 ../SPMainCore.py:935 msgid "Movie" msgstr "" #: ../lib/pong.py:387 msgid "Multi player - Play against another player." msgstr "Flera spelare - Spela mot en annan spelare." #: ../lib/pong.py:386 msgid "Multi player against the computer - Try to defeat the computer." msgstr "Flera spelare mot datorn - Försök att slå datorn." #: ../lib/wipe.py:83 msgid "New" msgstr "" #: ../SPMainCore.py:729 ../SPMainCore.py:872 ../SPMainCore.py:875 msgid "No" msgstr "Nej" #: ../lib/photoalbum.py:233 #, python-format msgid "" "No photo albums found !\n" "You should place your pictures inside directories called 'Album_1', " "'Album_2' etc\n" " Place these directories inside %s" msgstr "" #: ../lib/photoalbum.py:188 msgid "Number of levels : 1" msgstr "" #: ../lib/spinbottle.py:210 ../lib/synonyms.py:156 msgid "Number of levels : 6" msgstr "" #: ../lib/numbers_sp.py:222 #, fuzzy msgid "Numbers_sp" msgstr "SifferMemory" #: ../lib/dltr.py:434 ../lib/dltr.py:438 ../SPMainCore.py:575 #: ../SPMainCore.py:583 ../SPMainCore.py:814 ../SPMainCore.py:819 #: ../SPMainCore.py:820 ../SPMainCore.py:924 ../SPMainCore.py:1023 #: ../SPMainCore.py:1034 ../SPMainCore.py:1254 msgid "OK" msgstr "" #: ../lib/synonyms.py:152 #, python-format msgid "" "On the next screen you'll find a keyboard, try to make as much words as " "possible that begin with the letter '%s'." msgstr "" #: ../lib/spinbottle.py:206 #, python-format msgid "" "On the next screen you'll find a keyboard, try to name as much %s as " "possible with the same letter." msgstr "" #: ../lib/simon_sp.py:166 msgid "On the screen are four blocks of different colours." msgstr "" #: ../lib/findit_sp.py:221 msgid "" "On the screen you will see two almost identical pictures.\n" "However, there are differences between the images." msgstr "" #: ../lib/spinbottle.py:207 ../lib/synonyms.py:153 msgid "Only words from the dictionary are allowed." msgstr "" #: ../lib/packid.py:491 msgid "Packid" msgstr "Packid" #: ../lib/photoalbum.py:178 msgid "Photoalbum" msgstr "" #: ../lib/quiz_picture.py:94 msgid "Picture Quiz" msgstr "" #: ../SPHelpText.py:120 msgid "Picture import" msgstr "" #: ../lib/fourrow.py:538 msgid "Pity, try again ?" msgstr "" #: ../lib/puzzle.py:245 msgid "Place the puzzle piece on the right where you think it belongs..." msgstr "" #: ../lib/quiz_history.py:219 msgid "Please enter your year of birth." msgstr "" #: ../lib/electro_sp.py:240 ../lib/memory_sp.py:283 msgid "Please, choose a set of cards." msgstr "" #: ../lib/wipe.py:156 msgid "Please, choose a set of images." msgstr "" #: ../lib/puzzle.py:302 msgid "Please, choose a set of puzzle images." msgstr "" #: ../lib/pong.py:373 msgid "Pong" msgstr "Pong" #: ../lib/simon_sp.py:167 msgid "Press the Start button with your finger." msgstr "" #: ../lib/fourrow.py:145 ../lib/puzzle.py:236 ../lib/puzzle.py:259 #: ../SPHelpText.py:138 msgid "Puzzle" msgstr "Pussel" #: ../SPMainCore.py:729 ../SPMainCore.py:872 msgid "Question ?" msgstr "" #: ../SPMainCore.py:814 #, fuzzy msgid "Quit ?" msgstr "Avsluta" #: ../lib/quiz.py:134 #, fuzzy msgid "Quiz" msgstr "Matematik" #: ../lib/quiz_history.py:242 msgid "Quiz history" msgstr "" #: ../lib/quiz_royal.py:108 msgid "Quiz royal" msgstr "" #: ../lib/quiz_math.py:111 msgid "" "Remember, the order of operations is multiplication or division and followed " "by addition or subtraction." msgstr "" #: ../lib/dltr.py:434 ../SPMainCore.py:1023 msgid "Results" msgstr "" #: ../SPMainCore.py:1027 msgid "Save image" msgstr "" #: ../lib/quiz_sayings.py:96 msgid "Sayings Quiz" msgstr "" #: ../lib/dltr.py:378 msgid "Score:" msgstr "" #: ../SPHelpText.py:126 #, fuzzy msgid "Select Language" msgstr "Språk" #: ../SPMenu.py:334 msgid "" "Select an activity and click on the button, the activity will be started." msgstr "Välj en aktivitet och klicka på knappen, aktiviteten startas." #: ../SPMainCore.py:953 msgid "Set volume level" msgstr "" #: ../SPHelpText.py:127 ../SPHelpText.py:128 msgid "Settings" msgstr "" #: ../lib/ichanger.py:296 msgid "" "Several images from the past will appear on the screen.\n" "Look carefully at them and remember what you see." msgstr "" #: ../lib/simon_sp.py:155 msgid "Simon_sp" msgstr "" #: ../lib/pong.py:385 msgid "Single play - Hit the ball against the wall." msgstr "Enkelt spel - Slå bollen mot väggen." #: ../lib/soundmemory.py:188 msgid "Soundmemory" msgstr "Ljudmemory" #: ../lib/spinbottle.py:196 msgid "Spin the bottle" msgstr "" #: ../lib/dltr.py:261 ../lib/ichanger.py:321 ../lib/memory_sp.py:430 msgid "Start" msgstr "" #: ../lib/spinbottle.py:129 ../lib/synonyms.py:365 #, fuzzy msgid "Starting a new exercise" msgstr "Första nivå %s" #: ../SPMainCore.py:650 #, python-format msgid "Starting level %s" msgstr "Första nivå %s" #: ../SPMainCore.py:834 msgid "Stopping timers, please wait..." msgstr "Tidtagning avslutas, vänta..." #: ../lib/spinbottle.py:120 ../lib/synonyms.py:118 msgid "Suggestions:" msgstr "" #: ../lib/synonyms.py:140 msgid "Synonyms" msgstr "" #: ../lib/quiz_text.py:103 #, fuzzy msgid "Text Quiz" msgstr "Matematik" #: ../lib/simon_sp.py:169 msgid "The blocks will light up randomly along with sound clues." msgstr "" #: ../lib/packid.py:499 msgid "The aim of the game:" msgstr "Spelets målsättning:" #: ../lib/billiard.py:295 ../lib/dltr.py:214 ../lib/electro_sp.py:193 #: ../lib/fallingletters.py:193 ../lib/findit_sp.py:220 ../lib/findsound.py:126 #: ../lib/fishtank.py:250 ../lib/fourrow.py:127 ../lib/ichanger.py:295 #: ../lib/memory_sp.py:206 ../lib/numbers_sp.py:230 ../lib/photoalbum.py:186 #: ../lib/pong.py:381 ../lib/puzzle.py:244 ../lib/quiz_general.py:158 #: ../lib/quiz_history.py:250 ../lib/quiz_math.py:105 ../lib/quiz_melody.py:110 #: ../lib/quiz_picture.py:102 ../lib/quiz.py:142 ../lib/quiz_royal.py:116 #: ../lib/quiz_sayings.py:104 ../lib/quiz_text.py:111 ../lib/simon_sp.py:163 #: ../lib/soundmemory.py:196 ../lib/spinbottle.py:204 ../lib/synonyms.py:150 #: ../lib/wipe.py:110 msgid "The aim of this activity:" msgstr "Målsättning för denna aktivitet:" #: ../lib/findit_sp.py:225 msgid "The arrows to the left take you to the previous image." msgstr "" #: ../lib/pong.py:383 msgid "The classic pong game where you must hit a ball with your bat." msgstr "Det klassiska pong-spelet där du slår till en boll med ditt slagträ." #: ../lib/electro_sp.py:244 ../lib/memory_sp.py:287 ../lib/puzzle.py:306 msgid "The difficulty of the set increases from left to right." msgstr "" #: ../lib/billiard.py:300 ../lib/billiard.py:306 msgid "" "The fewer hits you need to get the ball in the hole, the more points you get." msgstr "" "Ju färre slag du behöver för att få bollen i hålet, desto mer poäng får du." #: ../lib/electro_sp.py:194 msgid "The game is to match pairs of pictures" msgstr "" #: ../lib/packid.py:711 msgid "" "The last level is only available when you finish the first three levels " "without errors." msgstr "" "Den sista nivån är bara tillgänglig då du klarar av de första tre nivåerna " "utan fel." #: ../lib/billiard.py:299 msgid "The longer you hold the left button the harder it will hit the ball." msgstr "" "Ju längre du håller ner vänstra knappen, desto hårdare slås bollen till." #: ../lib/packid.py:723 msgid "The word to find is: " msgstr "Ordet du skall hitta är:" #: ../lib/numbers_sp.py:234 msgid "Then push the 'BEGIN' button. The numbers will disappear." msgstr "" #: ../lib/packid.py:501 msgid "There are thee levels with three words each." msgstr "Det finns tre nivåer med tre ord i varje." #: ../lib/pong.py:384 msgid "There are three modes to choose from:" msgstr "Det finns tre spelsätt att välja på:" #: ../SPMainCore.py:1525 #, python-format msgid "" "There was an error in %s. Please check the logs and inform the developers" msgstr "" "Det förekom ett fel i %s. Vänligen kontrollera loggfier och meddela " "programutvecklarna" #: ../SPHelpText.py:46 #, python-format msgid "" "There was an error in the database this can be caused by many things but " "most of the time it's caused by the fact that your version of the database " "doesn't match the version of the program. I will backup your original " "database and then replace it with a new one. The original database is now " "called sp.db_back and it's placed in %s" msgstr "" "Det fanns ett fel i databasen, detta kan vara på grund av flera saker, men " "oftast är det orsakat av att din version av databasen inte matchar " "programversionen. Jag kommer att säkerhetskopiera den ursprungliga databasen " "och sedan ersätta den med en ny databas. Den ursprungliga databasen heter nu " "sp.db_back och finns i %s" #: ../lib/billiard.py:319 ../lib/electro_sp.py:215 ../lib/fallingletters.py:214 #: ../lib/findit_sp.py:244 ../lib/findsound.py:158 ../lib/fishtank.py:270 #: ../lib/fourrow.py:234 ../lib/ichanger.py:316 ../lib/memory_sp.py:228 #: ../lib/numbers_sp.py:257 ../lib/packid.py:523 ../lib/photoalbum.py:206 #: ../lib/pong.py:406 ../lib/puzzle.py:266 ../lib/quiz_general.py:181 #: ../lib/quiz_history.py:273 ../lib/quiz_picture.py:124 ../lib/quiz.py:169 #: ../lib/quiz_royal.py:138 ../lib/simon_sp.py:189 ../lib/soundmemory.py:217 #: ../lib/spinbottle.py:229 ../lib/synonyms.py:174 ../lib/wipe.py:135 #, python-format msgid "This activity has %s levels" msgstr "Denna aktivitet har %s nivåre" #: ../lib/dltr.py:215 msgid "" "This activity is known as the daily training which is a collection of " "activities." msgstr "" #: ../SPMenu.py:333 msgid "This is the menu used to select an activity." msgstr "Denna meny används för att välja en aktivitet." #: ../lib/fourrow.py:133 msgid "Tip: Try creating multiple winning scenario's." msgstr "" #: ../SPMainCore.py:919 #, fuzzy, python-format msgid "Tip:%s" msgstr "Tips:" #: ../lib/quizengine.py:800 #, python-format msgid "" "To little questions found in %s for locale '%s', found %s questions should " "be at least 10" msgstr "" #: ../lib/fourrow.py:132 msgid "" "To win the game you'll need four red pills lined up after each other " "horizontally, vertically or diagonal." msgstr "" #: ../lib/ichanger.py:298 msgid "" "Touch the 'START' button on the right.\n" "The images will dissappear and when they return, one will have changed.\n" "Touch the picture which has changed." msgstr "" #: ../lib/packid.py:500 msgid "Try to 'eat' all the letters in the appropriated order." msgstr "Försök att 'äta' alla bokstäver i angiven ordning." #: ../lib/numbers_sp.py:235 msgid "" "Try to find the numbers, in the correct order and from low to high, by " "touching them on the screen." msgstr "" #: ../lib/packid.py:504 msgid "Try to find the way out while eating the fruits for extra points and" msgstr "Försök att hitta vägen ut medans du äter frukter för extrapoäng och" #: ../lib/fourrow.py:128 msgid "Try to get four in a row in any possible direction." msgstr "" #: ../lib/fishtank.py:251 msgid "Try to remove the fish by clicking on them with the mouse." msgstr "Försök att ta bort fiskarna genom att klicka på dem med musen." #: ../lib/simon_sp.py:164 msgid "Try to repeat the sequence of sounds played." msgstr "" #: ../lib/fallingletters.py:194 msgid "Type the falling letters on the keyboard before they hit the ground." msgstr "" "Tryck på de fallande bosktäverna på tangentbordet före de träffar marken." #: ../SPHelpText.py:123 msgid "Update BrainTrainerPlus" msgstr "" #: ../SPMenu.py:335 msgid "Use the 'sub menu' buttons for the different activity menus" msgstr "" #: ../SPMenu.py:350 msgid "Use the menu below to choose between the different game categories" msgstr "" #: ../lib/billiard.py:298 msgid "Use the right mousebutton to aim and the left button to hit the ball." msgstr "" "Använd högra musknappen för att sikta och vänstra knappen för att slå bollen." #: ../lib/pong.py:579 msgid "Use these keys on your keyboard to control the bat." msgstr "Använd tangentbordet för att kontrollera slagträet." #: ../SPMainCore.py:465 #, python-format msgid "User: %s" msgstr "Användare: %s" #: ../SPHelpText.py:117 #, fuzzy msgid "Usermanagement" msgstr "Användarnamn:" #: ../SPgdm.py:104 msgid "Username:" msgstr "Användarnamn:" #: ../lib/simon_sp.py:170 msgid "" "When the flashing stops you will be prompted to repeat the sequence by " "touching the coloured blocks." msgstr "" #: ../lib/packid.py:502 msgid "When you have finished all the levels, without making to much mistakes" msgstr "Då du har gått igenom alla nivåer, utan alltför många misstag" #: ../lib/findit_sp.py:223 msgid "" "When you spot a difference, touch it with your finger.\n" "You can click the question mark in the middle of the screen if you need a " "hint." msgstr "" #: ../lib/soundmemory.py:199 msgid "" "When you touch the picture you will hear a sound.\n" "Match the image with others that make the same sound,to get points." msgstr "" #: ../lib/wipe.py:102 msgid "Wipe" msgstr "" #: ../lib/wipe.py:112 msgid "Wipe with your finger on the screen to uncover the picture." msgstr "" #: ../SPMainCore.py:729 ../SPMainCore.py:733 ../SPMainCore.py:734 #: ../SPMainCore.py:872 msgid "Yes" msgstr "Ja" #: ../lib/fourrow.py:130 msgid "" "You can vertically drop a red pill in a desired column by pressing that " "exact column." msgstr "" #: ../lib/dltr.py:374 msgid "You have finished the daily training module." msgstr "" #: ../lib/billiard.py:296 msgid "You have to make the blue ball enter the hole (in level 1)" msgstr "Du måste få blå bollen in i hålet (på nivå 1)" #: ../SPMainCore.py:728 msgid "You play very good, do you want to try the next level ?" msgstr "" #: ../lib/electro_sp.py:196 msgid "" "You select the pictures by touching them.\n" "As you progress through the star levels more pairs appear to match." msgstr "" #: ../lib/numbers_sp.py:231 msgid "You will see various numbers scattered around the screen." msgstr "" #: ../lib/billiard.py:617 msgid "You won!!" msgstr "Du vann!!" #: ../lib/dltr.py:376 msgid "Your average results per group are:" msgstr "" #: ../SPMainCore.py:1033 #, python-format msgid "" "Your image is saved at:\n" "%s" msgstr "" "Din bild är sparad i:\n" "%s" #: ../lib/dltr.py:375 msgid "Your results are:" msgstr "" #: ../lib/billiard.py:297 msgid "and the red ones in levels 2 and 3." msgstr "och de röda i nivårena 2 och 3." #: ../lib/spinbottle.py:118 msgid "beginning with the letter: " msgstr "" #: ../lib/packid.py:505 msgid "funny sounds :-)" msgstr "kul ljud :-)" #: ../lib/billiard.py:604 ../lib/billiard.py:618 msgid "points" msgstr "poäng" #: ../lib/quiz.py:157 #, python-format msgid "question id: %s" msgstr "" #: ../lib/quiz_general.py:134 #, python-format msgid "" "xml file %s is missing, this shouldn't happen, contact the %s developers" msgstr "" #~ msgid "All the data was stored succesfully." #~ msgstr "Alla data sparades." #~ msgid "Aquarium mouse training, difficulty: *" #~ msgstr "Akvarium musträning, svårighetsgrad: *" #~ msgid "" #~ "At the start of the game, a photograph of an animal is shown, above the " #~ "picture the name of the animal is written." #~ msgstr "" #~ "Vid början av spelet visas ett foto av ett djur, namnet är skrivet " #~ "ovanför bilden." #~ msgid "Billiard, difficulty: **/***" #~ msgstr "Biljard, svårighetsgrad: **/***" #~ msgid "Childsplay_sp information" #~ msgstr "Childsplay_sp information" #~ msgid "Childsplay_sp question" #~ msgstr "Childsplay_sp fråga" #~ msgid "Childsplay_sp results diagram" #~ msgstr "Childsplay_sp resultatdiagram" #~ msgid "Click image to enlarge" #~ msgstr "Klicka på bilden för att förstora" #, fuzzy #~ msgid "Click the buttons in the right order" #~ msgstr "Hitta alla bokstäver i rätt ordning." #~ msgid "" #~ "Each part of the screen can also be clicked on to make the animal scream, " #~ "his name or initial spoken." #~ msgstr "" #~ "Varje del av skärmen kan klickas för atthöra djurets ljud, namn eller " #~ "initial." #~ msgid "Exercises" #~ msgstr "Övningar" #~ msgid "" #~ "Failed to get the dbase data, try to run childsplay_sp first to setup the " #~ "dbase" #~ msgstr "" #~ "Misslyckades att hämta dbase data, försök att köra childsplay_sp först " #~ "för att fixa dbasen" #~ msgid "Find the characters" #~ msgstr "Hitta tecknen" #~ msgid "Flashcards" #~ msgstr "Bildkort" #~ msgid "Flashcards, difficulty: *" #~ msgstr "Bildkort, svårighetsgrad: *" #~ msgid "" #~ "Give your login name in the box and hit the login button. Alternatively " #~ "you can just hit the login button and run Childsplay_sp in anonymous mode." #~ msgstr "" #~ "Ange ditt användarnamn i lådan och tryck inloggningsknappen. Alternativt " #~ "kan du bara trycka på inloggningsknappen och köra Childsplay_sp i anonymt " #~ "läge." #~ msgid "Goal of the activity" #~ msgstr "AKtivitetens målsättning" #~ msgid "" #~ "If the menu consist of more layers, sub menus, you can always get back to " #~ "the main menu by using the 'exit' button." #~ msgstr "" #~ "Om menyn har flera nivåre, undermenyer, kan du alltid gå tillbaka till " #~ "huvudmenyn genom att använda 'exit' knappen." #~ msgid "" #~ "If you start the GUI for the first time there's no username and password " #~ "set so you should just hit the 'Login' button.\n" #~ " You will get a warning message telling you to set as soon as possible a " #~ "username and password.\n" #~ "You can set a username and password in the GUI.\n" #~ " Go to 'Settings' -> 'Set password'." #~ msgstr "" #~ "Om du startar användargränssnittet första gången, finns det inget " #~ "användarnamn och lösenord sparade, så du skall bara trygka på " #~ "'Inloggning'.\n" #~ " Du får ett varningsmeddelande som uppmanar dig att ange användarnamn och " #~ "lösenord så snart som möjligt.\n" #~ "Du kan ange användarnamn och lösenord i användargränssnittet.\n" #~ " Gå till 'Inställningar' -> 'Ange lösenord'." #~ msgid "" #~ "In the last level the fish needs to be clicked two times while they try " #~ "to escape." #~ msgstr "" #~ "På sista nivån måste fiskarna klickas två gånger medans de försöker fly." #~ msgid "" #~ "In this file you can set a number of options to change the game play." #~ msgstr "I denna fil kan du ange ett antal alternativ för att ändra spelet." #~ msgid "Info" #~ msgstr "Info" #~ msgid "Keyboard training, difficulty: *" #~ msgstr "Tangentbordsträning, svårighetsgrad: *" #~ msgid "Listen to the sound and click on the character to which it belongs." #~ msgstr "Lyssna på ljudet och tryck på det tecken dit den hör." #~ msgid "Lower case characters memory, difficulty: */**" #~ msgstr "Små bokstäver memory, svårighetsgrad: */**" #~ msgid "LowercaseMemory" #~ msgstr "SmåbokstavMemory" #~ msgid "Memory, difficulty: */**" #~ msgstr "Memory, svårighetsgrad: */**" #~ msgid "Memory/Alphabet" #~ msgstr "Memory/Alfabet" #~ msgid "Menu" #~ msgstr "Meny" #~ msgid "No data available for this level" #~ msgstr "Inga data finns för denna nivå" #~ msgid "Numbers memory, difficulty: */**" #~ msgstr "Siffer-memory, svårighetsgrad: */**" #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "On the left the initial of the animal name is shown." #~ msgstr "Till vänster visas djurnamnets initial." #~ msgid "Packid, difficulty: **/***" #~ msgstr "Packid, svårighetsgrad: **/***" #~ msgid "Pause" #~ msgstr "Pausa" #~ msgid "Pong classic tennis game, difficulty: *" #~ msgstr "Pong klassiskt tennisspel, svårighetsgrad: *" #~ msgid "Put all the pieces in the correct order." #~ msgstr "Sätt alla bitar i rätt ordning." #~ msgid "Puzzle, difficulty: */**" #~ msgstr "Pussel, svårighetesgrad: */**" #~ msgid "Save" #~ msgstr "Spara" #~ msgid "Scores reached in level %s" #~ msgstr "Resultat som uppnåtts på nivå %s" #~ msgid "Screenshot\n" #~ msgstr "Skärmdump\n" #~ msgid "Short description\n" #~ msgstr "Kort förklaring\n" #~ msgid "Sound association, difficulty: *" #~ msgstr "Ljudassociation, svårighetsgrad: *" #~ msgid "Sound association, difficulty: */**" #~ msgstr "Ljudassociation, svårighetsgrad: */**" #~ msgid "Sound memory, difficulty: */**" #~ msgstr "Ljud-memory, svårighetsgrad: */**" #~ msgid "The aim of this activity" #~ msgstr "Målsättningen för denna aktivitet" #~ msgid "" #~ "The faster you find all the characters the better your score will be." #~ msgstr "" #~ "Desto snabbare du hittar alla tecken, desto bättre blir ditt resultat." #~ msgid "" #~ "The game has a configuration file called 'pongrc', located in the ." #~ "childsplay directory of your homedirectory." #~ msgstr "" #~ "Spelet har en inställnignsfil som heter 'pongrc' som finns i .childsplay " #~ "katalogen i din hemkatalog." #~ msgid "The table 'activity_options' doesn't exist in the dbase" #~ msgstr "Tabellen 'activity_options' finns inte i dbasen" #~ msgid "" #~ "Then the animal name is spoken ('the dog'), and the animal makes his cry " #~ "('woof' 'cui-cui' etc.)." #~ msgstr "Sedan sägs djurnamnet ('hund'), och djurets läte hörs ('voff' osv)." #~ msgid "" #~ "There was a problem while replacing the rows in the database.\n" #~ "The exception was:\n" #~ "%s" #~ msgstr "" #~ "Det förekom problem med att ersätta raderna i databasen.\n" #~ "Felet var:\n" #~ "%s" #~ msgid "This activity belongs to the category: %s" #~ msgstr "Denna aktivitet hör till kategorin: %s" #~ msgid "" #~ "This database table holds the values used when displaying the results " #~ "graph in an activity.\n" #~ "The column 'MU-value' holds an integer between 0 and 10 indicating the " #~ "average score.(the dark blue line).\n" #~ "The column 'SIGMA-value' holds an integer between 0 an 100 indicating the " #~ "standard deviation in percentage, probably always 50. (the light blue " #~ "box)\n" #~ "\n" #~ "Click on the row you want to alter and then click on the field you wish " #~ "to edit.\n" #~ "You cannot edit the 'Activity name' field.\n" #~ "Use the 'Save' button to store the changes in the database." #~ msgstr "" #~ "Denna databas innehåller värdena som används då resultaten visas i " #~ "grafisk form i en aktivitet.\n" #~ "Kolumnen 'MU-value' har ett tal mellan 0 och 10 som visar medelresultat." #~ "(Mörkblå linje).\n" #~ "Kolumnen 'SIGMA-value' har ett tal mellan 0 och 100 som visar " #~ "standardavvkielsen i procent, troligtvis alltid 50. (ljusblå låda)\n" #~ "\n" #~ "Klicka på raden du villändra och kliva sedan på fältet du vill redigera.\n" #~ "Du kan inte redigera fältet 'Activity name' Aktivitetsnamn.\n" #~ "Använd 'Spara' knappen för att spara ändringarna i databasen." #~ msgid "This is a game to teach the alphabet to very little childrens." #~ msgstr "Detta är ett spel som lär alfabetet åt småbarn." #~ msgid "Tips" #~ msgstr "Tips" #~ msgid "Type of activity" #~ msgstr "Aktivitetstyp" #~ msgid "Upper case characters memory, difficulty: */**" #~ msgstr "Stora bokstäver memory, svårighetsgrad: */**" #~ msgid "UppercaseMemory" #~ msgstr "StorbokstavMemory" #~ msgid "" #~ "When a letter is hit on the keyboard, a corresponding animal is shown." #~ msgstr "Då en boksta på tangentbordet trycks ned, visas ett matchande djur." #~ msgid "" #~ "When you can't find the correct character after a certain period of time " #~ "a box will be drawn around it." #~ msgstr "" #~ "Om du inte kan hitta rätt tecken efter en viss tid, kommer en ruta att " #~ "ritas runt den." #~ msgid "" #~ "You can add your own images by placing them in the following directory: " #~ msgstr "" #~ "Du kan lägga till dina egna bilder genom att placera dem i följande mapp:" #~ msgid "You can hit the 'graph' button to see your results per level." #~ msgstr "Du kan trycka på 'graf' knappen för att se dina resultat per nivå." #~ msgid "" #~ "Your language, %s, is not supported.\n" #~ " I will now switch to English" #~ msgstr "" #~ "Ditt språk, %s, stöds inte.\n" #~ " Jag byter nu till engelska" #~ msgid "" #~ "Your language, %s, is supported but you must install\n" #~ " the 'alphabet_sounds_%s' package.\n" #~ " Look for it in your GNU/Linux distro or at www.schoolsplay.org.\n" #~ " I will now switch to English" #~ msgstr "" #~ "Ditt språk, %s, stöds, men du måste installera\n" #~ "rätt 'alphabet_sounds_%s' paket.\n" #~ " Sök efter det i din GNU/Linux distro eller www.schoolsplay.org.\n" #~ "Jag byter nu till engelska" #~ msgid "badger" #~ msgstr "grävling" #~ msgid "bear" #~ msgstr "björn" #~ msgid "beaver" #~ msgstr "bäver" #~ msgid "bee" #~ msgstr "bi" #~ msgid "bison" #~ msgstr "bison" #~ msgid "blackbird" #~ msgstr "koltrast" #~ msgid "bull" #~ msgstr "tjur" #~ msgid "camel" #~ msgstr "kamel" #~ msgid "chimp" #~ msgstr "chimpans" #~ msgid "cow" #~ msgstr "kråka" #~ msgid "crow" #~ msgstr "kråka" #~ msgid "cuckoo" #~ msgstr "gök" #~ msgid "deer" #~ msgstr "hjort" #~ msgid "doe" #~ msgstr "rådjur" #~ msgid "dog" #~ msgstr "hund" #~ msgid "dolphin" #~ msgstr "delfin" #~ msgid "donkey" #~ msgstr "åsna" #~ msgid "dromedary" #~ msgstr "dromedar" #~ msgid "duck" #~ msgstr "anka" #~ msgid "elephant" #~ msgstr "elefant" #~ msgid "ferret" #~ msgstr "frett (tamiller)" #~ msgid "filename: %s" #~ msgstr "filnamn: %s" #~ msgid "fly" #~ msgstr "fluga" #~ msgid "fox" #~ msgstr "räv" #~ msgid "frog" #~ msgstr "groda" #~ msgid "gander" #~ msgstr "hangås" #~ msgid "giraffe" #~ msgstr "giraff" #~ msgid "goat" #~ msgstr "get" #~ msgid "gorilla" #~ msgstr "gorilla" #~ msgid "grasshopper" #~ msgstr "gräshoppa" #~ msgid "hen" #~ msgstr "höna" #~ msgid "hippopotamus" #~ msgstr "flodhäst" #~ msgid "hornet" #~ msgstr "geting" #~ msgid "horse" #~ msgstr "häst" #~ msgid "iguana" #~ msgstr "iguana" #~ msgid "kangaroo" #~ msgstr "känguru" #~ msgid "koala" #~ msgstr "koala" #~ msgid "lark" #~ msgstr "lärka" #~ msgid "lion" #~ msgstr "lejon" #~ msgid "marmot" #~ msgstr "murmeldjur" #~ msgid "mountaingoat" #~ msgstr "bergsget" #~ msgid "mouse" #~ msgstr "mus" #~ msgid "nandou" #~ msgstr "struts" #~ msgid "orca" #~ msgstr "val" #~ msgid "otter" #~ msgstr "utter" #~ msgid "owl" #~ msgstr "uggla" #~ msgid "peacock" #~ msgstr "påfågel" #~ msgid "penguin" #~ msgstr "pingvin" #~ msgid "pig" #~ msgstr "gris" #~ msgid "pigeon" #~ msgstr "duva" #~ msgid "quetzal" #~ msgstr "quetzal" #~ msgid "rabbit" #~ msgstr "hare" #~ msgid "ram" #~ msgstr "bagge" #~ msgid "rat" #~ msgstr "råtta" #~ msgid "rooster" #~ msgstr "tupp" #~ msgid "seagull" #~ msgstr "mås" #~ msgid "tiger" #~ msgstr "tiger" #~ msgid "tucan" #~ msgstr "tukan" #~ msgid "turkey" #~ msgstr "kalkon" #~ msgid "vulture" #~ msgstr "gam" #~ msgid "wallaby" #~ msgstr "vallaby känguru" #~ msgid "wapiti" #~ msgstr "älg" #~ msgid "whale" #~ msgstr "val" #~ msgid "wildboar" #~ msgstr "vildsvin" #~ msgid "wombat" #~ msgstr "vombat" #~ msgid "xanthia" #~ msgstr "nattfjäril" #~ msgid "yak" #~ msgstr "jak" #~ msgid "zebra" #~ msgstr "zebra" #~ msgid "zebu" #~ msgstr "zebu" childsplay-3.3/po/childsplay_de_DE.po0000644000175000017500000011453413271013626016364 0ustar stasstas# translation of childsplay_sp_de_DE.po to # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # stas Zytkiewicz , 2008. msgid "" msgstr "" "Project-Id-Version: childsplay_sp_de_DE\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-07-09 11:38+0200\n" "PO-Revision-Date: 2009-01-26 16:56+0100\n" "Last-Translator: Stas Zytkiewicz \n" "Language-Team: \n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" #: ../SPHelpText.py:76 msgid "" "\n" "\n" "Touch the 'Play' button to continue the game." msgstr "" #: ../SPHelpText.py:71 msgid "" "\n" "\n" "Touch the changed picture." msgstr "" #: ../lib/packid.py:503 msgid "(max two per word), you can play the last level which is a maze." msgstr "(max zwei pro Wort), kommt als letzter Level ein Irrgarten." #: ../SPMenu.py:348 msgid "A collection of braintrain games for seniors." msgstr "" #: ../lib/memory_sp.py:216 #, fuzzy msgid "Accuracy is more important than speed." msgstr "Korrektheit ist wichtiger als Geschwindigkeit" #: ../SPMainCore.py:478 #, fuzzy msgid "Activity :" msgstr "Aktivität: %s" #: ../SPMainCore.py:590 #, python-format msgid "Activity : %s" msgstr "Aktivität: %s" #: ../lib/dltr.py:377 #, fuzzy msgid "Activity:" msgstr "Aktivität: %s" #: ../lib/fourrow.py:131 msgid "All pills, both red and yellow, stack on each other." msgstr "" #: ../SPMenu.py:349 msgid "" "All the games have there own help page, just start a game and hit the stars " "on top of the screen to select another difficulty." msgstr "" #: ../SPHelpText.py:142 msgid "Alphabet" msgstr "Alphabet" #: ../lib/fallingletters.py:207 msgid "Alphabet/Keyboardtraining" msgstr "Alphabet/Tastaturtraining" #: ../lib/spinbottle.py:119 ../lib/synonyms.py:117 msgid "Already found:" msgstr "" #: ../SPMainCore.py:277 msgid "An error occurred and BraintrainerPlus was restarted" msgstr "" #: ../lib/quiz_math.py:106 msgid "Answer the math questions." msgstr "" #: ../lib/quiz_general.py:159 ../lib/quiz_history.py:251 #: ../lib/quiz_melody.py:111 ../lib/quiz_picture.py:103 ../lib/quiz.py:143 #: ../lib/quiz_royal.py:117 ../lib/quiz_sayings.py:105 ../lib/quiz_text.py:112 msgid "Answer the quiz questions." msgstr "" #: ../SPMainCore.py:871 msgid "" "Are sure you want to quit the dailytraining ? All the results will be lost." msgstr "" #: ../lib/puzzle.py:247 msgid "At the bottom you'll see a image of the complete puzzle." msgstr "" #: ../lib/quiz.py:145 msgid "At the top of the screen, you will see a general knowledge question." msgstr "" #: ../lib/quiz_royal.py:119 msgid "" "At the top of the screen, you will see a question about a member of Royalty" msgstr "" #: ../lib/quiz_picture.py:105 msgid "At the top of the screen, you will see a question about a picture." msgstr "" #: ../lib/quiz_general.py:161 msgid "" "At the top of the screen, you will see a question about general knowledge." msgstr "" #: ../lib/quiz_math.py:108 msgid "At the top of the screen, you will see a question about math problem." msgstr "" #: ../lib/quiz_sayings.py:107 msgid "At the top of the screen, you will see a question about sayings." msgstr "" #: ../lib/quiz_melody.py:113 msgid "" "At the top of the screen, you will see a question about the song playing." msgstr "" #: ../lib/quiz_history.py:253 msgid "" "At the top of the screen, you will see a question from general knowledge " "question from the selected period." msgstr "" #: ../lib/quiz_text.py:114 msgid "At the top of the screen, you will see a question." msgstr "" #: ../lib/billiard.py:345 msgid "Balls" msgstr "Bälle" #: ../lib/numbers_sp.py:190 msgid "Begin" msgstr "" #: ../lib/quiz_general.py:162 ../lib/quiz_history.py:254 #: ../lib/quiz_math.py:109 ../lib/quiz_melody.py:114 ../lib/quiz_picture.py:106 #: ../lib/quiz.py:146 ../lib/quiz_royal.py:120 ../lib/quiz_sayings.py:108 #: ../lib/quiz_text.py:115 msgid "" "Below it are a choice of possible answers.\n" "Touch the correct answer." msgstr "" #: ../lib/billiard.py:287 msgid "Billiard" msgstr "Billiard" #: ../lib/billiard.py:273 msgid "Billiard Game" msgstr "Billiard Spiel" #: ../SPMainCore.py:814 msgid "Cancel" msgstr "" #: ../SPHelpText.py:121 ../SPHelpText.py:122 msgid "Change password" msgstr "" #: ../lib/ichanger.py:323 ../lib/numbers_sp.py:194 msgid "Cheat" msgstr "" #: ../SPMainCore.py:227 #, fuzzy, python-format msgid "Childsplay_sp - educational activities, using theme:%s" msgstr "Childsplay_sp - Lernaktivitäten" #: ../SPgdm.py:73 msgid "Childsplay_sp login" msgstr "Childsplay_sp Login" #: ../lib/pong.py:425 msgid "Choose the game to play:" msgstr "Wähle ein Spiel:" #: ../lib/memory_sp.py:207 msgid "Classic memory game where you have to find pairs of cards." msgstr "Klassisches Memoryspiel bei dem Paare gefunden werden müssen." #: ../lib/soundmemory.py:197 msgid "Classic memory game where you have to find pairs of sounds." msgstr "" "Klassisches Memoryspiel bei dem gleichklingende Paare gefunden werden müssen." #: ../SPMainCore.py:953 msgid "Close" msgstr "" #: ../lib/fourrow.py:536 msgid "Congratulations, try again ?" msgstr "" #: ../SPHelpText.py:129 msgid "Content import" msgstr "" #: ../lib/electro_sp.py:203 ../lib/fallingletters.py:201 #: ../lib/soundmemory.py:205 msgid "Correctness is more important than speed" msgstr "Korrektheit ist wichtiger als Geschwindigkeit" #: ../lib/numbers_sp.py:241 #, fuzzy msgid "Correctness is more important than speed." msgstr "Korrektheit ist wichtiger als Geschwindigkeit" #: ../SPMainCore.py:1244 ../SPMainCore.py:1417 #, python-format msgid "Current activity : %s" msgstr "Aktuelle Aktivität: %s" #: ../SPHelpText.py:119 msgid "Daily training sequence" msgstr "" #: ../SPHelpText.py:53 msgid "Default group 1" msgstr "" #: ../SPHelpText.py:54 msgid "Default group 2" msgstr "" #: ../lib/dltr.py:434 msgid "Details" msgstr "" #: ../SPMainCore.py:813 msgid "Do you really want to quit ?" msgstr "Wollen Sie wirklich aufhören ?" #: ../lib/electro_sp.py:185 msgid "Electro_sp" msgstr "" #: ../SPMainCore.py:575 ../SPMainCore.py:583 msgid "Error !" msgstr "" #: ../SPMainCore.py:582 #, python-format msgid "" "Error constructing activity\n" "%s" msgstr "" #: ../SPMainCore.py:574 #, python-format msgid "" "Error importing activity\n" "%s" msgstr "" #: ../lib/fallingletters.py:185 msgid "Fallingletters" msgstr "Fallende Buchstaben" #: ../lib/packid.py:722 msgid "Find all the letters in the right order." msgstr "Finde alle Buchstaben in richtiger Reihenfolge. " #: ../lib/findit_sp.py:212 msgid "Findit" msgstr "" #: ../lib/findsound.py:118 msgid "Findsound" msgstr "Geräusch-finden" #: ../lib/fishtank.py:242 msgid "Fishtank" msgstr "Aquarium" #: ../lib/fourrow.py:119 msgid "Fourrow" msgstr "" #: ../lib/pong.py:400 ../SPHelpText.py:143 msgid "Fun" msgstr "Lustiges" #: ../lib/packid.py:516 msgid "Fun/Alphabet" msgstr "Lustiges/Alphabet" #: ../lib/billiard.py:312 msgid "Fun/Miscellaneous" msgstr "Lustiges/Sonstiges" #: ../lib/fishtank.py:263 msgid "Fun/Mousetraining" msgstr "Lustiges/Maustraining" #: ../SPHelpText.py:124 msgid "Gamemanagement" msgstr "" #: ../SPMainCore.py:1021 #, fuzzy, python-format msgid "Generated by %s version %s for the %s activity" msgstr "Erstellt von Childsplay_sp Version %s für die Aktivität %s" #: ../SPHelpText.py:118 msgid "Groupmanagement" msgstr "" #: ../lib/spinbottle.py:208 ../lib/synonyms.py:154 msgid "Hit the 'Begin' button to start." msgstr "" #: ../SPMainCore.py:658 msgid "Hit the 'space' key or a mousebutton to skip the countdown" msgstr "" "Die Leertaste oder eine Maustaste drücken, um den Countdown zu überspringen." #: ../lib/pong.py:573 msgid "Hit the Escape key to stop." msgstr "" #: ../lib/ichanger.py:287 msgid "Ichanger" msgstr "" #: ../lib/dltr.py:250 msgid "If you ready to start the next activity, hit the 'start' button." msgstr "" #: ../lib/fallingletters.py:195 msgid "" "In the last two levels the uppercase and lowercase are mixed but you don't " "have to match the case only the letter" msgstr "" "In den letzten beiden Levels sind Groß- und Kleinbuchstaben vermischt aber " "man muß sich nicht um die Groß- oder Kleinschreibung kümmern." #: ../lib/pong.py:388 msgid "In the multiplayer modes, the one who has 11 points wins." msgstr "Im Mehrspieler Modus gewinnt der Spieler, der 11 Punkte hat." #: ../SPMainCore.py:1034 ../SPMainCore.py:1254 msgid "Information" msgstr "Information" #: ../SPMainCore.py:932 #, fuzzy, python-format msgid "Information about %s" msgstr "Information" #: ../SPHelpText.py:58 msgid "" "It seems that we cannot use the sound card right now and because this " "activity is all about sound, we just quit. This problem can also be caused " "by another application which uses the soundcard right now." msgstr "" "Es scheint keine Zugriffsmöglichkeit auf die Soundkarte zu geben und diese " "Anwendung wird abgebrochen, da man dazu die Klangausgabe bräuchte. Dieses " "Problem kann auch durch eine andere Anwendung verursacht werden, welche die " "Soundkarte blockiert." #: ../SPHelpText.py:139 msgid "Keyboardtraining" msgstr "Tastaturtraining" #: ../SPHelpText.py:141 msgid "Language" msgstr "Sprache" #: ../lib/findsound.py:127 msgid "Listen to the sound and click on the image to which it belongs." msgstr "Hören Sie auf den Buchstaben und klicken Sie darauf." #: ../SPgdm.py:122 msgid "Login" msgstr "Anmelden" #: ../lib/numbers_sp.py:233 msgid "Look carefully and try to remember their positions on the screen." msgstr "" #: ../lib/puzzle.py:253 msgid "Look closely at the complete puzzle picture at the bottom." msgstr "" #: ../lib/memory_sp.py:210 msgid "" "Look closely at the pictures, when you have them memorized touch 'START'.\n" "The pictures turn over, you must match the pair of cards." msgstr "" #: ../lib/synonyms.py:116 msgid "Make a word with the letter: " msgstr "" #: ../lib/quiz_math.py:122 ../SPHelpText.py:137 msgid "Math" msgstr "Mathe" #: ../lib/quiz_math.py:97 #, fuzzy msgid "Math Quiz" msgstr "Mathe" #: ../lib/quiz_melody.py:102 msgid "Melody Quiz" msgstr "" #: ../SPHelpText.py:65 msgid "" "Memorize the pictures.\n" "\n" "One of these pictures will be replaced by a new picture.\n" "\n" "Touch the 'Start' button to begin the game." msgstr "" #: ../lib/electro_sp.py:209 ../lib/memory_sp.py:198 ../lib/memory_sp.py:222 #: ../lib/quiz_melody.py:126 ../lib/quiz.py:163 ../lib/quiz_sayings.py:120 #: ../lib/quiz_text.py:127 ../lib/simon_sp.py:183 ../lib/soundmemory.py:211 #: ../SPHelpText.py:136 msgid "Memory" msgstr "Gedächtnis-Memory" #: ../lib/simon_sp.py:177 msgid "Mind the sound sequence as well as the colors sequence." msgstr "" #: ../lib/dltr.py:227 ../lib/findit_sp.py:237 ../lib/findsound.py:139 #: ../lib/ichanger.py:310 ../lib/numbers_sp.py:247 ../lib/photoalbum.py:200 #: ../lib/quiz_general.py:174 ../lib/quiz_history.py:266 #: ../lib/quiz_picture.py:118 ../lib/quiz_royal.py:132 ../lib/spinbottle.py:222 #: ../lib/synonyms.py:167 ../lib/wipe.py:124 ../SPHelpText.py:144 msgid "Miscellaneous" msgstr "Sonstiges" #: ../SPHelpText.py:140 msgid "Mousetraining" msgstr "Maustraining" #: ../SPMainCore.py:928 ../SPMainCore.py:935 msgid "Movie" msgstr "" #: ../lib/pong.py:387 msgid "Multi player - Play against another player." msgstr "Mehrspieler - Mehrere Spieler spielen gegeneinander." #: ../lib/pong.py:386 msgid "Multi player against the computer - Try to defeat the computer." msgstr "" "Mehrspieler gegen den Computer - Versuche gegen den Computer zu gewinnen." #: ../lib/wipe.py:83 msgid "New" msgstr "" #: ../SPMainCore.py:729 ../SPMainCore.py:872 ../SPMainCore.py:875 msgid "No" msgstr "Nein" #: ../lib/photoalbum.py:233 #, python-format msgid "" "No photo albums found !\n" "You should place your pictures inside directories called 'Album_1', " "'Album_2' etc\n" " Place these directories inside %s" msgstr "" #: ../lib/photoalbum.py:188 #, fuzzy msgid "Number of levels : 1" msgstr "Anzahl der Levels: 3" #: ../lib/spinbottle.py:210 ../lib/synonyms.py:156 #, fuzzy msgid "Number of levels : 6" msgstr "Anzahl der Levels: 3" #: ../lib/numbers_sp.py:222 #, fuzzy msgid "Numbers_sp" msgstr "Zahlenmemory" #: ../lib/dltr.py:434 ../lib/dltr.py:438 ../SPMainCore.py:575 #: ../SPMainCore.py:583 ../SPMainCore.py:814 ../SPMainCore.py:819 #: ../SPMainCore.py:820 ../SPMainCore.py:924 ../SPMainCore.py:1023 #: ../SPMainCore.py:1034 ../SPMainCore.py:1254 msgid "OK" msgstr "" #: ../lib/synonyms.py:152 #, python-format msgid "" "On the next screen you'll find a keyboard, try to make as much words as " "possible that begin with the letter '%s'." msgstr "" #: ../lib/spinbottle.py:206 #, python-format msgid "" "On the next screen you'll find a keyboard, try to name as much %s as " "possible with the same letter." msgstr "" #: ../lib/simon_sp.py:166 msgid "On the screen are four blocks of different colours." msgstr "" #: ../lib/findit_sp.py:221 msgid "" "On the screen you will see two almost identical pictures.\n" "However, there are differences between the images." msgstr "" #: ../lib/spinbottle.py:207 ../lib/synonyms.py:153 msgid "Only words from the dictionary are allowed." msgstr "" #: ../lib/packid.py:491 msgid "Packid" msgstr "Pacjunge" #: ../lib/photoalbum.py:178 msgid "Photoalbum" msgstr "" #: ../lib/quiz_picture.py:94 msgid "Picture Quiz" msgstr "" #: ../SPHelpText.py:120 msgid "Picture import" msgstr "" #: ../lib/fourrow.py:538 msgid "Pity, try again ?" msgstr "" #: ../lib/puzzle.py:245 msgid "Place the puzzle piece on the right where you think it belongs..." msgstr "" #: ../lib/quiz_history.py:219 msgid "Please enter your year of birth." msgstr "" #: ../lib/electro_sp.py:240 ../lib/memory_sp.py:283 msgid "Please, choose a set of cards." msgstr "" #: ../lib/wipe.py:156 msgid "Please, choose a set of images." msgstr "" #: ../lib/puzzle.py:302 msgid "Please, choose a set of puzzle images." msgstr "" #: ../lib/pong.py:373 msgid "Pong" msgstr "Pong" #: ../lib/simon_sp.py:167 msgid "Press the Start button with your finger." msgstr "" #: ../lib/fourrow.py:145 ../lib/puzzle.py:236 ../lib/puzzle.py:259 #: ../SPHelpText.py:138 msgid "Puzzle" msgstr "Puzzle" #: ../SPMainCore.py:729 ../SPMainCore.py:872 msgid "Question ?" msgstr "" #: ../SPMainCore.py:814 #, fuzzy msgid "Quit ?" msgstr "Beenden " #: ../lib/quiz.py:134 #, fuzzy msgid "Quiz" msgstr "Mathe" #: ../lib/quiz_history.py:242 msgid "Quiz history" msgstr "" #: ../lib/quiz_royal.py:108 msgid "Quiz royal" msgstr "" #: ../lib/quiz_math.py:111 msgid "" "Remember, the order of operations is multiplication or division and followed " "by addition or subtraction." msgstr "" #: ../lib/dltr.py:434 ../SPMainCore.py:1023 msgid "Results" msgstr "" #: ../SPMainCore.py:1027 msgid "Save image" msgstr "" #: ../lib/quiz_sayings.py:96 msgid "Sayings Quiz" msgstr "" #: ../lib/dltr.py:378 msgid "Score:" msgstr "" #: ../SPHelpText.py:126 #, fuzzy msgid "Select Language" msgstr "Sprache" #: ../SPMenu.py:334 msgid "" "Select an activity and click on the button, the activity will be started." msgstr "Wählen Sie eine Aktivität aus und klicken Sie darauf um zu starten." #: ../SPMainCore.py:953 msgid "Set volume level" msgstr "" #: ../SPHelpText.py:127 ../SPHelpText.py:128 msgid "Settings" msgstr "" #: ../lib/ichanger.py:296 msgid "" "Several images from the past will appear on the screen.\n" "Look carefully at them and remember what you see." msgstr "" #: ../lib/simon_sp.py:155 msgid "Simon_sp" msgstr "" #: ../lib/pong.py:385 msgid "Single play - Hit the ball against the wall." msgstr "Einzelspieler - Spiel den Ball gegen die Wand." #: ../lib/soundmemory.py:188 msgid "Soundmemory" msgstr "Akustisches Memory" #: ../lib/spinbottle.py:196 msgid "Spin the bottle" msgstr "" #: ../lib/dltr.py:261 ../lib/ichanger.py:321 ../lib/memory_sp.py:430 msgid "Start" msgstr "" #: ../lib/spinbottle.py:129 ../lib/synonyms.py:365 #, fuzzy msgid "Starting a new exercise" msgstr "Starte Level %s" #: ../SPMainCore.py:650 #, python-format msgid "Starting level %s" msgstr "Starte Level %s" #: ../SPMainCore.py:834 msgid "Stopping timers, please wait..." msgstr "Zähler werden beendet, bitte warten..." #: ../lib/spinbottle.py:120 ../lib/synonyms.py:118 msgid "Suggestions:" msgstr "" #: ../lib/synonyms.py:140 msgid "Synonyms" msgstr "" #: ../lib/quiz_text.py:103 #, fuzzy msgid "Text Quiz" msgstr "Mathe" #: ../lib/simon_sp.py:169 msgid "The blocks will light up randomly along with sound clues." msgstr "" #: ../lib/packid.py:499 msgid "The aim of the game:" msgstr "Das Ziel dieser Aktivität:" #: ../lib/billiard.py:295 ../lib/dltr.py:214 ../lib/electro_sp.py:193 #: ../lib/fallingletters.py:193 ../lib/findit_sp.py:220 ../lib/findsound.py:126 #: ../lib/fishtank.py:250 ../lib/fourrow.py:127 ../lib/ichanger.py:295 #: ../lib/memory_sp.py:206 ../lib/numbers_sp.py:230 ../lib/photoalbum.py:186 #: ../lib/pong.py:381 ../lib/puzzle.py:244 ../lib/quiz_general.py:158 #: ../lib/quiz_history.py:250 ../lib/quiz_math.py:105 ../lib/quiz_melody.py:110 #: ../lib/quiz_picture.py:102 ../lib/quiz.py:142 ../lib/quiz_royal.py:116 #: ../lib/quiz_sayings.py:104 ../lib/quiz_text.py:111 ../lib/simon_sp.py:163 #: ../lib/soundmemory.py:196 ../lib/spinbottle.py:204 ../lib/synonyms.py:150 #: ../lib/wipe.py:110 msgid "The aim of this activity:" msgstr "Das Ziel dieser Aktivität:" #: ../lib/findit_sp.py:225 msgid "The arrows to the left take you to the previous image." msgstr "" #: ../lib/pong.py:383 msgid "The classic pong game where you must hit a ball with your bat." msgstr "" "Das klassische Pong Spiel, wo man den Ball mit dem Schläger treffen muß." #: ../lib/electro_sp.py:244 ../lib/memory_sp.py:287 ../lib/puzzle.py:306 msgid "The difficulty of the set increases from left to right." msgstr "" #: ../lib/billiard.py:300 ../lib/billiard.py:306 msgid "" "The fewer hits you need to get the ball in the hole, the more points you get." msgstr "Je weniger Schüsse man benötigt, desto höher ist die Punktezahl." #: ../lib/electro_sp.py:194 msgid "The game is to match pairs of pictures" msgstr "" #: ../lib/packid.py:711 msgid "" "The last level is only available when you finish the first three levels " "without errors." msgstr "" "Der letzte Level wird erst freigeschalten, wenn die ersten beiden Levels " "fehlerfrei vollendet wurden." #: ../lib/billiard.py:299 msgid "The longer you hold the left button the harder it will hit the ball." msgstr "" "Je länger man die linke Maustaste hält, desto härter wird der Ball " "geschossen." #: ../lib/packid.py:723 msgid "The word to find is: " msgstr "Das fertige Wort ist:" #: ../lib/numbers_sp.py:234 msgid "Then push the 'BEGIN' button. The numbers will disappear." msgstr "" #: ../lib/packid.py:501 msgid "There are thee levels with three words each." msgstr "Es gibt drei Levels mit jeweils drei Worten." #: ../lib/pong.py:384 msgid "There are three modes to choose from:" msgstr "Man kann aus drei Levels auswählen:" #: ../SPMainCore.py:1525 #, python-format msgid "" "There was an error in %s. Please check the logs and inform the developers" msgstr "" "Es gab einen Fehler in %s. Bitte untersuchen Sie die Log-Datei und " "informieren Sie die Programmautoren." #: ../SPHelpText.py:46 #, python-format msgid "" "There was an error in the database this can be caused by many things but " "most of the time it's caused by the fact that your version of the database " "doesn't match the version of the program. I will backup your original " "database and then replace it with a new one. The original database is now " "called sp.db_back and it's placed in %s" msgstr "" "Es gab einen Fehler in der Datenbankdatei. Dafür gibt es mehrere mögliche " "Ursachen, zumeist ist es jedoch verursacht durch einen Versionskonflikt wenn " "die Datenbankdatei nicht zur Version des Programmes passt. Es wird eine " "Sicherungskopie der aktuellen Datenbankdatei erstellt und diese durch eine " "neue Datei ersetzt. Die originale Datei hat den Namen sp.db_back und " "befindet sich in %s" #: ../lib/billiard.py:319 ../lib/electro_sp.py:215 ../lib/fallingletters.py:214 #: ../lib/findit_sp.py:244 ../lib/findsound.py:158 ../lib/fishtank.py:270 #: ../lib/fourrow.py:234 ../lib/ichanger.py:316 ../lib/memory_sp.py:228 #: ../lib/numbers_sp.py:257 ../lib/packid.py:523 ../lib/photoalbum.py:206 #: ../lib/pong.py:406 ../lib/puzzle.py:266 ../lib/quiz_general.py:181 #: ../lib/quiz_history.py:273 ../lib/quiz_picture.py:124 ../lib/quiz.py:169 #: ../lib/quiz_royal.py:138 ../lib/simon_sp.py:189 ../lib/soundmemory.py:217 #: ../lib/spinbottle.py:229 ../lib/synonyms.py:174 ../lib/wipe.py:135 #, python-format msgid "This activity has %s levels" msgstr "Die Aktivität hat %s Levels" #: ../lib/dltr.py:215 msgid "" "This activity is known as the daily training which is a collection of " "activities." msgstr "" #: ../SPMenu.py:333 msgid "This is the menu used to select an activity." msgstr "Dies ist das Auswahlmenü für die Aktivität." #: ../lib/fourrow.py:133 msgid "Tip: Try creating multiple winning scenario's." msgstr "" #: ../SPMainCore.py:919 #, fuzzy, python-format msgid "Tip:%s" msgstr "Hinweis:" #: ../lib/quizengine.py:800 #, python-format msgid "" "To little questions found in %s for locale '%s', found %s questions should " "be at least 10" msgstr "" #: ../lib/fourrow.py:132 msgid "" "To win the game you'll need four red pills lined up after each other " "horizontally, vertically or diagonal." msgstr "" #: ../lib/ichanger.py:298 msgid "" "Touch the 'START' button on the right.\n" "The images will dissappear and when they return, one will have changed.\n" "Touch the picture which has changed." msgstr "" #: ../lib/packid.py:500 msgid "Try to 'eat' all the letters in the appropriated order." msgstr "Versuche alle Buchstaben in der richtigen Reihenfolge zu sammeln." #: ../lib/numbers_sp.py:235 msgid "" "Try to find the numbers, in the correct order and from low to high, by " "touching them on the screen." msgstr "" #: ../lib/packid.py:504 msgid "Try to find the way out while eating the fruits for extra points and" msgstr "" "Man muß den Weg nach draußen finden während man die Früchte für Extrapunkte " "sammelt und" #: ../lib/fourrow.py:128 msgid "Try to get four in a row in any possible direction." msgstr "" #: ../lib/fishtank.py:251 msgid "Try to remove the fish by clicking on them with the mouse." msgstr "Versuchen Sie die Fische zu treffen, damit diese verschwinden." #: ../lib/simon_sp.py:164 msgid "Try to repeat the sequence of sounds played." msgstr "" #: ../lib/fallingletters.py:194 msgid "Type the falling letters on the keyboard before they hit the ground." msgstr "" "Man muß die fallende Buchstaben auf der Tastatur drücken, bevor diese den " "Boden erreichen." #: ../SPHelpText.py:123 msgid "Update BrainTrainerPlus" msgstr "" #: ../SPMenu.py:335 msgid "Use the 'sub menu' buttons for the different activity menus" msgstr "" #: ../SPMenu.py:350 msgid "Use the menu below to choose between the different game categories" msgstr "" #: ../lib/billiard.py:298 msgid "Use the right mousebutton to aim and the left button to hit the ball." msgstr "" "Die rechte Maustaste ist zum Zielen und die linke Maustaste zum Schießen." #: ../lib/pong.py:579 msgid "Use these keys on your keyboard to control the bat." msgstr "Benutze folgende Tasten um den Schläger zu steuern." #: ../SPMainCore.py:465 #, python-format msgid "User: %s" msgstr "Benutzer: %s" #: ../SPHelpText.py:117 #, fuzzy msgid "Usermanagement" msgstr "Benutzername:" #: ../SPgdm.py:104 msgid "Username:" msgstr "Benutzername:" #: ../lib/simon_sp.py:170 msgid "" "When the flashing stops you will be prompted to repeat the sequence by " "touching the coloured blocks." msgstr "" #: ../lib/packid.py:502 msgid "When you have finished all the levels, without making to much mistakes" msgstr "Wenn alle Levels fertig sind, ohne viele Fehler" #: ../lib/findit_sp.py:223 msgid "" "When you spot a difference, touch it with your finger.\n" "You can click the question mark in the middle of the screen if you need a " "hint." msgstr "" #: ../lib/soundmemory.py:199 msgid "" "When you touch the picture you will hear a sound.\n" "Match the image with others that make the same sound,to get points." msgstr "" #: ../lib/wipe.py:102 msgid "Wipe" msgstr "" #: ../lib/wipe.py:112 msgid "Wipe with your finger on the screen to uncover the picture." msgstr "" #: ../SPMainCore.py:729 ../SPMainCore.py:733 ../SPMainCore.py:734 #: ../SPMainCore.py:872 msgid "Yes" msgstr "Ja" #: ../lib/fourrow.py:130 msgid "" "You can vertically drop a red pill in a desired column by pressing that " "exact column." msgstr "" #: ../lib/dltr.py:374 msgid "You have finished the daily training module." msgstr "" #: ../lib/billiard.py:296 msgid "You have to make the blue ball enter the hole (in level 1)" msgstr "Der blaue Ball muss in das Loch (in Level 1)" #: ../SPMainCore.py:728 msgid "You play very good, do you want to try the next level ?" msgstr "" #: ../lib/electro_sp.py:196 msgid "" "You select the pictures by touching them.\n" "As you progress through the star levels more pairs appear to match." msgstr "" #: ../lib/numbers_sp.py:231 msgid "You will see various numbers scattered around the screen." msgstr "" #: ../lib/billiard.py:617 msgid "You won!!" msgstr "Du hast gewonnen !!" #: ../lib/dltr.py:376 msgid "Your average results per group are:" msgstr "" #: ../SPMainCore.py:1033 #, python-format msgid "" "Your image is saved at:\n" "%s" msgstr "" "Ihre Grafik wurde gespeichert als:\n" "%s" #: ../lib/dltr.py:375 msgid "Your results are:" msgstr "" #: ../lib/billiard.py:297 msgid "and the red ones in levels 2 and 3." msgstr "und der rote Ball muss in Level 2 und 3 auch in das Loch." #: ../lib/spinbottle.py:118 msgid "beginning with the letter: " msgstr "" #: ../lib/packid.py:505 msgid "funny sounds :-)" msgstr "lustige Geräusche :-)" #: ../lib/billiard.py:604 ../lib/billiard.py:618 msgid "points" msgstr "Punkte" #: ../lib/quiz.py:157 #, python-format msgid "question id: %s" msgstr "" #: ../lib/quiz_general.py:134 #, python-format msgid "" "xml file %s is missing, this shouldn't happen, contact the %s developers" msgstr "" #~ msgid "All the data was stored succesfully." #~ msgstr "Die Daten wurden erfolgreich gespeichert." #~ msgid "Aquarium mouse training, difficulty: *" #~ msgstr "Aquarium Maustraining, Schwierigkeit: *" #~ msgid "" #~ "At the start of the game, a photograph of an animal is shown, above the " #~ "picture the name of the animal is written." #~ msgstr "" #~ "Am Beginn des Spiels wird ein Foto eines Tieres mit seinem Namen gezeigt." #~ msgid "Billiard, difficulty: **/***" #~ msgstr "Billiard, Schwierigkeit: **/***" #~ msgid "Childsplay_sp information" #~ msgstr "Childsplay_sp Information" #~ msgid "Childsplay_sp question" #~ msgstr "Childsplay_sp Frage" #~ msgid "Childsplay_sp results diagram" #~ msgstr "Childsplay_sp Ergebnisdiagramm" #~ msgid "Click image to enlarge" #~ msgstr "Klicken zum Vergrößern" #, fuzzy #~ msgid "Click the buttons in the right order" #~ msgstr "Finde alle Buchstaben in richtiger Reihenfolge. " #~ msgid "Current user: %s" #~ msgstr "Aktueller Benutzer: %s" #, fuzzy #~ msgid "Difficulty : 2 - 4 years" #~ msgstr "Schwierigkeit : 4-7 Jahre" #~ msgid "Difficulty : 4-7 years" #~ msgstr "Schwierigkeit : 4-7 Jahre" #~ msgid "Difficulty : 4-8 years" #~ msgstr "Schwierigkeit : 4-8 Jahre" #~ msgid "" #~ "Each part of the screen can also be clicked on to make the animal scream, " #~ "his name or initial spoken." #~ msgstr "" #~ "Man kann auf den Bildschirm klicken, damit das Tier einen Laut macht oder " #~ "der Name oder der Anfangsbuchstabe ausgesprochen wird." #~ msgid "Exercises" #~ msgstr "Übungen" #~ msgid "" #~ "Failed to get the dbase data, try to run childsplay_sp first to setup the " #~ "dbase" #~ msgstr "" #~ "Fehler beim Holen der dbase Daten. Starten Sie erst Childsplay_sp um " #~ "Daten zu erzeugen." #~ msgid "Find the characters" #~ msgstr "Finde den Buchstaben" #~ msgid "Flashcards" #~ msgstr "Flashkarten" #~ msgid "Flashcards, difficulty: *" #~ msgstr "Flashkarten, Schwierigkeit: *" #~ msgid "" #~ "Give your login name in the box and hit the login button. Alternatively " #~ "you can just hit the login button and run Childsplay_sp in anonymous mode." #~ msgstr "" #~ "Geben Sie Ihren Benutzernamen ein und drücken Sie den Anmelden-Knopf. Sie " #~ "können sich auch ohne Benutzernamen anmelden." #~ msgid "Goal of the activity" #~ msgstr "Ziel dieser Aktivität:" #~ msgid "" #~ "If the menu consist of more layers, sub menus, you can always get back to " #~ "the main menu by using the 'exit' button." #~ msgstr "" #~ "Falls das Menü aus mehreren Untermenüs besteht, können Sie jederzeit mit " #~ "dem 'Exit' Knopf zurück." #~ msgid "" #~ "If you start the GUI for the first time there's no username and password " #~ "set so you should just hit the 'Login' button.\n" #~ " You will get a warning message telling you to set as soon as possible a " #~ "username and password.\n" #~ "You can set a username and password in the GUI.\n" #~ " Go to 'Settings' -> 'Set password'." #~ msgstr "" #~ "Falls Sie das GUI zum ersten Mal starten, so ist noch kein Benutzername " #~ "und Passwort festgelegt und sie können einfach den 'Anmelden' Knopf " #~ "drücken.\n" #~ "Sie werden eine Warnung sehen, die Ihnen zum Festlegen eines " #~ "Benuzternamens und eines Passwortes rät.\n" #~ "Sie können dies im GUI festlegen.\n" #~ "Gehen Sie zu 'Einstellungen' -> 'Passwort festlegen'. " #~ msgid "" #~ "In the last level the fish needs to be clicked two times while they try " #~ "to escape." #~ msgstr "" #~ "In der letzten Schwierigkeitsstufe muss man die Fische zwei Mal treffen " #~ "während sie zu flüchten versuchen." #~ msgid "" #~ "In this file you can set a number of options to change the game play." #~ msgstr "" #~ "In dieser Datei kann man eine Reihe an Einstellungsmöglichkeiten für das " #~ "Spiel ändern." #~ msgid "Info" #~ msgstr "Info" #~ msgid "Keyboard training, difficulty: *" #~ msgstr "Tastaturtraining, Schwierigkeit: *" #~ msgid "Listen to the sound and click on the character to which it belongs." #~ msgstr "Hören Sie auf den Buchstaben und klicken Sie darauf." #~ msgid "Lower case characters memory, difficulty: */**" #~ msgstr "Kleinbuchstaben Memory, Schwierigkeit: */**" #~ msgid "LowercaseMemory" #~ msgstr "KleinbuchstabenMemory" #~ msgid "Memory, difficulty: */**" #~ msgstr "Memory, Schwierigkeit: */**" #~ msgid "Memory/Alphabet" #~ msgstr "Gedächtnis-Memory/Alphabet" #~ msgid "Menu" #~ msgstr "Auswahl" #~ msgid "No data available for this level" #~ msgstr "Keine Daten für diesen Level vorhanden" #, fuzzy #~ msgid "Number of levels : 5" #~ msgstr "Anzahl der Levels: 3" #~ msgid "Numbers memory, difficulty: */**" #~ msgstr "Zahlen Memory, Schwierigkeit: */**" #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "On the left the initial of the animal name is shown." #~ msgstr "Auf der linken Seite steht der Anfangsbuchstabe des Tieres." #~ msgid "Packid, difficulty: **/***" #~ msgstr "Packid, Schwierigkeit: **/***" #~ msgid "Pause" #~ msgstr "Pause" #~ msgid "Pong classic tennis game, difficulty: *" #~ msgstr "Pong klassisches Tennisspiel, Schwierigkeit: *" #~ msgid "Put all the pieces in the correct order." #~ msgstr "Ordne alle Teile richtig an." #~ msgid "Puzzle, difficulty: */**" #~ msgstr "Puzzle, Schwierigkeit: */**" #~ msgid "Save" #~ msgstr "Speichern" #~ msgid "Scores reached in level %s" #~ msgstr "Erreichte Punkte in Level %s" #~ msgid "Screenshot\n" #~ msgstr "Bildschirmfoto\n" #~ msgid "Short description\n" #~ msgstr "Kurzbeschreibung\n" #~ msgid "Sound association, difficulty: *" #~ msgstr "Geräusche zuordnen, Schwierigkeit: *" #~ msgid "Sound association, difficulty: */**" #~ msgstr "Geräusche zuordnen, Schwierigkeit: */**" #~ msgid "Sound memory, difficulty: */**" #~ msgstr "Klang Memory, Schwierigkeit: */**" #~ msgid "The aim of this activity" #~ msgstr "Das Ziel dieser Aktivität:" #~ msgid "" #~ "The faster you find all the characters the better your score will be." #~ msgstr "" #~ "Je schneller man die Buchstaben findet, desto besser ist das Ergebnis." #~ msgid "" #~ "The game has a configuration file called 'pongrc', located in the ." #~ "childsplay directory of your homedirectory." #~ msgstr "" #~ "Für dieses Spiel gibt es eine Konfigurationsdatei namens 'pongrc', welche " #~ "sich im .childsplay Verzeichnis im persönlichen Ordner befindet." #~ msgid "The table 'activity_options' doesn't exist in the dbase" #~ msgstr "Die Tabelle 'activity_options' ist nicht vorhanden" #~ msgid "" #~ "Then the animal name is spoken ('the dog'), and the animal makes his cry " #~ "('woof' 'cui-cui' etc.)." #~ msgstr "" #~ "Dann wird der Tiername ausgesprochen (' Der Hund') und das Tier macht " #~ "einen Laut ('Wuff' 'Wau-Wau' usw.)." #~ msgid "" #~ "There was a problem while replacing the rows in the database.\n" #~ "The exception was:\n" #~ "%s" #~ msgstr "" #~ "Es gab ein Problem beim Ersetzen der Reihen in der Datenbank.\n" #~ "Der Fehler war:\n" #~ "%s" #~ msgid "This activity belongs to the category: %s" #~ msgstr "Diese Aktivität gehört zur Kategorie: %s" #~ msgid "" #~ "This database table holds the values used when displaying the results " #~ "graph in an activity.\n" #~ "The column 'MU-value' holds an integer between 0 and 10 indicating the " #~ "average score.(the dark blue line).\n" #~ "The column 'SIGMA-value' holds an integer between 0 an 100 indicating the " #~ "standard deviation in percentage, probably always 50. (the light blue " #~ "box)\n" #~ "\n" #~ "Click on the row you want to alter and then click on the field you wish " #~ "to edit.\n" #~ "You cannot edit the 'Activity name' field.\n" #~ "Use the 'Save' button to store the changes in the database." #~ msgstr "" #~ "In dieser Datenbank finden sich die Werte, welche als Ergebnisgrafik für " #~ "die jeweilige Aktivität angezeigt werden.\n" #~ "Die Spalte 'MU-value' ist ein Integerwert zwischen 0 und 10, welcher den " #~ "Mittelwert (dunkelblaue Linie) darstellt.\n" #~ "Die Spalte 'SIGMA-value' ist ein Integerwert zwischen 0 und 100, welcher " #~ "die Standardabweichung in Prozent darstellt, meist etwa 50. (der " #~ "hellblaue Bereich)\n" #~ "\n" #~ "Klicken Sie auf die zu verändernde Spalte und dann in das Feld, das Sie " #~ "editieren wollen.\n" #~ "Sie können das 'Activity name' Feld nicht ändern.\n" #~ "Benutzen Sie den 'Save' Button, um die Veränderungen zu speichern." #~ msgid "This is a game to teach the alphabet to very little childrens." #~ msgstr "Das ist ein Spiel für sehr kleine Kinder um das Alphabet zu lernen." #~ msgid "Tips" #~ msgstr "Hinweise:" #~ msgid "Type of activity" #~ msgstr "Art der Aktivität:" #~ msgid "Upper case characters memory, difficulty: */**" #~ msgstr "Großbuchstaben Memory, Schwierigkeit: */**" #~ msgid "UppercaseMemory" #~ msgstr "GroßbuchstabenMemory" #~ msgid "" #~ "When a letter is hit on the keyboard, a corresponding animal is shown." #~ msgstr "" #~ "Das richtige Tier wird angezeigt, wenn eine Taste auf der Tastatur " #~ "gedrückt wird." #~ msgid "" #~ "When you can't find the correct character after a certain period of time " #~ "a box will be drawn around it." #~ msgstr "Wenn man den Buchstaben nicht findet, dann wird er eingerahmt. " #~ msgid "" #~ "You can add your own images by placing them in the following directory: " #~ msgstr "" #~ "Man kann eigene Bilder hinzufügen, wenn man sie in folgendes Verzeichnis " #~ "einfügt:" #~ msgid "You can hit the 'graph' button to see your results per level." #~ msgstr "" #~ "Sie können den 'Diagramm' Knopf drücken um Ihre Ergebnisse für die " #~ "Schwierigkeitsstufen zu sehen." #~ msgid "" #~ "Your language, %s, is not supported.\n" #~ " I will now switch to English" #~ msgstr "" #~ "Die aktuelle Sprache, %s, wird nicht unterstützt.\n" #~ "Es geht in Englisch weiter" #~ msgid "" #~ "Your language, %s, is supported but you must install\n" #~ " the 'alphabet_sounds_%s' package.\n" #~ " Look for it in your GNU/Linux distro or at www.schoolsplay.org.\n" #~ " I will now switch to English" #~ msgstr "" #~ "Die aktuelle Sprache, %s, muss erst installiert werden\n" #~ " mit dem 'alphabet_sounds_%s' Download.\n" #~ " Suchen Sie in Ihrer GNU/Linux distro oder auf www.schoolsplay.org.\n" #~ "Es geht in Englisch weiter" #~ msgid "badger" #~ msgstr "Dachs" #~ msgid "bear" #~ msgstr "Bär" #~ msgid "beaver" #~ msgstr "Bieber" #~ msgid "bee" #~ msgstr "Biene" #~ msgid "bison" #~ msgstr "Bison" #~ msgid "blackbird" #~ msgstr "Amsel" #~ msgid "bull" #~ msgstr "Bulle" #~ msgid "camel" #~ msgstr "Kamel" #~ msgid "chimp" #~ msgstr "Schimpanse" #~ msgid "cow" #~ msgstr "Kuh" #~ msgid "crow" #~ msgstr "Krähe" #~ msgid "cuckoo" #~ msgstr "Kuckuck" #~ msgid "deer" #~ msgstr "Hirsch" #~ msgid "doe" #~ msgstr "Reh" #~ msgid "dog" #~ msgstr "Hund" #~ msgid "dolphin" #~ msgstr "Delphin" #~ msgid "donkey" #~ msgstr "Esel" #~ msgid "dromedary" #~ msgstr "Dromedar" #~ msgid "duck" #~ msgstr "Ente" #~ msgid "elephant" #~ msgstr "Elephant" #~ msgid "ferret" #~ msgstr "Frettchen" #~ msgid "filename: %s" #~ msgstr "Dateiname: %s" #~ msgid "fly" #~ msgstr "Fliege" #~ msgid "fox" #~ msgstr "Fuchs" #~ msgid "frog" #~ msgstr "Frosch" #~ msgid "gander" #~ msgstr "Gänserich" #~ msgid "giraffe" #~ msgstr "Giraffe" #~ msgid "goat" #~ msgstr "Geiß" #~ msgid "gorilla" #~ msgstr "Gorilla" #~ msgid "grasshopper" #~ msgstr "Grashüpfer" #~ msgid "hen" #~ msgstr "Henne" #~ msgid "hippopotamus" #~ msgstr "Nilpferd" #~ msgid "hornet" #~ msgstr "Hornisse" #~ msgid "horse" #~ msgstr "Pferd" #~ msgid "iguana" #~ msgstr "Leguan" #~ msgid "kangaroo" #~ msgstr "Känguru" #~ msgid "koala" #~ msgstr "Koala" #~ msgid "lark" #~ msgstr "Lerche" #~ msgid "lion" #~ msgstr "Löwe" #~ msgid "marmot" #~ msgstr "Murmeltier" #~ msgid "mountaingoat" #~ msgstr "Schneeziege" #~ msgid "mouse" #~ msgstr "Maus" #~ msgid "nandou" #~ msgstr "Nandu" #~ msgid "orca" #~ msgstr "Orka" #~ msgid "otter" #~ msgstr "Otter" #~ msgid "owl" #~ msgstr "Eule" #~ msgid "peacock" #~ msgstr "Pfau" #~ msgid "penguin" #~ msgstr "Pinguin" #~ msgid "pig" #~ msgstr "Schwein" #~ msgid "pigeon" #~ msgstr "Taube" #~ msgid "quetzal" #~ msgstr "Quetzal" #~ msgid "rabbit" #~ msgstr "Kaninchen" #~ msgid "ram" #~ msgstr "Schafsbock" #~ msgid "rat" #~ msgstr "Ratte" #~ msgid "rooster" #~ msgstr "Hahn" #~ msgid "seagull" #~ msgstr "Möwe" #~ msgid "tiger" #~ msgstr "Tiger" #~ msgid "tucan" #~ msgstr "Tucan" #~ msgid "turkey" #~ msgstr "Truthahn" #~ msgid "vulture" #~ msgstr "Geier" #~ msgid "wallaby" #~ msgstr "Wallaby" #~ msgid "wapiti" #~ msgstr "Elch" #~ msgid "whale" #~ msgstr "Wal" #~ msgid "wildboar" #~ msgstr "Wildschwein" #~ msgid "wombat" #~ msgstr "Wombat" #~ msgid "xanthia" #~ msgstr "Xanthia" #~ msgid "yak" #~ msgstr "Grunzochse" #~ msgid "zebra" #~ msgstr "Zebra" #~ msgid "zebu" #~ msgstr "Buckelrind" childsplay-3.3/po/childsplay_eo_EO.po0000644000175000017500000011276313271013626016414 0ustar stasstas# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: Childsplay\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-07-09 11:38+0200\n" "PO-Revision-Date: 2009-11-29 13:55+0100\n" "Last-Translator: Stas Zytkiewicz \n" "Language-Team: \n" "Language: eo_EO\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: eo\n" #: ../SPHelpText.py:76 msgid "" "\n" "\n" "Touch the 'Play' button to continue the game." msgstr "" #: ../SPHelpText.py:71 msgid "" "\n" "\n" "Touch the changed picture." msgstr "" #: ../lib/packid.py:503 msgid "(max two per word), you can play the last level which is a maze." msgstr "" "(maksimume du en ĉiu vorto) vi povas ludi la lastan nivelon, kiu estas " "labirinto." #: ../SPMenu.py:348 msgid "A collection of braintrain games for seniors." msgstr "" #: ../lib/memory_sp.py:216 #, fuzzy msgid "Accuracy is more important than speed." msgstr "Ĝusteco pli gravas ol rapideco." #: ../SPMainCore.py:478 #, fuzzy msgid "Activity :" msgstr "Aktivaĵo: %s" #: ../SPMainCore.py:590 #, python-format msgid "Activity : %s" msgstr "Aktivaĵo: %s" #: ../lib/dltr.py:377 #, fuzzy msgid "Activity:" msgstr "Aktivaĵo: %s" #: ../lib/fourrow.py:131 msgid "All pills, both red and yellow, stack on each other." msgstr "" #: ../SPMenu.py:349 msgid "" "All the games have there own help page, just start a game and hit the stars " "on top of the screen to select another difficulty." msgstr "" #: ../SPHelpText.py:142 msgid "Alphabet" msgstr "Alfabeto" #: ../lib/fallingletters.py:207 msgid "Alphabet/Keyboardtraining" msgstr "Alfabeto/Klavartrejnado" #: ../lib/spinbottle.py:119 ../lib/synonyms.py:117 msgid "Already found:" msgstr "" #: ../SPMainCore.py:277 msgid "An error occurred and BraintrainerPlus was restarted" msgstr "" #: ../lib/quiz_math.py:106 msgid "Answer the math questions." msgstr "" #: ../lib/quiz_general.py:159 ../lib/quiz_history.py:251 #: ../lib/quiz_melody.py:111 ../lib/quiz_picture.py:103 ../lib/quiz.py:143 #: ../lib/quiz_royal.py:117 ../lib/quiz_sayings.py:105 ../lib/quiz_text.py:112 msgid "Answer the quiz questions." msgstr "" #: ../SPMainCore.py:871 msgid "" "Are sure you want to quit the dailytraining ? All the results will be lost." msgstr "" #: ../lib/puzzle.py:247 msgid "At the bottom you'll see a image of the complete puzzle." msgstr "" #: ../lib/quiz.py:145 msgid "At the top of the screen, you will see a general knowledge question." msgstr "" #: ../lib/quiz_royal.py:119 msgid "" "At the top of the screen, you will see a question about a member of Royalty" msgstr "" #: ../lib/quiz_picture.py:105 msgid "At the top of the screen, you will see a question about a picture." msgstr "" #: ../lib/quiz_general.py:161 msgid "" "At the top of the screen, you will see a question about general knowledge." msgstr "" #: ../lib/quiz_math.py:108 msgid "At the top of the screen, you will see a question about math problem." msgstr "" #: ../lib/quiz_sayings.py:107 msgid "At the top of the screen, you will see a question about sayings." msgstr "" #: ../lib/quiz_melody.py:113 msgid "" "At the top of the screen, you will see a question about the song playing." msgstr "" #: ../lib/quiz_history.py:253 msgid "" "At the top of the screen, you will see a question from general knowledge " "question from the selected period." msgstr "" #: ../lib/quiz_text.py:114 msgid "At the top of the screen, you will see a question." msgstr "" #: ../lib/billiard.py:345 msgid "Balls" msgstr "Globoj" #: ../lib/numbers_sp.py:190 msgid "Begin" msgstr "" #: ../lib/quiz_general.py:162 ../lib/quiz_history.py:254 #: ../lib/quiz_math.py:109 ../lib/quiz_melody.py:114 ../lib/quiz_picture.py:106 #: ../lib/quiz.py:146 ../lib/quiz_royal.py:120 ../lib/quiz_sayings.py:108 #: ../lib/quiz_text.py:115 msgid "" "Below it are a choice of possible answers.\n" "Touch the correct answer." msgstr "" #: ../lib/billiard.py:287 msgid "Billiard" msgstr "Bilardo" #: ../lib/billiard.py:273 msgid "Billiard Game" msgstr "Bilarda ludo" #: ../SPMainCore.py:814 msgid "Cancel" msgstr "" #: ../SPHelpText.py:121 ../SPHelpText.py:122 msgid "Change password" msgstr "" #: ../lib/ichanger.py:323 ../lib/numbers_sp.py:194 msgid "Cheat" msgstr "" #: ../SPMainCore.py:227 #, fuzzy, python-format msgid "Childsplay_sp - educational activities, using theme:%s" msgstr "Edukaj aktivaĵoj de Childsplay_sp" #: ../SPgdm.py:73 msgid "Childsplay_sp login" msgstr "Ensaluto al Childsplay_sp" #: ../lib/pong.py:425 msgid "Choose the game to play:" msgstr "Elektu ludon:" #: ../lib/memory_sp.py:207 msgid "Classic memory game where you have to find pairs of cards." msgstr "Klasika memor-ludo, en kiu vi devas trovi parojn de identaj kartoj." #: ../lib/soundmemory.py:197 msgid "Classic memory game where you have to find pairs of sounds." msgstr "Klasika memorludo, en kiu vi devas trovi parojn de identaj sonoj." #: ../SPMainCore.py:953 msgid "Close" msgstr "" #: ../lib/fourrow.py:536 msgid "Congratulations, try again ?" msgstr "" #: ../SPHelpText.py:129 msgid "Content import" msgstr "" #: ../lib/electro_sp.py:203 ../lib/fallingletters.py:201 #: ../lib/soundmemory.py:205 msgid "Correctness is more important than speed" msgstr "Ĝusteco pli gravas ol rapideco." #: ../lib/numbers_sp.py:241 #, fuzzy msgid "Correctness is more important than speed." msgstr "Ĝusteco pli gravas ol rapideco." #: ../SPMainCore.py:1244 ../SPMainCore.py:1417 #, python-format msgid "Current activity : %s" msgstr "Nuna aktivado: %s" #: ../SPHelpText.py:119 msgid "Daily training sequence" msgstr "" #: ../SPHelpText.py:53 msgid "Default group 1" msgstr "" #: ../SPHelpText.py:54 msgid "Default group 2" msgstr "" #: ../lib/dltr.py:434 msgid "Details" msgstr "" #: ../SPMainCore.py:813 msgid "Do you really want to quit ?" msgstr "Ĉu certe vi volas ĉesi?" #: ../lib/electro_sp.py:185 msgid "Electro_sp" msgstr "" #: ../SPMainCore.py:575 ../SPMainCore.py:583 msgid "Error !" msgstr "" #: ../SPMainCore.py:582 #, python-format msgid "" "Error constructing activity\n" "%s" msgstr "" #: ../SPMainCore.py:574 #, python-format msgid "" "Error importing activity\n" "%s" msgstr "" #: ../lib/fallingletters.py:185 msgid "Fallingletters" msgstr "Falantaj literoj" #: ../lib/packid.py:722 msgid "Find all the letters in the right order." msgstr "Trovu ĉiujn literojn en la ĝusta sinsekvo." #: ../lib/findit_sp.py:212 msgid "Findit" msgstr "" #: ../lib/findsound.py:118 msgid "Findsound" msgstr "Trovi sonojn" #: ../lib/fishtank.py:242 msgid "Fishtank" msgstr "Fiŝcisterno" #: ../lib/fourrow.py:119 msgid "Fourrow" msgstr "" #: ../lib/pong.py:400 ../SPHelpText.py:143 msgid "Fun" msgstr "Plezuro" #: ../lib/packid.py:516 msgid "Fun/Alphabet" msgstr "Plezuro / alfabeto" #: ../lib/billiard.py:312 msgid "Fun/Miscellaneous" msgstr "Plezuro / miksitaj" #: ../lib/fishtank.py:263 msgid "Fun/Mousetraining" msgstr "Plezuro, ekzercado pri la muso" #: ../SPHelpText.py:124 msgid "Gamemanagement" msgstr "" #: ../SPMainCore.py:1021 #, fuzzy, python-format msgid "Generated by %s version %s for the %s activity" msgstr "Generita de Childsplay_sp, versio %s, por aktivaĵo %s." #: ../SPHelpText.py:118 msgid "Groupmanagement" msgstr "" #: ../lib/spinbottle.py:208 ../lib/synonyms.py:154 msgid "Hit the 'Begin' button to start." msgstr "" #: ../SPMainCore.py:658 msgid "Hit the 'space' key or a mousebutton to skip the countdown" msgstr "Puŝu la spaco-klavon aŭ iun musbutonon por transsalti la nombradon" #: ../lib/pong.py:573 msgid "Hit the Escape key to stop." msgstr "" #: ../lib/ichanger.py:287 msgid "Ichanger" msgstr "" #: ../lib/dltr.py:250 msgid "If you ready to start the next activity, hit the 'start' button." msgstr "" #: ../lib/fallingletters.py:195 msgid "" "In the last two levels the uppercase and lowercase are mixed but you don't " "have to match the case only the letter" msgstr "" "En la lastaj du niveloj majuskloj kaj minuskloj aperas mikse, sed ne necesas " "tajpi la ĝustan usklecon." #: ../lib/pong.py:388 msgid "In the multiplayer modes, the one who has 11 points wins." msgstr "" "En la dupersonaj reĝimoj gajnas tiu, kiu kiel unua atingas 11 poentojn." #: ../SPMainCore.py:1034 ../SPMainCore.py:1254 msgid "Information" msgstr "Informoj" #: ../SPMainCore.py:932 #, fuzzy, python-format msgid "Information about %s" msgstr "Informoj" #: ../SPHelpText.py:58 msgid "" "It seems that we cannot use the sound card right now and because this " "activity is all about sound, we just quit. This problem can also be caused " "by another application which uses the soundcard right now." msgstr "" "Ŝajne ni nun ne povas uzi la son-karton. Ĉar tiu ĉi aktivaĵo estas pri sono, " "ni simple ĉesas. Eble la problemon kaŭzas alia aplikaĵo, kiu nun uzas la " "sonkarton." #: ../SPHelpText.py:139 msgid "Keyboardtraining" msgstr "Trejnado pri la klavaro" #: ../SPHelpText.py:141 msgid "Language" msgstr "Lingvo" #: ../lib/findsound.py:127 msgid "Listen to the sound and click on the image to which it belongs." msgstr "Aŭdu sonon kaj klaku al la bildo, al kiu ĝi apartenas." #: ../SPgdm.py:122 msgid "Login" msgstr "Ensalutu" #: ../lib/numbers_sp.py:233 msgid "Look carefully and try to remember their positions on the screen." msgstr "" #: ../lib/puzzle.py:253 msgid "Look closely at the complete puzzle picture at the bottom." msgstr "" #: ../lib/memory_sp.py:210 msgid "" "Look closely at the pictures, when you have them memorized touch 'START'.\n" "The pictures turn over, you must match the pair of cards." msgstr "" #: ../lib/synonyms.py:116 msgid "Make a word with the letter: " msgstr "" #: ../lib/quiz_math.py:122 ../SPHelpText.py:137 msgid "Math" msgstr "Kalkulado" #: ../lib/quiz_math.py:97 #, fuzzy msgid "Math Quiz" msgstr "Kalkulado" #: ../lib/quiz_melody.py:102 msgid "Melody Quiz" msgstr "" #: ../SPHelpText.py:65 msgid "" "Memorize the pictures.\n" "\n" "One of these pictures will be replaced by a new picture.\n" "\n" "Touch the 'Start' button to begin the game." msgstr "" #: ../lib/electro_sp.py:209 ../lib/memory_sp.py:198 ../lib/memory_sp.py:222 #: ../lib/quiz_melody.py:126 ../lib/quiz.py:163 ../lib/quiz_sayings.py:120 #: ../lib/quiz_text.py:127 ../lib/simon_sp.py:183 ../lib/soundmemory.py:211 #: ../SPHelpText.py:136 msgid "Memory" msgstr "Memorado" #: ../lib/simon_sp.py:177 msgid "Mind the sound sequence as well as the colors sequence." msgstr "" #: ../lib/dltr.py:227 ../lib/findit_sp.py:237 ../lib/findsound.py:139 #: ../lib/ichanger.py:310 ../lib/numbers_sp.py:247 ../lib/photoalbum.py:200 #: ../lib/quiz_general.py:174 ../lib/quiz_history.py:266 #: ../lib/quiz_picture.py:118 ../lib/quiz_royal.py:132 ../lib/spinbottle.py:222 #: ../lib/synonyms.py:167 ../lib/wipe.py:124 ../SPHelpText.py:144 msgid "Miscellaneous" msgstr "Miksitaj" #: ../SPHelpText.py:140 msgid "Mousetraining" msgstr "Trejnado pri la muso" #: ../SPMainCore.py:928 ../SPMainCore.py:935 msgid "Movie" msgstr "" #: ../lib/pong.py:387 msgid "Multi player - Play against another player." msgstr "Dupersona ludo -- ludu kontraŭ alia ludanto." #: ../lib/pong.py:386 msgid "Multi player against the computer - Try to defeat the computer." msgstr "Dupersona ludo kontraŭ la komputilo -- provu venki la komputilon." #: ../lib/wipe.py:83 msgid "New" msgstr "" #: ../SPMainCore.py:729 ../SPMainCore.py:872 ../SPMainCore.py:875 msgid "No" msgstr "Ne" #: ../lib/photoalbum.py:233 #, python-format msgid "" "No photo albums found !\n" "You should place your pictures inside directories called 'Album_1', " "'Album_2' etc\n" " Place these directories inside %s" msgstr "" #: ../lib/photoalbum.py:188 msgid "Number of levels : 1" msgstr "" #: ../lib/spinbottle.py:210 ../lib/synonyms.py:156 msgid "Number of levels : 6" msgstr "" #: ../lib/numbers_sp.py:222 #, fuzzy msgid "Numbers_sp" msgstr "NombraMemorado" #: ../lib/dltr.py:434 ../lib/dltr.py:438 ../SPMainCore.py:575 #: ../SPMainCore.py:583 ../SPMainCore.py:814 ../SPMainCore.py:819 #: ../SPMainCore.py:820 ../SPMainCore.py:924 ../SPMainCore.py:1023 #: ../SPMainCore.py:1034 ../SPMainCore.py:1254 msgid "OK" msgstr "" #: ../lib/synonyms.py:152 #, python-format msgid "" "On the next screen you'll find a keyboard, try to make as much words as " "possible that begin with the letter '%s'." msgstr "" #: ../lib/spinbottle.py:206 #, python-format msgid "" "On the next screen you'll find a keyboard, try to name as much %s as " "possible with the same letter." msgstr "" #: ../lib/simon_sp.py:166 msgid "On the screen are four blocks of different colours." msgstr "" #: ../lib/findit_sp.py:221 msgid "" "On the screen you will see two almost identical pictures.\n" "However, there are differences between the images." msgstr "" #: ../lib/spinbottle.py:207 ../lib/synonyms.py:153 msgid "Only words from the dictionary are allowed." msgstr "" #: ../lib/packid.py:491 msgid "Packid" msgstr "Pakid" #: ../lib/photoalbum.py:178 msgid "Photoalbum" msgstr "" #: ../lib/quiz_picture.py:94 msgid "Picture Quiz" msgstr "" #: ../SPHelpText.py:120 msgid "Picture import" msgstr "" #: ../lib/fourrow.py:538 msgid "Pity, try again ?" msgstr "" #: ../lib/puzzle.py:245 msgid "Place the puzzle piece on the right where you think it belongs..." msgstr "" #: ../lib/quiz_history.py:219 msgid "Please enter your year of birth." msgstr "" #: ../lib/electro_sp.py:240 ../lib/memory_sp.py:283 msgid "Please, choose a set of cards." msgstr "" #: ../lib/wipe.py:156 msgid "Please, choose a set of images." msgstr "" #: ../lib/puzzle.py:302 msgid "Please, choose a set of puzzle images." msgstr "" #: ../lib/pong.py:373 msgid "Pong" msgstr "Pongo" #: ../lib/simon_sp.py:167 msgid "Press the Start button with your finger." msgstr "" #: ../lib/fourrow.py:145 ../lib/puzzle.py:236 ../lib/puzzle.py:259 #: ../SPHelpText.py:138 msgid "Puzzle" msgstr "Puzlo" #: ../SPMainCore.py:729 ../SPMainCore.py:872 msgid "Question ?" msgstr "" #: ../SPMainCore.py:814 #, fuzzy msgid "Quit ?" msgstr "Finu" #: ../lib/quiz.py:134 #, fuzzy msgid "Quiz" msgstr "Kalkulado" #: ../lib/quiz_history.py:242 msgid "Quiz history" msgstr "" #: ../lib/quiz_royal.py:108 msgid "Quiz royal" msgstr "" #: ../lib/quiz_math.py:111 msgid "" "Remember, the order of operations is multiplication or division and followed " "by addition or subtraction." msgstr "" #: ../lib/dltr.py:434 ../SPMainCore.py:1023 msgid "Results" msgstr "" #: ../SPMainCore.py:1027 msgid "Save image" msgstr "" #: ../lib/quiz_sayings.py:96 msgid "Sayings Quiz" msgstr "" #: ../lib/dltr.py:378 msgid "Score:" msgstr "" #: ../SPHelpText.py:126 #, fuzzy msgid "Select Language" msgstr "Lingvo" #: ../SPMenu.py:334 msgid "" "Select an activity and click on the button, the activity will be started." msgstr "Elektu aktivaĵon kaj klaku al la butono, la aktivaĵo startos." #: ../SPMainCore.py:953 msgid "Set volume level" msgstr "" #: ../SPHelpText.py:127 ../SPHelpText.py:128 msgid "Settings" msgstr "" #: ../lib/ichanger.py:296 msgid "" "Several images from the past will appear on the screen.\n" "Look carefully at them and remember what you see." msgstr "" #: ../lib/simon_sp.py:155 msgid "Simon_sp" msgstr "" #: ../lib/pong.py:385 msgid "Single play - Hit the ball against the wall." msgstr "Unupersona ludo -- frapu pilkon al muro." #: ../lib/soundmemory.py:188 msgid "Soundmemory" msgstr "Sona memorado" #: ../lib/spinbottle.py:196 msgid "Spin the bottle" msgstr "" #: ../lib/dltr.py:261 ../lib/ichanger.py:321 ../lib/memory_sp.py:430 msgid "Start" msgstr "" #: ../lib/spinbottle.py:129 ../lib/synonyms.py:365 #, fuzzy msgid "Starting a new exercise" msgstr "Komenca nivelo: %s" #: ../SPMainCore.py:650 #, python-format msgid "Starting level %s" msgstr "Komenca nivelo: %s" #: ../SPMainCore.py:834 msgid "Stopping timers, please wait..." msgstr "Haltigo de tempo-mezuriloj, bonvolu atendi..." #: ../lib/spinbottle.py:120 ../lib/synonyms.py:118 msgid "Suggestions:" msgstr "" #: ../lib/synonyms.py:140 msgid "Synonyms" msgstr "" #: ../lib/quiz_text.py:103 #, fuzzy msgid "Text Quiz" msgstr "Kalkulado" #: ../lib/simon_sp.py:169 msgid "The blocks will light up randomly along with sound clues." msgstr "" #: ../lib/packid.py:499 msgid "The aim of the game:" msgstr "La celo de la ludo:" #: ../lib/billiard.py:295 ../lib/dltr.py:214 ../lib/electro_sp.py:193 #: ../lib/fallingletters.py:193 ../lib/findit_sp.py:220 ../lib/findsound.py:126 #: ../lib/fishtank.py:250 ../lib/fourrow.py:127 ../lib/ichanger.py:295 #: ../lib/memory_sp.py:206 ../lib/numbers_sp.py:230 ../lib/photoalbum.py:186 #: ../lib/pong.py:381 ../lib/puzzle.py:244 ../lib/quiz_general.py:158 #: ../lib/quiz_history.py:250 ../lib/quiz_math.py:105 ../lib/quiz_melody.py:110 #: ../lib/quiz_picture.py:102 ../lib/quiz.py:142 ../lib/quiz_royal.py:116 #: ../lib/quiz_sayings.py:104 ../lib/quiz_text.py:111 ../lib/simon_sp.py:163 #: ../lib/soundmemory.py:196 ../lib/spinbottle.py:204 ../lib/synonyms.py:150 #: ../lib/wipe.py:110 msgid "The aim of this activity:" msgstr "La celo de tiu ĉi aktivaĵo:" #: ../lib/findit_sp.py:225 msgid "The arrows to the left take you to the previous image." msgstr "" #: ../lib/pong.py:383 msgid "The classic pong game where you must hit a ball with your bat." msgstr "La klasika ponga ludo, en kiu vi devas frapi pilkon per via rakedo." #: ../lib/electro_sp.py:244 ../lib/memory_sp.py:287 ../lib/puzzle.py:306 msgid "The difficulty of the set increases from left to right." msgstr "" #: ../lib/billiard.py:300 ../lib/billiard.py:306 msgid "" "The fewer hits you need to get the ball in the hole, the more points you get." msgstr "" "Ju malpli da frapoj vi bezonas por entruigi la globon, des pli da poentoj vi " "ricevas." #: ../lib/electro_sp.py:194 msgid "The game is to match pairs of pictures" msgstr "" #: ../lib/packid.py:711 msgid "" "The last level is only available when you finish the first three levels " "without errors." msgstr "" "La lasta nivelo estas disponebla nur, se vi finas la unuajn tri nivelojn sen " "eraroj." #: ../lib/billiard.py:299 msgid "The longer you hold the left button the harder it will hit the ball." msgstr "" "Ju pli longe vi premas la maldekstran butonon, des pli forte ĝi frapos la " "globon." #: ../lib/packid.py:723 msgid "The word to find is: " msgstr "La vorto, kiun vi trovu, estas:" #: ../lib/numbers_sp.py:234 msgid "Then push the 'BEGIN' button. The numbers will disappear." msgstr "" #: ../lib/packid.py:501 msgid "There are thee levels with three words each." msgstr "Estas tri niveloj, ĉiu kun tri vortoj." #: ../lib/pong.py:384 msgid "There are three modes to choose from:" msgstr "Vi povas elekti inter tri reĝimoj:" #: ../SPMainCore.py:1525 #, python-format msgid "" "There was an error in %s. Please check the logs and inform the developers" msgstr "" "Estis eraro en %s. Bonvolu inspekti la protokolojn kaj informi la " "evoluigantojn." #: ../SPHelpText.py:46 #, python-format msgid "" "There was an error in the database this can be caused by many things but " "most of the time it's caused by the fact that your version of the database " "doesn't match the version of the program. I will backup your original " "database and then replace it with a new one. The original database is now " "called sp.db_back and it's placed in %s" msgstr "" "Okazis eraro en la datenbanko. Tio povas havi multajn kaŭzojn, sed plej ofte " "ĝi okazas, ĉar la versio de via datenbanko ne kongruas kun la versio de via " "programo. Mi faros rezervan kopion de via originala datenbanko kaj poste " "anstataŭigos ĝin per nova. La originala datenbanko nun nomiĝas sp.db_back " "kaj troviĝas en %s." #: ../lib/billiard.py:319 ../lib/electro_sp.py:215 ../lib/fallingletters.py:214 #: ../lib/findit_sp.py:244 ../lib/findsound.py:158 ../lib/fishtank.py:270 #: ../lib/fourrow.py:234 ../lib/ichanger.py:316 ../lib/memory_sp.py:228 #: ../lib/numbers_sp.py:257 ../lib/packid.py:523 ../lib/photoalbum.py:206 #: ../lib/pong.py:406 ../lib/puzzle.py:266 ../lib/quiz_general.py:181 #: ../lib/quiz_history.py:273 ../lib/quiz_picture.py:124 ../lib/quiz.py:169 #: ../lib/quiz_royal.py:138 ../lib/simon_sp.py:189 ../lib/soundmemory.py:217 #: ../lib/spinbottle.py:229 ../lib/synonyms.py:174 ../lib/wipe.py:135 #, python-format msgid "This activity has %s levels" msgstr "Tiu ĉi aktivaĵo havas %s nivelojn." #: ../lib/dltr.py:215 msgid "" "This activity is known as the daily training which is a collection of " "activities." msgstr "" #: ../SPMenu.py:333 msgid "This is the menu used to select an activity." msgstr "Jen la menuo, per kiu eblas elekti aktivaĵon." #: ../lib/fourrow.py:133 msgid "Tip: Try creating multiple winning scenario's." msgstr "" #: ../SPMainCore.py:919 #, fuzzy, python-format msgid "Tip:%s" msgstr "Konsilo:" #: ../lib/quizengine.py:800 #, python-format msgid "" "To little questions found in %s for locale '%s', found %s questions should " "be at least 10" msgstr "" #: ../lib/fourrow.py:132 msgid "" "To win the game you'll need four red pills lined up after each other " "horizontally, vertically or diagonal." msgstr "" #: ../lib/ichanger.py:298 msgid "" "Touch the 'START' button on the right.\n" "The images will dissappear and when they return, one will have changed.\n" "Touch the picture which has changed." msgstr "" #: ../lib/packid.py:500 msgid "Try to 'eat' all the letters in the appropriated order." msgstr "Provu \"manĝi\" ĉiujn literojn en la ĝusta sinsekvo." #: ../lib/numbers_sp.py:235 msgid "" "Try to find the numbers, in the correct order and from low to high, by " "touching them on the screen." msgstr "" #: ../lib/packid.py:504 msgid "Try to find the way out while eating the fruits for extra points and" msgstr "Pro trovi la elirejon, manĝante fruktojn; ili donos ekstrajn poentojn" #: ../lib/fourrow.py:128 msgid "Try to get four in a row in any possible direction." msgstr "" #: ../lib/fishtank.py:251 msgid "Try to remove the fish by clicking on them with the mouse." msgstr "Provu forigi la fiŝojn klakante al ili per la muso." #: ../lib/simon_sp.py:164 msgid "Try to repeat the sequence of sounds played." msgstr "" #: ../lib/fallingletters.py:194 msgid "Type the falling letters on the keyboard before they hit the ground." msgstr "" "Tajpu la falantajn literojn per la klavaro, antaŭ ke ili frapas la grundon." #: ../SPHelpText.py:123 msgid "Update BrainTrainerPlus" msgstr "" #: ../SPMenu.py:335 msgid "Use the 'sub menu' buttons for the different activity menus" msgstr "" #: ../SPMenu.py:350 msgid "Use the menu below to choose between the different game categories" msgstr "" #: ../lib/billiard.py:298 msgid "Use the right mousebutton to aim and the left button to hit the ball." msgstr "" "Uzu la dekstran mus-butonon por celumi kaj la maldekstran por frapi globon." #: ../lib/pong.py:579 msgid "Use these keys on your keyboard to control the bat." msgstr "Uzu jenajn klavojn en via klavaro por movi la rakedon:" #: ../SPMainCore.py:465 #, python-format msgid "User: %s" msgstr "Uzulo: %s" #: ../SPHelpText.py:117 #, fuzzy msgid "Usermanagement" msgstr "Uzula nomo:" #: ../SPgdm.py:104 msgid "Username:" msgstr "Uzula nomo:" #: ../lib/simon_sp.py:170 msgid "" "When the flashing stops you will be prompted to repeat the sequence by " "touching the coloured blocks." msgstr "" #: ../lib/packid.py:502 msgid "When you have finished all the levels, without making to much mistakes" msgstr "Post kiam vi finis ĉiujn nivelojn sen fari tro da eraroj" #: ../lib/findit_sp.py:223 msgid "" "When you spot a difference, touch it with your finger.\n" "You can click the question mark in the middle of the screen if you need a " "hint." msgstr "" #: ../lib/soundmemory.py:199 msgid "" "When you touch the picture you will hear a sound.\n" "Match the image with others that make the same sound,to get points." msgstr "" #: ../lib/wipe.py:102 msgid "Wipe" msgstr "" #: ../lib/wipe.py:112 msgid "Wipe with your finger on the screen to uncover the picture." msgstr "" #: ../SPMainCore.py:729 ../SPMainCore.py:733 ../SPMainCore.py:734 #: ../SPMainCore.py:872 msgid "Yes" msgstr "Jes" #: ../lib/fourrow.py:130 msgid "" "You can vertically drop a red pill in a desired column by pressing that " "exact column." msgstr "" #: ../lib/dltr.py:374 msgid "You have finished the daily training module." msgstr "" #: ../lib/billiard.py:296 msgid "You have to make the blue ball enter the hole (in level 1)" msgstr "Vi devas enirigi la bluan globon en la truon (en nivelo 1)" #: ../SPMainCore.py:728 msgid "You play very good, do you want to try the next level ?" msgstr "" #: ../lib/electro_sp.py:196 msgid "" "You select the pictures by touching them.\n" "As you progress through the star levels more pairs appear to match." msgstr "" #: ../lib/numbers_sp.py:231 msgid "You will see various numbers scattered around the screen." msgstr "" #: ../lib/billiard.py:617 msgid "You won!!" msgstr "Vi gajnis!" #: ../lib/dltr.py:376 msgid "Your average results per group are:" msgstr "" #: ../SPMainCore.py:1033 #, python-format msgid "" "Your image is saved at:\n" "%s" msgstr "" "Via bildo estis konservita tie:\n" "%s" #: ../lib/dltr.py:375 msgid "Your results are:" msgstr "" #: ../lib/billiard.py:297 msgid "and the red ones in levels 2 and 3." msgstr "kaj la ruĝajn en niveloj 2 kaj 3." #: ../lib/spinbottle.py:118 msgid "beginning with the letter: " msgstr "" #: ../lib/packid.py:505 msgid "funny sounds :-)" msgstr "kaj sonas amuze. :-)" #: ../lib/billiard.py:604 ../lib/billiard.py:618 msgid "points" msgstr "poentoj" #: ../lib/quiz.py:157 #, python-format msgid "question id: %s" msgstr "" #: ../lib/quiz_general.py:134 #, python-format msgid "" "xml file %s is missing, this shouldn't happen, contact the %s developers" msgstr "" #~ msgid "All the data was stored succesfully." #~ msgstr "Ĉiom da datenoj estis sukcese konservitaj." #~ msgid "Aquarium mouse training, difficulty: *" #~ msgstr "Mus-trejnado en akvario, malfacileco: *" #~ msgid "" #~ "At the start of the game, a photograph of an animal is shown, above the " #~ "picture the name of the animal is written." #~ msgstr "" #~ "Je ludokomenco aperas bildo de besto; super ĝi estas skribita la nomo de " #~ "la besto." #~ msgid "Billiard, difficulty: **/***" #~ msgstr "Bilardo, malfacileco: **/***" #~ msgid "Childsplay_sp information" #~ msgstr "Informo de Childsplay_sp" #~ msgid "Childsplay_sp question" #~ msgstr "Demando de Childsplay_sp" #~ msgid "Childsplay_sp results diagram" #~ msgstr "Rezulta diagramo de Childsplay_sp" #~ msgid "Click image to enlarge" #~ msgstr "Klaku al la bildo por grandigi ĝin" #, fuzzy #~ msgid "Click the buttons in the right order" #~ msgstr "Trovu ĉiujn literojn en la ĝusta sinsekvo." #~ msgid "" #~ "Each part of the screen can also be clicked on to make the animal scream, " #~ "his name or initial spoken." #~ msgstr "" #~ "Ankaŭ eblas klaki ajnan parton de la ekrano por blekigi la beston aŭ aŭdi " #~ "ĝian nomon aŭ ties komencan literon." #~ msgid "Exercises" #~ msgstr "Ekzercoj" #~ msgid "" #~ "Failed to get the dbase data, try to run childsplay_sp first to setup the " #~ "dbase" #~ msgstr "" #~ "Malsukcesis ricevi datenbankajn datenojn; provu unue ruli childsplay_sp " #~ "por krei la datenbankon." #~ msgid "Find the characters" #~ msgstr "Trovu la signojn" #~ msgid "Flashcards" #~ msgstr "Lernkartoj" #~ msgid "Flashcards, difficulty: *" #~ msgstr "Lernkartoj, malfacileco: *" #~ msgid "" #~ "Give your login name in the box and hit the login button. Alternatively " #~ "you can just hit the login button and run Childsplay_sp in anonymous mode." #~ msgstr "" #~ "Tajpu vian nomon en la kesteto kaj puŝu la butonon \"Ensalutu\". Aŭ " #~ "simple puŝu la butonon \"Ensalutu\" kaj uzu Childsplay_sp en anonima " #~ "reĝimo." #~ msgid "Goal of the activity" #~ msgstr "Celo de la aktivaĵo" #~ msgid "" #~ "If the menu consist of more layers, sub menus, you can always get back to " #~ "the main menu by using the 'exit' button." #~ msgstr "" #~ "Kiam menuo konsistas el pluraj niveloj (sub-menuoj), vi povas ĉiam reiri " #~ "al la ĉefa menu puŝante la butonon \"Finu\"." #~ msgid "" #~ "If you start the GUI for the first time there's no username and password " #~ "set so you should just hit the 'Login' button.\n" #~ " You will get a warning message telling you to set as soon as possible a " #~ "username and password.\n" #~ "You can set a username and password in the GUI.\n" #~ " Go to 'Settings' -> 'Set password'." #~ msgstr "" #~ "Kiam vi startigas la programon unuafoje, ne estas uzula nomo kaj " #~ "pasvorto; do simple puŝu la butonon \"Ensalutu\".\n" #~ "Aperos averta mesaĝo diranta, ke vi laŭeble baldaŭ fiksu uzulan nomon kaj " #~ "pasvorton.\n" #~ "Vi povas fiksi uzulan nomon kaj pasvorton en la grafika dialogo.\n" #~ "Iru al \"Agordaĵoj\" --> \"Fiksu pasvorton\"." #~ msgid "" #~ "In the last level the fish needs to be clicked two times while they try " #~ "to escape." #~ msgstr "" #~ "En la lasta nivelo necesas klaki la fiŝojn dufoje, dum ili provas eskapi." #~ msgid "" #~ "In this file you can set a number of options to change the game play." #~ msgstr "" #~ "En tiu ĉi dosiero vi povas modifi plurajn opciojn por ŝanĝi la funkciadon " #~ "de la ludo." #~ msgid "Info" #~ msgstr "Informoj" #~ msgid "Keyboard training, difficulty: *" #~ msgstr "Trejnado pri la klavaro, malfacileco: *" #~ msgid "Listen to the sound and click on the character to which it belongs." #~ msgstr "Aŭdu la sonon kaj klaku al la signo, al kiu ĝi apartenas." #~ msgid "Lower case characters memory, difficulty: */**" #~ msgstr "Memorado de minusklaj literoj, malfacileco: */**" #~ msgid "LowercaseMemory" #~ msgstr "MinusklaMemorado" #~ msgid "Memory, difficulty: */**" #~ msgstr "Memorado, malfacileco: */**" #~ msgid "Memory/Alphabet" #~ msgstr "Memorado/alfabeto" #~ msgid "Menu" #~ msgstr "Menuo" #~ msgid "No data available for this level" #~ msgstr "Ne ekzistas datenoj por tiu ĉi nivelo" #~ msgid "Numbers memory, difficulty: */**" #~ msgstr "Memorado de nombroj, malfacileco: */**" #~ msgid "Ok" #~ msgstr "Bone" #~ msgid "On the left the initial of the animal name is shown." #~ msgstr "Maldekstre aperas la unua litero de la bestonomo." #~ msgid "Packid, difficulty: **/***" #~ msgstr "Pakid, malfacileco **/***" #~ msgid "Pause" #~ msgstr "Paŭzu" #~ msgid "Pong classic tennis game, difficulty: *" #~ msgstr "Klasika tenisa ludo \"Pongo\", malfacileco: *" #~ msgid "Put all the pieces in the correct order." #~ msgstr "Aranĝu ĉiujn pecojn en la ĝusta sinsekvo." #~ msgid "Puzzle, difficulty: */**" #~ msgstr "Puzlo, malfacileco: */**" #~ msgid "Save" #~ msgstr "Kons" #~ msgid "Scores reached in level %s" #~ msgstr "Rezultoj atingitaj en nivelo %s" #~ msgid "Screenshot\n" #~ msgstr "Ekranbildo\n" #~ msgid "Short description\n" #~ msgstr "Mallonga priskribo\n" #~ msgid "Sound association, difficulty: *" #~ msgstr "Asociado de sonoj, malfacileco: *" #~ msgid "Sound association, difficulty: */**" #~ msgstr "Asociado de sonoj, malfacileco: */**" #~ msgid "Sound memory, difficulty: */**" #~ msgstr "Memorado de sonoj, malfacileco: */**" #~ msgid "The aim of this activity" #~ msgstr "La celo de tiu ĉi aktivaĵo" #~ msgid "" #~ "The faster you find all the characters the better your score will be." #~ msgstr "" #~ "Ju pli rapide vi trovos ĉiujn signojn, des pli bona estos via poentaro." #~ msgid "" #~ "The game has a configuration file called 'pongrc', located in the ." #~ "childsplay directory of your homedirectory." #~ msgstr "" #~ "La ludo havas agordan dosieron, kiu nomiĝas 'pongrc' kaj estas en la " #~ "dosierujo '.childsplay' en via hhejma dosierujo." #~ msgid "The table 'activity_options' doesn't exist in the dbase" #~ msgstr "La tabelo 'activity_options' ne ekzistas en la datenbanko." #~ msgid "" #~ "Then the animal name is spoken ('the dog'), and the animal makes his cry " #~ "('woof' 'cui-cui' etc.)." #~ msgstr "" #~ "Tiam sonas la parolata nomo de la besto (\"la hundo\"), kaj la besto " #~ "blekas (\"vaŭ\", \"mu\" ktp.)." #~ msgid "" #~ "There was a problem while replacing the rows in the database.\n" #~ "The exception was:\n" #~ "%s" #~ msgstr "" #~ "Okazis problemo dum anstataŭigo de rikordoj en la datenbanko.\n" #~ "La escepto estis:\n" #~ "%s" #~ msgid "This activity belongs to the category: %s" #~ msgstr "Tiu ĉi aktivaĵo apartenas al la kategorio %s" #~ msgid "" #~ "This database table holds the values used when displaying the results " #~ "graph in an activity.\n" #~ "The column 'MU-value' holds an integer between 0 and 10 indicating the " #~ "average score.(the dark blue line).\n" #~ "The column 'SIGMA-value' holds an integer between 0 an 100 indicating the " #~ "standard deviation in percentage, probably always 50. (the light blue " #~ "box)\n" #~ "\n" #~ "Click on the row you want to alter and then click on the field you wish " #~ "to edit.\n" #~ "You cannot edit the 'Activity name' field.\n" #~ "Use the 'Save' button to store the changes in the database." #~ msgstr "" #~ "Tiu ĉi datenbanko enhavas la valorojn uzatajn por montri la rezulto-" #~ "grafikaĵon en aktivaĵo.\n" #~ "La kolumno 'MU-value' enhavas entjeran nombron inter 0 kaj 10, kiu " #~ "indikas la mezuman poentaron (en la malhele blua linio).\n" #~ "La koumno \"SIGMA-value' enhavas entjeran nombron inter 0 kaj 100, kiu " #~ "indikas la norman deviaĵon en elcentoj, probable ĉiam 50 (la hele blua " #~ "kesto).\n" #~ "\n" #~ "Klaku al la linio, kiun vi volas ŝanĝi, kaj tiam klaku al la kampo, kiun " #~ "vi volas redakti.\n" #~ "Ne eblas modifi la kampon \"nomo de la aktivaĵo\".\n" #~ "Uzu la butonon \"Konservu\" por konservi viajn ŝanĝojn en la datenbanko." #~ msgid "This is a game to teach the alphabet to very little childrens." #~ msgstr "Tio ĉi estas ludo por instrui la alfabeton al tre junaj infanoj." #~ msgid "Tips" #~ msgstr "Konsiloj" #~ msgid "Type of activity" #~ msgstr "Tipo de la aktivaĵo" #~ msgid "Upper case characters memory, difficulty: */**" #~ msgstr "Memorado de majusklaj literoj, malfacileco: */**" #~ msgid "UppercaseMemory" #~ msgstr "MajusklaMemorado" #~ msgid "" #~ "When a letter is hit on the keyboard, a corresponding animal is shown." #~ msgstr "Kiam vi tajpas literon sur la klavaro, la responda besto aperas." #~ msgid "" #~ "When you can't find the correct character after a certain period of time " #~ "a box will be drawn around it." #~ msgstr "" #~ "Se vi ne povas trovi la ĝustan literon ene de certa tempo, kesto estos " #~ "metita ĉirkaŭ ĝi." #~ msgid "" #~ "You can add your own images by placing them in the following directory: " #~ msgstr "Vi povas aldoni proprajn bildojn metante ilin en jenan dosierujon:" #~ msgid "You can hit the 'graph' button to see your results per level." #~ msgstr "" #~ "Vi povas puŝi la butonon \"grafikaĵo\" por vidi viajn rezultojn por ĉiu " #~ "nivelo." #~ msgid "" #~ "Your language, %s, is not supported.\n" #~ " I will now switch to English" #~ msgstr "" #~ "Via lingvo, \"%s\", ne estas subtenata.\n" #~ "Mi nun transiros al la angla lingvo.." #~ msgid "" #~ "Your language, %s, is supported but you must install\n" #~ " the 'alphabet_sounds_%s' package.\n" #~ " Look for it in your GNU/Linux distro or at www.schoolsplay.org.\n" #~ " I will now switch to English" #~ msgstr "" #~ "Via lingvo (%s) estas subtenata, sed vi devas instali\n" #~ "la pakaĵon 'alphabet_sounds_%s'.\n" #~ "Serĉu ĝin en via GNU-Linuksa distribuaĵo aŭ ĉe www.schoolsplay.org.\n" #~ "Mi nun transiros al la angla lingvo." #~ msgid "badger" #~ msgstr "melo" #~ msgid "bear" #~ msgstr "urso" #~ msgid "beaver" #~ msgstr "kastoro" #~ msgid "bee" #~ msgstr "abelo" #~ msgid "bison" #~ msgstr "bizono" #~ msgid "blackbird" #~ msgstr "merlo" #~ msgid "bull" #~ msgstr "taŭro" #~ msgid "camel" #~ msgstr "kamelo" #~ msgid "chimp" #~ msgstr "ĉimpanzo" #~ msgid "cow" #~ msgstr "bovino" #~ msgid "crow" #~ msgstr "korniko" #~ msgid "cuckoo" #~ msgstr "kukolo" #~ msgid "deer" #~ msgstr "cervo" #~ msgid "doe" #~ msgstr "cervino" #~ msgid "dog" #~ msgstr "hundo" #~ msgid "dolphin" #~ msgstr "delfeno" #~ msgid "donkey" #~ msgstr "azeno" #~ msgid "dromedary" #~ msgstr "dromedaro" #~ msgid "duck" #~ msgstr "anasino" #~ msgid "elephant" #~ msgstr "elefanto" #~ msgid "ferret" #~ msgstr "putoro" #~ msgid "filename: %s" #~ msgstr "Dosiera nomo: %s" #~ msgid "fly" #~ msgstr "muŝo" #~ msgid "fox" #~ msgstr "vulpo" #~ msgid "frog" #~ msgstr "rano" #~ msgid "gander" #~ msgstr "anaso" #~ msgid "giraffe" #~ msgstr "ĝirafo" #~ msgid "goat" #~ msgstr "kapro" #~ msgid "gorilla" #~ msgstr "gorilo" #~ msgid "grasshopper" #~ msgstr "akrido" #~ msgid "hen" #~ msgstr "kokino" #~ msgid "hippopotamus" #~ msgstr "hipopotamo" #~ msgid "hornet" #~ msgstr "krabro" #~ msgid "horse" #~ msgstr "ĉevalo" #~ msgid "iguana" #~ msgstr "igvano" #~ msgid "kangaroo" #~ msgstr "kanguruo" #~ msgid "koala" #~ msgstr "koalo" #~ msgid "lark" #~ msgstr "alaŭdo" #~ msgid "lion" #~ msgstr "leono" #~ msgid "marmot" #~ msgstr "marmoto" #~ msgid "mountaingoat" #~ msgstr "ĉamo" #~ msgid "mouse" #~ msgstr "muso" #~ msgid "nandou" #~ msgstr "reao" #~ msgid "orca" #~ msgstr "orko" #~ msgid "otter" #~ msgstr "lutro" #~ msgid "owl" #~ msgstr "strigo" #~ msgid "peacock" #~ msgstr "pavo" #~ msgid "penguin" #~ msgstr "pingveno" #~ msgid "pig" #~ msgstr "porko" #~ msgid "pigeon" #~ msgstr "kolombo" #~ msgid "quetzal" #~ msgstr "kvecalo" #~ msgid "rabbit" #~ msgstr "kuniklo" #~ msgid "ram" #~ msgstr "virŝafo" #~ msgid "rat" #~ msgstr "rato" #~ msgid "rooster" #~ msgstr "virkoko" #~ msgid "seagull" #~ msgstr "mevo" #~ msgid "tiger" #~ msgstr "tigro" #~ msgid "tucan" #~ msgstr "tukano" #~ msgid "turkey" #~ msgstr "meleagro" #~ msgid "vulture" #~ msgstr "vulturo" #~ msgid "wallaby" #~ msgstr "valabio" #~ msgid "wapiti" #~ msgstr "alko" #~ msgid "whale" #~ msgstr "baleno" #~ msgid "wildboar" #~ msgstr "apro" #~ msgid "wombat" #~ msgstr "vombato" #~ msgid "xanthia" #~ msgstr "tineo" #~ msgid "yak" #~ msgstr "gruntbovo" #~ msgid "zebra" #~ msgstr "zebro" #~ msgid "zebu" #~ msgstr "zebuo" childsplay-3.3/po/childsplay_el_GR.po0000644000175000017500000016101513271013626016410 0ustar stasstas# translation of childsplay_sp_el_GR.po to # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Constantine Mousafiris , 2012. # Yannis Kaskamanidis , 2007, 2009. # stas Zytkiewicz , 2008. msgid "" msgstr "" "Project-Id-Version: childsplay_sp_el_GR\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-07-09 11:38+0200\n" "PO-Revision-Date: 2012-08-11 22:18+0200\n" "Last-Translator: Constantine Mousafiris \n" "Language-Team: Ελληνικά \n" "Language: el_GR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../SPHelpText.py:76 msgid "" "\n" "\n" "Touch the 'Play' button to continue the game." msgstr "" "\n" "\n" "Ακούμπησε το κουμπί 'Αναπαραγωγή/ Play' για να συνεχίσει το παιγνίδι." #: ../SPHelpText.py:71 msgid "" "\n" "\n" "Touch the changed picture." msgstr "" "\n" "\n" "Ακούμπησε την αλλαγμένη εικόνα." #: ../lib/packid.py:503 msgid "(max two per word), you can play the last level which is a maze." msgstr "" "(το πολύ δύο για κάθε λέξη), μπορείς να παίξεις το τελευταίο επίπεδο, που " "είναι ένας λαβύρινθος." #: ../SPMenu.py:348 msgid "A collection of braintrain games for seniors." msgstr "Μία συλλογή σπαζοκεφαλιών για μεγάλους." #: ../lib/memory_sp.py:216 #, fuzzy msgid "Accuracy is more important than speed." msgstr "Η ορθότητα είναι σημαντικότερη από την ταχύτητα" #: ../SPMainCore.py:478 msgid "Activity :" msgstr "Δραστηριότητα:" #: ../SPMainCore.py:590 #, python-format msgid "Activity : %s" msgstr "Δραστηριότητα: %s" #: ../lib/dltr.py:377 msgid "Activity:" msgstr "Δραστηριότητα:" #: ../lib/fourrow.py:131 msgid "All pills, both red and yellow, stack on each other." msgstr "" #: ../SPMenu.py:349 msgid "" "All the games have there own help page, just start a game and hit the stars " "on top of the screen to select another difficulty." msgstr "" "Όλα τα παιγνίδια έχουν την δική τους σελίδα βοήθειας, απλώς άρχισε ένα " "παιγνίδι και πάτα τα αστέρια στην κορυφή της οθόνης, για να επιλέξεις ένα " "διαφορετικό επίπεδο δυσκολίας." #: ../SPHelpText.py:142 msgid "Alphabet" msgstr "Αλφάβητο" #: ../lib/fallingletters.py:207 msgid "Alphabet/Keyboardtraining" msgstr "Αλφάβητο/Εξάσκηση στο πληκτρολόγιο" #: ../lib/spinbottle.py:119 ../lib/synonyms.py:117 msgid "Already found:" msgstr "Βρέθηκε κι' όλας:" #: ../SPMainCore.py:277 msgid "An error occurred and BraintrainerPlus was restarted" msgstr "" #: ../lib/quiz_math.py:106 msgid "Answer the math questions." msgstr "Απάντησε τις ερωτήσεις μαθηματικών." #: ../lib/quiz_general.py:159 ../lib/quiz_history.py:251 #: ../lib/quiz_melody.py:111 ../lib/quiz_picture.py:103 ../lib/quiz.py:143 #: ../lib/quiz_royal.py:117 ../lib/quiz_sayings.py:105 ../lib/quiz_text.py:112 msgid "Answer the quiz questions." msgstr "Απάντησε τις ερωτήσεις του κουίζ." #: ../SPMainCore.py:871 msgid "" "Are sure you want to quit the dailytraining ? All the results will be lost." msgstr "" "Είσαι σίγουρος/ ή ότι θέλεις να εγκαταλείψεις την καθημερινή προπόνηση; " "Τότε, όλα τα αποτελέσματα θα χαθούν." #: ../lib/puzzle.py:247 msgid "At the bottom you'll see a image of the complete puzzle." msgstr "Στο κάτω μέρος, θα δεις μία εικόνα με ολόκληρο το παζλ συμπληρωμένο." #: ../lib/quiz.py:145 msgid "At the top of the screen, you will see a general knowledge question." msgstr "Στο πανω μέρος της οθόνης, θα δεις μία ερώτηση γενικών γνώσεων." #: ../lib/quiz_royal.py:119 msgid "" "At the top of the screen, you will see a question about a member of Royalty" msgstr "" "Στο πανω μέρος της οθόνης, θα δεις μια ερώτηση για ένα μέλος της Βασιλικής " "οικογένειας" #: ../lib/quiz_picture.py:105 #, fuzzy msgid "At the top of the screen, you will see a question about a picture." msgstr "Στο πανω μέρος της οθόνης, θα δεις μια ερώτηση." #: ../lib/quiz_general.py:161 #, fuzzy msgid "" "At the top of the screen, you will see a question about general knowledge." msgstr "" "Στο πανω μέρος της οθόνης, θα δεις μια ερώτηση για ένα μέλος της Βασιλικής " "οικογένειας" #: ../lib/quiz_math.py:108 #, fuzzy msgid "At the top of the screen, you will see a question about math problem." msgstr "Στο πανω μέρος της οθόνης, θα δεις ένα πρόβλημα μαθηματικών." #: ../lib/quiz_sayings.py:107 #, fuzzy msgid "At the top of the screen, you will see a question about sayings." msgstr "Στο πανω μέρος της οθόνης, θα δεις μια ερώτηση." #: ../lib/quiz_melody.py:113 #, fuzzy msgid "" "At the top of the screen, you will see a question about the song playing." msgstr "" "Στο πανω μέρος της οθόνης, θα δεις μια ερώτηση για ένα μέλος της Βασιλικής " "οικογένειας" #: ../lib/quiz_history.py:253 msgid "" "At the top of the screen, you will see a question from general knowledge " "question from the selected period." msgstr "" "Στο πανω μέρος της οθόνης, θα δεις μια ερώτηση γενικών γνώσεων από τη " "περίοδο που διάλεξες." #: ../lib/quiz_text.py:114 msgid "At the top of the screen, you will see a question." msgstr "Στο πανω μέρος της οθόνης, θα δεις μια ερώτηση." #: ../lib/billiard.py:345 msgid "Balls" msgstr "Μπάλες" #: ../lib/numbers_sp.py:190 msgid "Begin" msgstr "" #: ../lib/quiz_general.py:162 ../lib/quiz_history.py:254 #: ../lib/quiz_math.py:109 ../lib/quiz_melody.py:114 ../lib/quiz_picture.py:106 #: ../lib/quiz.py:146 ../lib/quiz_royal.py:120 ../lib/quiz_sayings.py:108 #: ../lib/quiz_text.py:115 msgid "" "Below it are a choice of possible answers.\n" "Touch the correct answer." msgstr "" "Παρακάτω, ακολουθεί μια επιλογή με τις πιθανές απαντήσεις.\n" "Ακούπησε τη σωστή απάντηση." #: ../lib/billiard.py:287 msgid "Billiard" msgstr "Μπιλιάρδο" #: ../lib/billiard.py:273 msgid "Billiard Game" msgstr "Παιχνίδι μπιλιάρδου" #: ../SPMainCore.py:814 msgid "Cancel" msgstr "Διαγραφή" #: ../SPHelpText.py:121 ../SPHelpText.py:122 msgid "Change password" msgstr "" #: ../lib/ichanger.py:323 ../lib/numbers_sp.py:194 msgid "Cheat" msgstr "" #: ../SPMainCore.py:227 #, python-format msgid "Childsplay_sp - educational activities, using theme:%s" msgstr "" "Childsplay_sp - εκπαιδευτικές δραστηριότητες, που χρησιμοποιούν το θέμα: %s" #: ../SPgdm.py:73 msgid "Childsplay_sp login" msgstr "Σύνδεση στο Childsplay_sp" #: ../lib/pong.py:425 msgid "Choose the game to play:" msgstr "Διάλεξε το παιχνίδι που θέλεις να παίξεις:" #: ../lib/memory_sp.py:207 msgid "Classic memory game where you have to find pairs of cards." msgstr "Κλασικό παιχνίδι μνήμης, όπου πρέπει να βρεις ζευγάρια καρτών." #: ../lib/soundmemory.py:197 msgid "Classic memory game where you have to find pairs of sounds." msgstr "Κλασικό παιχνίδι μνήμης όπου πρέπει να βρεις ζευγάρια ήχων." #: ../SPMainCore.py:953 msgid "Close" msgstr "" #: ../lib/fourrow.py:536 msgid "Congratulations, try again ?" msgstr "" #: ../SPHelpText.py:129 msgid "Content import" msgstr "" #: ../lib/electro_sp.py:203 ../lib/fallingletters.py:201 #: ../lib/soundmemory.py:205 msgid "Correctness is more important than speed" msgstr "Η ορθότητα είναι σημαντικότερη από την ταχύτητα" #: ../lib/numbers_sp.py:241 #, fuzzy msgid "Correctness is more important than speed." msgstr "Η ορθότητα είναι σημαντικότερη από την ταχύτητα" #: ../SPMainCore.py:1244 ../SPMainCore.py:1417 #, python-format msgid "Current activity : %s" msgstr "Ενεργή δραστηριότητα: %s" #: ../SPHelpText.py:119 msgid "Daily training sequence" msgstr "" #: ../SPHelpText.py:53 msgid "Default group 1" msgstr "" #: ../SPHelpText.py:54 msgid "Default group 2" msgstr "" #: ../lib/dltr.py:434 msgid "Details" msgstr "Λεπτομέρειες" #: ../SPMainCore.py:813 msgid "Do you really want to quit ?" msgstr "Θέλεις πραγματικά να κλείσεις το πρόγραμμα;" #: ../lib/electro_sp.py:185 msgid "Electro_sp" msgstr "" #: ../SPMainCore.py:575 ../SPMainCore.py:583 msgid "Error !" msgstr "Σφάλμα !" #: ../SPMainCore.py:582 #, python-format msgid "" "Error constructing activity\n" "%s" msgstr "" "Σφάλμα κατά τη δημιουργία της δραστηριότητας\n" "%s" #: ../SPMainCore.py:574 #, python-format msgid "" "Error importing activity\n" "%s" msgstr "" "Σφάλμα κατά την εισαγωγή της δραστηριότητας\n" "%s" #: ../lib/fallingletters.py:185 msgid "Fallingletters" msgstr "Γράμματα που πέφτουν" #: ../lib/packid.py:722 msgid "Find all the letters in the right order." msgstr "Βρες όλες τις λέξεις με τη σωστή σειρά." #: ../lib/findit_sp.py:212 msgid "Findit" msgstr "Βρέστο" #: ../lib/findsound.py:118 msgid "Findsound" msgstr "Εύρεση ήχου" #: ../lib/fishtank.py:242 msgid "Fishtank" msgstr "Ενυδρείο ψαριών" #: ../lib/fourrow.py:119 msgid "Fourrow" msgstr "" #: ../lib/pong.py:400 ../SPHelpText.py:143 msgid "Fun" msgstr "Διασκέδαση" #: ../lib/packid.py:516 msgid "Fun/Alphabet" msgstr "Διασκέδαση/Αλφάβητο" #: ../lib/billiard.py:312 msgid "Fun/Miscellaneous" msgstr "Διασκέδαση/Διάφορα" #: ../lib/fishtank.py:263 msgid "Fun/Mousetraining" msgstr "Διασκέδαση/Εξάσκηση στο ποντίκι" #: ../SPHelpText.py:124 msgid "Gamemanagement" msgstr "" #: ../SPMainCore.py:1021 #, fuzzy, python-format msgid "Generated by %s version %s for the %s activity" msgstr "" "Δημιουργήθηκε από την έκδοση %s του Childsplay_sp, για τη %s δραστηριότητα" #: ../SPHelpText.py:118 msgid "Groupmanagement" msgstr "" #: ../lib/spinbottle.py:208 ../lib/synonyms.py:154 msgid "Hit the 'Begin' button to start." msgstr "Πάτησε το κουμπί 'Έναρξη' για να ξεκινήσεις." #: ../SPMainCore.py:658 msgid "Hit the 'space' key or a mousebutton to skip the countdown" msgstr "" "Πάτησε το πλήκτρο διαστήματος ή ένα κουμπί του ποντικιού για να σταματήσεις " "την αντίστροφη μέτρηση" #: ../lib/pong.py:573 msgid "Hit the Escape key to stop." msgstr "Πάτησε το κουμπί Έξοδος για να σταματήσεις." #: ../lib/ichanger.py:287 msgid "Ichanger" msgstr "" #: ../lib/dltr.py:250 msgid "If you ready to start the next activity, hit the 'start' button." msgstr "" "Αν είσαι έτοιμος/ η να ξεκινήσεις την επόμενη δραστηριότητα, τότε πάτησε το " "κουμπί 'Έναρξη'" #: ../lib/fallingletters.py:195 msgid "" "In the last two levels the uppercase and lowercase are mixed but you don't " "have to match the case only the letter" msgstr "" "Στα δύο τελευταία επίπεδα, τα γράμματα που πέφτουν είναι ανακατεμένα, πεζά " "και κεφαλαία. Μη λάβεις υπόψη σου τη μορφή, παρά μόνον το σωστό γράμμα. " #: ../lib/pong.py:388 msgid "In the multiplayer modes, the one who has 11 points wins." msgstr "Στα παιχνίδια με δυο παίχτες, κερδίζει όποιος συγκεντρώσει 11 πόντους." #: ../SPMainCore.py:1034 ../SPMainCore.py:1254 msgid "Information" msgstr "Πληροφορίες" #: ../SPMainCore.py:932 #, python-format msgid "Information about %s" msgstr "Πληροφορίες σχετικά με %s" #: ../SPHelpText.py:58 msgid "" "It seems that we cannot use the sound card right now and because this " "activity is all about sound, we just quit. This problem can also be caused " "by another application which uses the soundcard right now." msgstr "" "Φαίνεται ότι δεν είναι δυνατή η χρήση της κάρτας ήχου αυτή τη στιγμή και, " "επειδή αυτή η δραστηριότητα αναφέρεται στους ήχους, η εφαρμογή θα κλείσει. " "Είναι πιθανό κάποια άλλη εφαρμογή να χρησιμοποιεί την κάρτα ήχου αυτή τη " "στιγμή." #: ../SPHelpText.py:139 msgid "Keyboardtraining" msgstr "Εξάσκηση στο πληκτρολόγιο" #: ../SPHelpText.py:141 msgid "Language" msgstr "Γλώσσα" #: ../lib/findsound.py:127 msgid "Listen to the sound and click on the image to which it belongs." msgstr "Άκουσε τον ήχο και κάνε κλικ στην εικόνα του γράμματος που ανήκει." #: ../SPgdm.py:122 msgid "Login" msgstr "Σύνδεση" #: ../lib/numbers_sp.py:233 msgid "Look carefully and try to remember their positions on the screen." msgstr "" #: ../lib/puzzle.py:253 msgid "Look closely at the complete puzzle picture at the bottom." msgstr "" "Κοίτα προσεκτικά την πλήρη εικόνα του συμπληρωμένου παζλ στο κάτω μέρος." #: ../lib/memory_sp.py:210 #, fuzzy msgid "" "Look closely at the pictures, when you have them memorized touch 'START'.\n" "The pictures turn over, you must match the pair of cards." msgstr "" "Κοίτα προσεκτικά τις εικόνες. Όταν θα τις έχεις απομνημονεύσει, πάτησε το " "κουμπί 'ΈΝΑΡΞΗ'.\n" "Οι εικόνες θα ανακατευθούν. Εσύ πρέπει να ταιριάξεις τις απομνημονευμένες " "ίδιες κάρτες." #: ../lib/synonyms.py:116 msgid "Make a word with the letter: " msgstr "Φτιάξε μια λέξη με το γράμμα:" #: ../lib/quiz_math.py:122 ../SPHelpText.py:137 msgid "Math" msgstr "Μαθηματικά" #: ../lib/quiz_math.py:97 msgid "Math Quiz" msgstr "Κουίζ Μαθηματικών" #: ../lib/quiz_melody.py:102 msgid "Melody Quiz" msgstr "Κουίζ μελωδίας" #: ../SPHelpText.py:65 msgid "" "Memorize the pictures.\n" "\n" "One of these pictures will be replaced by a new picture.\n" "\n" "Touch the 'Start' button to begin the game." msgstr "" "Απομνημόνευσε τις εικόνες.\n" "\n" "Μια από αυτές τις εικόνες θα αντικατασταθεί από μια νέα εικόνα.\n" "\n" "Πάτησε το κουμπί 'Έναρξη' για να αρχίσεις το παιγνίδι." #: ../lib/electro_sp.py:209 ../lib/memory_sp.py:198 ../lib/memory_sp.py:222 #: ../lib/quiz_melody.py:126 ../lib/quiz.py:163 ../lib/quiz_sayings.py:120 #: ../lib/quiz_text.py:127 ../lib/simon_sp.py:183 ../lib/soundmemory.py:211 #: ../SPHelpText.py:136 msgid "Memory" msgstr "Μνήμη" #: ../lib/simon_sp.py:177 msgid "Mind the sound sequence as well as the colors sequence." msgstr "Δώσε προσοχή στη σειρά των ήχων, αλλά και στη σειρά των χρωμάτων." #: ../lib/dltr.py:227 ../lib/findit_sp.py:237 ../lib/findsound.py:139 #: ../lib/ichanger.py:310 ../lib/numbers_sp.py:247 ../lib/photoalbum.py:200 #: ../lib/quiz_general.py:174 ../lib/quiz_history.py:266 #: ../lib/quiz_picture.py:118 ../lib/quiz_royal.py:132 ../lib/spinbottle.py:222 #: ../lib/synonyms.py:167 ../lib/wipe.py:124 ../SPHelpText.py:144 msgid "Miscellaneous" msgstr "Διάφορα" #: ../SPHelpText.py:140 msgid "Mousetraining" msgstr "Εξάσκηση στο ποντίκι" #: ../SPMainCore.py:928 ../SPMainCore.py:935 msgid "Movie" msgstr "" #: ../lib/pong.py:387 msgid "Multi player - Play against another player." msgstr "Δυο παίκτες - Παιχνίδι με αντίπαλο άλλον παίχτη." #: ../lib/pong.py:386 msgid "Multi player against the computer - Try to defeat the computer." msgstr "" "Παιχνίδι με αντίπαλο τον υπολογιστή - Προσπάθησε να κατατροπώσεις τον " "υπολογιστή." #: ../lib/wipe.py:83 msgid "New" msgstr "" #: ../SPMainCore.py:729 ../SPMainCore.py:872 ../SPMainCore.py:875 msgid "No" msgstr "Όχι" #: ../lib/photoalbum.py:233 #, python-format msgid "" "No photo albums found !\n" "You should place your pictures inside directories called 'Album_1', " "'Album_2' etc\n" " Place these directories inside %s" msgstr "" #: ../lib/photoalbum.py:188 msgid "Number of levels : 1" msgstr "Αριθμός επιπέδων : 1" #: ../lib/spinbottle.py:210 ../lib/synonyms.py:156 msgid "Number of levels : 6" msgstr "Αριθμός επιπέδων: 6" #: ../lib/numbers_sp.py:222 #, fuzzy msgid "Numbers_sp" msgstr "Αριθμοί" #: ../lib/dltr.py:434 ../lib/dltr.py:438 ../SPMainCore.py:575 #: ../SPMainCore.py:583 ../SPMainCore.py:814 ../SPMainCore.py:819 #: ../SPMainCore.py:820 ../SPMainCore.py:924 ../SPMainCore.py:1023 #: ../SPMainCore.py:1034 ../SPMainCore.py:1254 msgid "OK" msgstr "Εντάξει" #: ../lib/synonyms.py:152 #, python-format msgid "" "On the next screen you'll find a keyboard, try to make as much words as " "possible that begin with the letter '%s'." msgstr "" "Στην επόμενη οθόνη θα βρεις ένα πληκτρολόγιο. Προσπάθησε να φτιάξεις όσες " "περισσότερες λέξεις μπορείς που να αρχίζουν με το γράμμα '%s'." #: ../lib/spinbottle.py:206 #, fuzzy, python-format msgid "" "On the next screen you'll find a keyboard, try to name as much %s as " "possible with the same letter." msgstr "" "Στην επόμενη οθόνη θα βρεις ένα πληκτρολόγιο. Προσπάθησε να φτιάξεις όσες " "περισσότερες λέξεις μπορείς που να αρχίζουν με το γράμμα '%s'." #: ../lib/simon_sp.py:166 msgid "On the screen are four blocks of different colours." msgstr "Στη οθόνη υπάρχουν τέσσερις ομάδες με διαφορετικά χρώματα." #: ../lib/findit_sp.py:221 msgid "" "On the screen you will see two almost identical pictures.\n" "However, there are differences between the images." msgstr "" "Στη οθόνη θα δεις δύο σχεδόν ίδιες εικόνες.\n" "Υπάρχουν, πάντως, διαφορές ανάμεσά τους." #: ../lib/spinbottle.py:207 ../lib/synonyms.py:153 msgid "Only words from the dictionary are allowed." msgstr "Επιτρέπονται μόνον οι λέξεις από το λεξικό." #: ../lib/packid.py:491 msgid "Packid" msgstr "Packid" #: ../lib/photoalbum.py:178 msgid "Photoalbum" msgstr "" #: ../lib/quiz_picture.py:94 msgid "Picture Quiz" msgstr "Κουίζ με εικόνες" #: ../SPHelpText.py:120 #, fuzzy msgid "Picture import" msgstr "Κουίζ με εικόνες" #: ../lib/fourrow.py:538 msgid "Pity, try again ?" msgstr "" #: ../lib/puzzle.py:245 msgid "Place the puzzle piece on the right where you think it belongs..." msgstr "Βάλε το κομμάτι του παζλ εκεί όπου νομίζεις ότι ταιριάζει..." #: ../lib/quiz_history.py:219 msgid "Please enter your year of birth." msgstr "Παρακαλώ, βάλε την ημερομηνία γέννησής σου." #: ../lib/electro_sp.py:240 ../lib/memory_sp.py:283 msgid "Please, choose a set of cards." msgstr "ύΠαρακαλώ, διάλεξε ένα σύνολο καρτών." #: ../lib/wipe.py:156 #, fuzzy msgid "Please, choose a set of images." msgstr "Παρακαλώ, διάλεξε ένα σύνολο εικόνων για παζλ." #: ../lib/puzzle.py:302 msgid "Please, choose a set of puzzle images." msgstr "Παρακαλώ, διάλεξε ένα σύνολο εικόνων για παζλ." #: ../lib/pong.py:373 msgid "Pong" msgstr "Pong" #: ../lib/simon_sp.py:167 msgid "Press the Start button with your finger." msgstr "Πάτησε το κουμπί Έναρξη με το δάκτυλό σου." #: ../lib/fourrow.py:145 ../lib/puzzle.py:236 ../lib/puzzle.py:259 #: ../SPHelpText.py:138 msgid "Puzzle" msgstr "Παζλ" #: ../SPMainCore.py:729 ../SPMainCore.py:872 msgid "Question ?" msgstr "Ερώτηση ;" #: ../SPMainCore.py:814 msgid "Quit ?" msgstr "Έξοδος ;" #: ../lib/quiz.py:134 #, fuzzy msgid "Quiz" msgstr "Κουίζ Μαθηματικών" #: ../lib/quiz_history.py:242 msgid "Quiz history" msgstr "Κουίζ Ιστορίας" #: ../lib/quiz_royal.py:108 msgid "Quiz royal" msgstr "Βασιλικό Κουίζ" #: ../lib/quiz_math.py:111 #, fuzzy msgid "" "Remember, the order of operations is multiplication or division and followed " "by addition or subtraction." msgstr "" "Να θυμάσαι, η σειρά των πράξεων είναι: πρώτα πολλαπλασιασμός ή διαίρεση και, " "μετά, πρόσθεση ή αφαίρεση." #: ../lib/dltr.py:434 ../SPMainCore.py:1023 msgid "Results" msgstr "Αποτελέσματα" #: ../SPMainCore.py:1027 msgid "Save image" msgstr "Αποθήκευση εικόνας" #: ../lib/quiz_sayings.py:96 msgid "Sayings Quiz" msgstr "Κουίζ με Ρητά" #: ../lib/dltr.py:378 msgid "Score:" msgstr "Βαθμολογία:" #: ../SPHelpText.py:126 #, fuzzy msgid "Select Language" msgstr "Γλώσσα" #: ../SPMenu.py:334 msgid "" "Select an activity and click on the button, the activity will be started." msgstr "Διάλεξε μια δραστηριότητα, κάνε κλικ στο κουμπί και αυτή θα ξεκινήσει." #: ../SPMainCore.py:953 msgid "Set volume level" msgstr "" #: ../SPHelpText.py:127 ../SPHelpText.py:128 msgid "Settings" msgstr "" #: ../lib/ichanger.py:296 msgid "" "Several images from the past will appear on the screen.\n" "Look carefully at them and remember what you see." msgstr "" "Πολλές εικόνες από το παρελθόν θα εμφανισθούν στην οθόνη.\n" "Κοίταξέ τες προσεκτικά και απομνημόνευσε αυτά που βλέπεις." #: ../lib/simon_sp.py:155 msgid "Simon_sp" msgstr "" #: ../lib/pong.py:385 msgid "Single play - Hit the ball against the wall." msgstr "Ένας παίχτης - Χτύπα τη μπάλα στον τοίχο." #: ../lib/soundmemory.py:188 msgid "Soundmemory" msgstr "Παιχνίδι μνήμης με ήχους" #: ../lib/spinbottle.py:196 msgid "Spin the bottle" msgstr "" #: ../lib/dltr.py:261 ../lib/ichanger.py:321 ../lib/memory_sp.py:430 msgid "Start" msgstr "Έναρξη" #: ../lib/spinbottle.py:129 ../lib/synonyms.py:365 msgid "Starting a new exercise" msgstr "Εναρξη μιας νέας δραστηριότητας" #: ../SPMainCore.py:650 #, python-format msgid "Starting level %s" msgstr "Επίπεδο έναρξης %s" #: ../SPMainCore.py:834 msgid "Stopping timers, please wait..." msgstr "Τερματισμός των χρονόμετρων, παρακαλώ περιμένετε..." #: ../lib/spinbottle.py:120 ../lib/synonyms.py:118 msgid "Suggestions:" msgstr "Υποδείξεις:" #: ../lib/synonyms.py:140 msgid "Synonyms" msgstr "Συνώνυμα" #: ../lib/quiz_text.py:103 msgid "Text Quiz" msgstr "Κουίζ Κειμένου" #: ../lib/simon_sp.py:169 msgid "The blocks will light up randomly along with sound clues." msgstr "Κουίζ με Ρητά" #: ../lib/packid.py:499 msgid "The aim of the game:" msgstr "Σκοπός του παιχνιδιού:" #: ../lib/billiard.py:295 ../lib/dltr.py:214 ../lib/electro_sp.py:193 #: ../lib/fallingletters.py:193 ../lib/findit_sp.py:220 ../lib/findsound.py:126 #: ../lib/fishtank.py:250 ../lib/fourrow.py:127 ../lib/ichanger.py:295 #: ../lib/memory_sp.py:206 ../lib/numbers_sp.py:230 ../lib/photoalbum.py:186 #: ../lib/pong.py:381 ../lib/puzzle.py:244 ../lib/quiz_general.py:158 #: ../lib/quiz_history.py:250 ../lib/quiz_math.py:105 ../lib/quiz_melody.py:110 #: ../lib/quiz_picture.py:102 ../lib/quiz.py:142 ../lib/quiz_royal.py:116 #: ../lib/quiz_sayings.py:104 ../lib/quiz_text.py:111 ../lib/simon_sp.py:163 #: ../lib/soundmemory.py:196 ../lib/spinbottle.py:204 ../lib/synonyms.py:150 #: ../lib/wipe.py:110 msgid "The aim of this activity:" msgstr "Ο σκοπός αυτής της δραστηριότητας:" #: ../lib/findit_sp.py:225 msgid "The arrows to the left take you to the previous image." msgstr "Τα βέλη προς τα αριστερά θα σε μεταφέρουν στην προηγούμενη εικόνα." #: ../lib/pong.py:383 msgid "The classic pong game where you must hit a ball with your bat." msgstr "" "Το κλασικό παιχνίδι πιγκ πογκ, στο οποίο πρέπει να χτυπάς τη μπάλα με τη " "ρακέτα:" #: ../lib/electro_sp.py:244 ../lib/memory_sp.py:287 ../lib/puzzle.py:306 msgid "The difficulty of the set increases from left to right." msgstr "Η δυσκολία στο σύνολο αυτό, αυξάνει από τα αριστερά προς τα δεξιά." #: ../lib/billiard.py:300 ../lib/billiard.py:306 msgid "" "The fewer hits you need to get the ball in the hole, the more points you get." msgstr "" "Όσο λιγότερα χτυπήματα κάνεις για να βάλεις τη μπάλα στην τρύπα, τόσο " "περισσότερους βαθμούς παίρνεις." #: ../lib/electro_sp.py:194 msgid "The game is to match pairs of pictures" msgstr "Το παιγνίδι συνίσταται στο να ταιριάξεις τα ζευγάρια εικόνων." #: ../lib/packid.py:711 msgid "" "The last level is only available when you finish the first three levels " "without errors." msgstr "" "Το τελευταίο επίπεδο είναι διαθέσιμο όταν θα έχεις τελειώσει\n" "τα τρία πρώτα επίπεδα χωρίς λάθη." #: ../lib/billiard.py:299 msgid "The longer you hold the left button the harder it will hit the ball." msgstr "" "Όσο περισσότερο κρατάς πατημένο το αριστερό πλήκτρο, τόσο δυνατότερα θα " "χτυπήσεις τη μπάλα." #: ../lib/packid.py:723 msgid "The word to find is: " msgstr "Η λέξη που πρέπει να βρες είναι: " #: ../lib/numbers_sp.py:234 msgid "Then push the 'BEGIN' button. The numbers will disappear." msgstr "" #: ../lib/packid.py:501 msgid "There are thee levels with three words each." msgstr "Υπάρχουν τρία επίπεδα, με τρεις λέξεις το καθένα." #: ../lib/pong.py:384 msgid "There are three modes to choose from:" msgstr "Υπάρχουν τρία επίπεδα για να διαλέξεις:" #: ../SPMainCore.py:1525 #, python-format msgid "" "There was an error in %s. Please check the logs and inform the developers" msgstr "" "Υπήρξε ένα σφάλμα στο %s. Παρακαλώ, έλεγξε το αρχείο καταγραφής και " "ενημέρωσε τους δημιουργούς." #: ../SPHelpText.py:46 #, python-format msgid "" "There was an error in the database this can be caused by many things but " "most of the time it's caused by the fact that your version of the database " "doesn't match the version of the program. I will backup your original " "database and then replace it with a new one. The original database is now " "called sp.db_back and it's placed in %s" msgstr "" "Υπήρξε ένα σφάλμα στη βάση δεδομένων, που μπορεί να προκλήθηκε από πολλούς " "παράγοντες. Τις περισσότερες φορές οφείλεται στο γεγονός ότι η έκδοση της " "βάσης δεδομένων δεν αντιστοιχεί με την έκδοση του προγράμματος. Το πρόγραμμα " "θα κρατήσει αυτόματα ένα αντίγραφο ασφαλείας της βάσης δεδομένων και θα την " "αντικαταστήσει με μια νέα. Η νέα βάση δεδομένων θα ονομάζεται sp.db_back και " "θα βρίσκεται στο %s" #: ../lib/billiard.py:319 ../lib/electro_sp.py:215 ../lib/fallingletters.py:214 #: ../lib/findit_sp.py:244 ../lib/findsound.py:158 ../lib/fishtank.py:270 #: ../lib/fourrow.py:234 ../lib/ichanger.py:316 ../lib/memory_sp.py:228 #: ../lib/numbers_sp.py:257 ../lib/packid.py:523 ../lib/photoalbum.py:206 #: ../lib/pong.py:406 ../lib/puzzle.py:266 ../lib/quiz_general.py:181 #: ../lib/quiz_history.py:273 ../lib/quiz_picture.py:124 ../lib/quiz.py:169 #: ../lib/quiz_royal.py:138 ../lib/simon_sp.py:189 ../lib/soundmemory.py:217 #: ../lib/spinbottle.py:229 ../lib/synonyms.py:174 ../lib/wipe.py:135 #, python-format msgid "This activity has %s levels" msgstr "Η δραστηριότητα έχει %s επίπεδα" #: ../lib/dltr.py:215 msgid "" "This activity is known as the daily training which is a collection of " "activities." msgstr "" "Αυτή η δραστηριότητα είναι γνωστή σαν καθημερινή προπόνηση και πρόκειται για " "μία συλλογή δραστηριοτήτων." #: ../SPMenu.py:333 msgid "This is the menu used to select an activity." msgstr "Από αυτό το μενού γίνεται η επιλογή μιας δραστηριότητας." #: ../lib/fourrow.py:133 msgid "Tip: Try creating multiple winning scenario's." msgstr "" #: ../SPMainCore.py:919 #, python-format msgid "Tip:%s" msgstr "Υπόδειξη:%s" #: ../lib/quizengine.py:800 #, python-format msgid "" "To little questions found in %s for locale '%s', found %s questions should " "be at least 10" msgstr "" #: ../lib/fourrow.py:132 msgid "" "To win the game you'll need four red pills lined up after each other " "horizontally, vertically or diagonal." msgstr "" #: ../lib/ichanger.py:298 msgid "" "Touch the 'START' button on the right.\n" "The images will dissappear and when they return, one will have changed.\n" "Touch the picture which has changed." msgstr "" "Πάτησε το κουμπί 'ΕΝΑΡΞΗ' στα δεξιά.\n" "Οι εικόνες θα εξαφανισθούν και όταν επιστρέψουν, μία απο αυτές θα έχει " "αλλάξει.\n" "Ακούμπησε την εικόνα που έχει αλλάξει." #: ../lib/packid.py:500 msgid "Try to 'eat' all the letters in the appropriated order." msgstr "Προσπάθησε να \"καταβροχθίσεις\" όλα τα γράμματα με τη σωστή σειρά." #: ../lib/numbers_sp.py:235 msgid "" "Try to find the numbers, in the correct order and from low to high, by " "touching them on the screen." msgstr "" #: ../lib/packid.py:504 msgid "Try to find the way out while eating the fruits for extra points and" msgstr "" "Προσπάθησε να βρεις την έξοδο, ενώ καταβροχθίζεις φρούτα για περισσότερους " "πόντους" #: ../lib/fourrow.py:128 msgid "Try to get four in a row in any possible direction." msgstr "" #: ../lib/fishtank.py:251 msgid "Try to remove the fish by clicking on them with the mouse." msgstr "" "Προσπάθησε να αφαιρέσεις κάθε ψάρι που εμφανίζεται, κάνοντας κλικ επάνω του " "με το ποντίκι." #: ../lib/simon_sp.py:164 msgid "Try to repeat the sequence of sounds played." msgstr "Δοκίμασε να επαναλάβεις την σειρά των ήχων που ακούστηκαν." #: ../lib/fallingletters.py:194 msgid "Type the falling letters on the keyboard before they hit the ground." msgstr "" "Πληκτρολόγησε τα γράμματα που πέφτουν, πριν αυτά ακουμπήσουν στο έδαφος." #: ../SPHelpText.py:123 msgid "Update BrainTrainerPlus" msgstr "" #: ../SPMenu.py:335 msgid "Use the 'sub menu' buttons for the different activity menus" msgstr "" "Χρησιμοποίησε τα κουμπιά 'υπομενού' για τα μενού των διαφόρων δραστηριοτήτων." #: ../SPMenu.py:350 msgid "Use the menu below to choose between the different game categories" msgstr "" "Χρησιμοποίησε το παρακάτω μενού για να διαλέξεις ανάμεσα στις διάφορες " "κατηγορίες παιγνιδιών." #: ../lib/billiard.py:298 msgid "Use the right mousebutton to aim and the left button to hit the ball." msgstr "" "Χρησιμοποίησε το δεξί πλήκτρο του ποντικιού για να σημαδέψεις και το " "αριστερό για να χτυπήσεις τη μπάλα." #: ../lib/pong.py:579 msgid "Use these keys on your keyboard to control the bat." msgstr "" "Χρησιμοποιήστε αυτά τα πλήκτρα στο πληκτρολόγιό σου, για να ελέγξεις τη " "ρακέτα." #: ../SPMainCore.py:465 #, python-format msgid "User: %s" msgstr "Χρήστης: %s" #: ../SPHelpText.py:117 #, fuzzy msgid "Usermanagement" msgstr "Όνομα χρήστη:" #: ../SPgdm.py:104 msgid "Username:" msgstr "Όνομα χρήστη:" #: ../lib/simon_sp.py:170 msgid "" "When the flashing stops you will be prompted to repeat the sequence by " "touching the coloured blocks." msgstr "" "Όταν σταματήσει το αναβοσβήσιμο, θα ειδοποιηθείς να επαναλάβεις την ίδια " "σειρά, αγγίζοντας τα χρωματιστά μπλόκα." #: ../lib/packid.py:502 msgid "When you have finished all the levels, without making to much mistakes" msgstr "" "Όταν θα έχεις τελειώσει όλα τα επίπεδα, χωρίς να έχεις κάνει πολλά λάθη " #: ../lib/findit_sp.py:223 msgid "" "When you spot a difference, touch it with your finger.\n" "You can click the question mark in the middle of the screen if you need a " "hint." msgstr "" "Όταν βρεις μια διαφορά, άγγιξέ την με το δάκτυλό σου.\n" "Μπορείς να κάνεις κλικ στο ερωτηματικό, στη μέση της οθόνης, αν χρειάζεσαι " "μία συμβουλή." #: ../lib/soundmemory.py:199 msgid "" "When you touch the picture you will hear a sound.\n" "Match the image with others that make the same sound,to get points." msgstr "" "Όταν αγγίξεις την εικόνα. θα ακούσεις έναν ήχο.\n" "Ταίριαξε την εικόνα με άλλες, που κάνουν τον ίδιο ήχο, για να πάρεις βαθμούς." #: ../lib/wipe.py:102 msgid "Wipe" msgstr "" #: ../lib/wipe.py:112 msgid "Wipe with your finger on the screen to uncover the picture." msgstr "" #: ../SPMainCore.py:729 ../SPMainCore.py:733 ../SPMainCore.py:734 #: ../SPMainCore.py:872 msgid "Yes" msgstr "Ναι" #: ../lib/fourrow.py:130 msgid "" "You can vertically drop a red pill in a desired column by pressing that " "exact column." msgstr "" #: ../lib/dltr.py:374 msgid "You have finished the daily training module." msgstr "Τελείωσες την ενότητα της καθημερινής προπόνησης." #: ../lib/billiard.py:296 msgid "You have to make the blue ball enter the hole (in level 1)" msgstr "Πρέπει να βάλεις τη μπλε μπάλα στην τρύπα (Επίπεδο 1)" #: ../SPMainCore.py:728 msgid "You play very good, do you want to try the next level ?" msgstr "Παίζεις πολύ καλά. Μήπως θέλεις να προσπαθήσεις το επόμενο επίπεδο ;" #: ../lib/electro_sp.py:196 msgid "" "You select the pictures by touching them.\n" "As you progress through the star levels more pairs appear to match." msgstr "" "Επιλέγεις τις εικόνες ακουμπώντας τες.\n" "Καθώς προχωράς με τα επίπεδα των αστεριών, όλο και περισσότερα ζευγάρια θα " "φαίνονται να ταιριάζουν." #: ../lib/numbers_sp.py:231 msgid "You will see various numbers scattered around the screen." msgstr "" #: ../lib/billiard.py:617 msgid "You won!!" msgstr "Κέρδισες!" #: ../lib/dltr.py:376 msgid "Your average results per group are:" msgstr "Ο μέσος όρος των αποτελεσμάτων σου, για κάθε ομάδα είναι:" #: ../SPMainCore.py:1033 #, python-format msgid "" "Your image is saved at:\n" "%s" msgstr "" "Η εικόνα σου αποθηκεύτηκε στο:\n" "%s" #: ../lib/dltr.py:375 msgid "Your results are:" msgstr "Τα αποτελέσματά σου είναι:" #: ../lib/billiard.py:297 msgid "and the red ones in levels 2 and 3." msgstr "και τις κόκκινες στα επίπεδα 2 και 3." #: ../lib/spinbottle.py:118 #, fuzzy msgid "beginning with the letter: " msgstr "Φτιάξε μια λέξη με το γράμμα:" #: ../lib/packid.py:505 msgid "funny sounds :-)" msgstr "και διασκεδαστικούς ήχους :-)" #: ../lib/billiard.py:604 ../lib/billiard.py:618 msgid "points" msgstr "βαθμοί" #: ../lib/quiz.py:157 #, python-format msgid "question id: %s" msgstr "Κωδικός ερώτησης: %s" #: ../lib/quiz_general.py:134 #, python-format msgid "" "xml file %s is missing, this shouldn't happen, contact the %s developers" msgstr "" "Το αρχείο xml %s λείπει. Αυτό δεν θα έπρεπε να συμβαίνει. Ελάτε σε επαφή με " "τους %s developers" #~ msgid "All the data was stored succesfully." #~ msgstr "Όλα τα δεδομένα αποθηκεύτηκαν με επιτυχία." #~ msgid "Aquarium mouse training, difficulty: *" #~ msgstr "Εξάσκηση στο ποντίκι με ενυδρείο, δυσκολία: *" #~ msgid "" #~ "At the start of the game, a photograph of an animal is shown, above the " #~ "picture the name of the animal is written." #~ msgstr "" #~ "Με το ξεκίνημα του παιχνιδιού, εμφανίζεται η φωτογραφία ενός ζώου και " #~ "κάτω από αυτήν είναι γραμμένο το όνομά του." #~ msgid "" #~ "At the top of the screen, you will see a picture on the screen with a " #~ "related question." #~ msgstr "" #~ "Στο πανω μέρος της οθόνης, θα δεις μια εικόνα στην οθόνη, με μια σχετική " #~ "ερώτηση." #~ msgid "Billiard, difficulty: **/***" #~ msgstr "Μπιλιάρδο, δυσκολία: **/***" #~ msgid "Childsplay_sp information" #~ msgstr "Πληροφορίες Childsplay_sp" #~ msgid "Childsplay_sp question" #~ msgstr "Ερώτηση του Childsplay_sp" #~ msgid "Childsplay_sp results diagram" #~ msgstr "Διάγραμμα αποτελεσμάτων του Childsplay_sp" #~ msgid "Click image to enlarge" #~ msgstr "Κάντε κλικ στην εικόνα για να την μεγενθύνετε" #~ msgid "Click the buttons in the right order" #~ msgstr "Κάνε κλικ σε όλα τα κουμπιά με τη σωστή σειρά." #~ msgid "Current user: %s" #~ msgstr "Ενεργός χρήστης: %s" #~ msgid "Difficulty : 2 - 4 years" #~ msgstr "Δυσκολία : 2 - 4 ετών" #~ msgid "Difficulty : 4-7 years" #~ msgstr "Δυσκολία: 4-7 ετών" #~ msgid "Difficulty : 4-8 years" #~ msgstr "Δυσκολία: 4-7 ετών" #~ msgid "" #~ "Each part of the screen can also be clicked on to make the animal scream, " #~ "his name or initial spoken." #~ msgstr "" #~ "Μπορούμε να κάνουμε κλικ σε οποιοδήποτε σημείο της οθόνης για να " #~ "ακούσουμε τη φωνή του ζώου, το όνομά του ή το αρχικό του ονόματός του." #~ msgid "Exercises" #~ msgstr "Ασκήσεις" #~ msgid "" #~ "Failed to get the dbase data, try to run childsplay_sp first to setup the " #~ "dbase" #~ msgstr "" #~ "Η εφαρμογή απέτυχε να λάβει δεδομένα από τη βάση. Προσπάθησε να " #~ "ξεκινήσεις το Childsplay_sp πρώτα για να δημιουργηθεί η βάση δεδομένων." #~ msgid "" #~ "Failed to parse the logfile, please contact the developers.\n" #~ "Message was: %s" #~ msgstr "" #~ "Αποτυχία συλλογής του αρχείου σύνδεσης logfile. Παρακαλώ, ελάτε σε επαφή " #~ "με τους developers.\n" #~ "Το μήνυμα ήταν: %s" #~ msgid "Find the characters" #~ msgstr "Βρες τους χαρακτήρες" #~ msgid "Flashcards" #~ msgstr "Κάρτες Flash" #~ msgid "Flashcards, difficulty: *" #~ msgstr "Κάρτες Flash, δυσκολία: *" #~ msgid "General knowledge Quiz" #~ msgstr "Κουίζ γενικών γνώσεων" #~ msgid "" #~ "Give your login name in the box and hit the login button. Alternatively " #~ "you can just hit the login button and run Childsplay_sp in anonymous mode." #~ msgstr "" #~ "Δώσε το όνομα σύνδεσης στο κενό πεδίο και πάτα το κουμπί της σύνδεσης. " #~ "Διαφορετικά, μπορείς να πιέσεις το κουμπί της σύνδεσης για να ανοίξεις το " #~ "Childsplay_sp σε ανώνυμη λειτουργία." #~ msgid "Goal of the activity" #~ msgstr "Ο σκοπός αυτής της δραστηριότητας" #~ msgid "" #~ "If the menu consist of more layers, sub menus, you can always get back to " #~ "the main menu by using the 'exit' button." #~ msgstr "" #~ "Εάν το μενού αποτελείται από περισσότερα επίπεδα ή υπομενού, μπορείς να " #~ "επιστρέψεις στο κεντρικό μενού πατώντας στο κουμπί \"Έξοδος\"." #~ msgid "" #~ "If you start the GUI for the first time there's no username and password " #~ "set so you should just hit the 'Login' button.\n" #~ " You will get a warning message telling you to set as soon as possible a " #~ "username and password.\n" #~ "You can set a username and password in the GUI.\n" #~ " Go to 'Settings' -> 'Set password'." #~ msgstr "" #~ "Εάν είναι η πρώτη φορά που ανοίγεις το γραφικό περιβάλλον της εφαρμογής, " #~ "τότε δεν υπάρχει όνομα χρήστη ούτε κωδικός πρόσβασης, γι' αυτό πάτα το " #~ "κουμπί 'Σύνδεση'.\n" #~ "Θα λάβεις ένα μήνυμα που θα σε ειδοποιεί να καθορίσεις όνομα χρήστη και " #~ "κωδικό πρόσβασης όσο το δυνατόν γρηγορότερα.\n" #~ "Μπορείς να ορίσεις όνομα χρήστη και κωδικό πρόσβασης στο γραφικό " #~ "περιβάλλον εργασίας.\n" #~ "Πήγαινε στις 'Ρυθμίσεις' > 'Ορισμός κωδικού πρόσβασης'." #~ msgid "" #~ "In the last level the fish needs to be clicked two times while they try " #~ "to escape." #~ msgstr "" #~ "Στο τελευταίο επίπεδο, για να αφαιρεθεί κάθε ψάρι, ενώ προσπαθεί να " #~ "ξεφύγει, απαιτείται διπλό κλικ." #~ msgid "" #~ "In this file you can set a number of options to change the game play." #~ msgstr "" #~ "Σε αυτό το αρχείο μπορείτε να ρυθμίσετε τις επιλογές για να αλλάξετε τον " #~ "τρόπο που παίζεται το παιχνίδι." #~ msgid "Info" #~ msgstr "Πληροφορίες" #~ msgid "Keyboard training, difficulty: *" #~ msgstr "Εξάσκηση στο πληκτρολόγιο, δυσκολία: *" #~ msgid "Listen to the sound and click on the character to which it belongs." #~ msgstr "Άκουσε τον ήχο και κάνε κλικ στο γράμμα που ανήκει." #~ msgid "Lower case characters memory, difficulty: */**" #~ msgstr "Παιχνίδι μνήμης με πεζά γράμματα, δυσκολία: */**" #~ msgid "LowercaseMemory" #~ msgstr "Μνημονική τεχνική για τα μικρά γράμματα" #~ msgid "Memory, difficulty: */**" #~ msgstr "Μνήμη, δυσκολία: */**" #~ msgid "Memory/Alphabet" #~ msgstr "Μνήμη/Αλφάβητο" #~ msgid "Menu" #~ msgstr "Μενού" #~ msgid "No data available for this level" #~ msgstr "Δεν υπάρχουν διαθέσιμα δεδομένα για αυτό το επίπεδο" #, fuzzy #~ msgid "Number of levels : 5" #~ msgstr "Αριθμός επιπέδων: 3" #~ msgid "Numbers memory, difficulty: */**" #~ msgstr "Αριθμητική μνήμη, δυσκολία: */**" #~ msgid "Ok" #~ msgstr "Εντάξει" #~ msgid "On the left the initial of the animal name is shown." #~ msgstr "Στ' αριστερά εμφανίζεται το αρχικό γράμμα του ονόματος του ζώου." #~ msgid "Packid, difficulty: **/***" #~ msgstr "Πάκμαν, δυσκολία: **/***" #~ msgid "Pause" #~ msgstr "Παύση" #~ msgid "Percentile scores for level %s" #~ msgstr "Ποσοστά για το επίπεδο %s" #~ msgid "Play" #~ msgstr "Παίξε" #~ msgid "Pong classic tennis game, difficulty: *" #~ msgstr "Pong, κλασικό παιχνίδι τένις, δυσκολία: *" #~ msgid "Put all the pieces in the correct order." #~ msgstr "Βάλε όλα τα κομμάτια στη σωστή σειρά." #~ msgid "Puzzle, difficulty: */**" #~ msgstr "Παζλ, δυσκολία: */**" #~ msgid "Request for help" #~ msgstr "Αναζήτηση βοήθειας" #~ msgid "Save" #~ msgstr "Αποθήκευση" #~ msgid "Scores reached in level %s" #~ msgstr "Η βαθμολογία φτάνει μέχρι το επίπεδο %s" #~ msgid "Screenshot\n" #~ msgstr "Στιγμιότυπο οθόνης\n" #~ msgid "Short description\n" #~ msgstr "Σύντομη περιγραφή\n" #~ msgid "Sound association, difficulty: *" #~ msgstr "Συσχέτιση ήχων, δυσκολία: *" #~ msgid "Sound association, difficulty: */**" #~ msgstr "Συσχέτιση ήχων, δυσκολία: */**" #~ msgid "Sound memory, difficulty: */**" #~ msgstr "Ακουστική μνήμη, δυσκολία: */**" #~ msgid "The aim of this activity" #~ msgstr "Ο σκοπός αυτής της δραστηριότητας:" #~ msgid "" #~ "The faster you find all the characters the better your score will be." #~ msgstr "" #~ "Όσο γρηγορότερα βρεις όλα τα γράμματα, τόσο μεγαλύτερη βαθμολογία θα " #~ "πετύχεις." #~ msgid "" #~ "The game has a configuration file called 'pongrc', located in the ." #~ "childsplay directory of your homedirectory." #~ msgstr "" #~ "Το παιχνίδι διαθέτει ένα αρχείο ρυθμίσεων που ονομάζεται 'pongrc', που " #~ "βρίσκεται στο φάκελο .childsplay του καταλόγου σας." #~ msgid "The table 'activity_options' doesn't exist in the dbase" #~ msgstr "Ο πίνακας 'επιλογές_δραστηριότητας' δεν υπάρχει στη βάση δεδομένων." #~ msgid "" #~ "Then the animal name is spoken ('the dog'), and the animal makes his cry " #~ "('woof' 'cui-cui' etc.)." #~ msgstr "" #~ "Κατόπιν ακούγεται το όνομα του ζώου ('ο σκύλος'), καθώς και η φωνή του " #~ "('γουφ' 'κούι-κούι', κλπ.)." #~ msgid "" #~ "There was a problem while replacing the rows in the database.\n" #~ "The exception was:\n" #~ "%s" #~ msgstr "" #~ "Υπήρξε ένα πρόβλημα κατά την αντικατάσταση των γραμμών στη βάση " #~ "δεδομένων.\n" #~ "Η εξαίρεση ήταν:\n" #~ "%s" #~ msgid "This activity belongs to the category: %s" #~ msgstr "Η δραστηριότητα ανήκει στην κατηγορία: %s" #~ msgid "" #~ "This database table holds the values used when displaying the results " #~ "graph in an activity.\n" #~ "The column 'MU-value' holds an integer between 0 and 10 indicating the " #~ "average score.(the dark blue line).\n" #~ "The column 'SIGMA-value' holds an integer between 0 an 100 indicating the " #~ "standard deviation in percentage, probably always 50. (the light blue " #~ "box)\n" #~ "\n" #~ "Click on the row you want to alter and then click on the field you wish " #~ "to edit.\n" #~ "You cannot edit the 'Activity name' field.\n" #~ "Use the 'Save' button to store the changes in the database." #~ msgstr "" #~ "Αυτή η βάση δεδομένων περιέχει τις τιμές που χρησιμοποιούνται όταν " #~ "εμφανίζεται το γράφημα των αποτελεσμάτων σε μια δραστηριότητα.\n" #~ "Η στήλη 'MU-value' περιέχει έναν ακέραιο αριθμό μεταξύ 0 και 10 που " #~ "δείχνει τον μέσο όρο της βαθμολογίας επίδοσης.(η σκούρα μπλε γραμμή).\n" #~ "Η στήλη 'SIGMA-value' περιέχει έναν ακέραιο αριθμό μεταξύ 0 και 100 που " #~ "δείχνει τη σταθερή απόκλιση σε ποσοστό, πιθανόν να είναι πάντα 50." #~ "(ανοιχτό μπλε πεδίο)\n" #~ "\n" #~ "Κάνε κλικ στη γραμμή που θέλεις να τροποποιήσεις και μετά κάνε κλικ στο " #~ "πεδίο που θέλεις να επεξεργαστείς.\n" #~ "Δεν μπορείς να επεξεργαστείς το πεδίο 'Όνομα δραστηριότητας'.\n" #~ "Πάτησε το κουμπί 'Αποθήκευση' για να αποθηκεύσεις τις αλλαγές στη βάση " #~ "δεδομένων." #~ msgid "This is a game to teach the alphabet to very little childrens." #~ msgstr "" #~ "Αυτή είναι μια δραστηριότητα εκμάθησης του αλφαβήτου από πολύ μικρά " #~ "παιδιά." #~ msgid "Tips" #~ msgstr "Υποδείξεις" #~ msgid "Type of activity" #~ msgstr "Τύπος δραστηριότητας" #~ msgid "Upper case characters memory, difficulty: */**" #~ msgstr "Παιχνίδι μνήμης με κεφαλαία γράμματα, δυσκολία: */**" #~ msgid "UppercaseMemory" #~ msgstr "Μνημονική τεχνική για τα κεφαλαία γράμματα" #~ msgid "Warning !" #~ msgstr "Προειδοποίηση !" #~ msgid "" #~ "When a letter is hit on the keyboard, a corresponding animal is shown." #~ msgstr "" #~ "Όταν πατάμε ένα γράμμα στο πληκτρολόγιο, εμφανίζεται το αντίστοιχο ζώο." #~ msgid "" #~ "When you can't find the correct character after a certain period of time " #~ "a box will be drawn around it." #~ msgstr "" #~ "Αν δεν βρεις το σωστό γράμμα μετά από ένα ορισμένο χρονικό διάστημα, " #~ "σχηματίζεται ένα περίγραμμα γύρω από αυτό." #~ msgid "XML data file is incorrect, please contact the maintainers." #~ msgstr "" #~ "Τα δεδομένα XML είναι εσφαλμένα. Παρακαλώ, ελάτε σε επαφή με τους " #~ "συντηρητές." #~ msgid "" #~ "You can add your own images by placing them in the following directory: " #~ msgstr "Μπορείτε να προσθέσετε τις δικές σας εικόνες τοποθετώντας..." #~ msgid "You can hit the 'graph' button to see your results per level." #~ msgstr "" #~ "Μπορείς να δεις τις επιδόσεις σου, κάνοντας κλικ στο εικονίδιο του " #~ "γραφήματος." #~ msgid "" #~ "Your language, %s, is not supported.\n" #~ " I will now switch to English" #~ msgstr "" #~ "Η γλώσσα σας, %s, δεν υποστηρίζεται.\n" #~ "Θα χρησιμοποιηθεί η αγγλική γλώσσα." #~ msgid "" #~ "Your language, %s, is supported but you must install\n" #~ " the 'alphabet_sounds_%s' package.\n" #~ " Look for it in your GNU/Linux distro or at www.schoolsplay.org.\n" #~ " I will now switch to English" #~ msgstr "" #~ "Η γλώσσα σας, %s, υποστηρίζεται αλλά θα πρέπει να\n" #~ "εγκαταστήσετε το πακέτο 'alphabet_sounds_%s'.\n" #~ "Αναζητήστε το στη διανομή GNU/Linux που χρησιμοποιείτε\n" #~ "ή στη διεύθυνση www.schoolsplay.org.\n" #~ "Θα χρησιμοποιηθεί η αγγλική γλώσσα." #~ msgid "badger" #~ msgstr "ασβός" #~ msgid "bear" #~ msgstr "αρκούδα" #~ msgid "beaver" #~ msgstr "κάστορας" #~ msgid "bee" #~ msgstr "μέλισσα" #~ msgid "bison" #~ msgstr "βίσωνας" #~ msgid "blackbird" #~ msgstr "κοτσύφι" #~ msgid "bull" #~ msgstr "ταύρος" #~ msgid "camel" #~ msgstr "καμήλα" #~ msgid "chimp" #~ msgstr "χιμπαντζής" #~ msgid "cow" #~ msgstr "αγελάδα" #~ msgid "crow" #~ msgstr "κάργα" #~ msgid "cuckoo" #~ msgstr "κούκος" #~ msgid "deer" #~ msgstr "ελάφι" #~ msgid "doe" #~ msgstr "ζαρκάδι" #~ msgid "dog" #~ msgstr "σκύλος" #~ msgid "dolphin" #~ msgstr "δελφίνι" #~ msgid "donkey" #~ msgstr "γαϊδούρι" #~ msgid "dromedary" #~ msgstr "καμήλα" #~ msgid "duck" #~ msgstr "πάπια" #~ msgid "elephant" #~ msgstr "ελέφαντας" #~ msgid "ferret" #~ msgstr "κουνάβι" #~ msgid "filename: %s" #~ msgstr "όνομα αρχείου: %s" #~ msgid "fly" #~ msgstr "μύγα" #~ msgid "fox" #~ msgstr "αλεπού" #~ msgid "frog" #~ msgstr "βάτραχος" #~ msgid "gander" #~ msgstr "χήνα" #~ msgid "giraffe" #~ msgstr "καμηλοπάρδαλη" #~ msgid "goat" #~ msgstr "κατσίκα" #~ msgid "gorilla" #~ msgstr "γορίλας" #~ msgid "grasshopper" #~ msgstr "τριζόνι" #~ msgid "hen" #~ msgstr "κότα" #~ msgid "hippopotamus" #~ msgstr "ιπποπόταμος" #~ msgid "hornet" #~ msgstr "σφήκα" #~ msgid "horse" #~ msgstr "άλογο" #~ msgid "iguana" #~ msgstr "ιγκουάνα" #~ msgid "kangaroo" #~ msgstr "καγκουρό" #~ msgid "koala" #~ msgstr "κοάλα" #~ msgid "lark" #~ msgstr "κορυδαλλός" #~ msgid "lion" #~ msgstr "λιοντάρι" #~ msgid "marmot" #~ msgstr "αρκτόμυς" #~ msgid "mountaingoat" #~ msgstr "αγριοκάτσικο" #~ msgid "mouse" #~ msgstr "ποντίκι" #~ msgid "nandou" #~ msgstr "ναντού" #~ msgid "orca" #~ msgstr "όρκα" #~ msgid "otter" #~ msgstr "φώκια" #~ msgid "owl" #~ msgstr "κουκουβάγια" #~ msgid "peacock" #~ msgstr "παγώνι" #~ msgid "penguin" #~ msgstr "πιγκουϊνος" #~ msgid "pig" #~ msgstr "γουρούνι" #~ msgid "pigeon" #~ msgstr "περιστέρι" #~ msgid "quetzal" #~ msgstr "κετζάλ" #~ msgid "rabbit" #~ msgstr "κουνέλι" #~ msgid "ram" #~ msgstr "κριάρι" #~ msgid "rat" #~ msgstr "αρουραίος" #~ msgid "rooster" #~ msgstr "κόκορας" #~ msgid "seagull" #~ msgstr "γλάρος" #~ msgid "tiger" #~ msgstr "τίγρης" #~ msgid "tucan" #~ msgstr "τουκάν" #~ msgid "turkey" #~ msgstr "γαλοπούλα" #~ msgid "vulture" #~ msgstr "γύπας" #~ msgid "wallaby" #~ msgstr "γουάλαμπι" #~ msgid "wapiti" #~ msgstr "ελάφι" #~ msgid "whale" #~ msgstr "φάλαινα" #~ msgid "wildboar" #~ msgstr "αγριογούρουνο" #~ msgid "wombat" #~ msgstr "φασκωλόμυς" #~ msgid "xanthia" #~ msgstr "πεταλούδα" #~ msgid "yak" #~ msgstr "γιακ" #~ msgid "zebra" #~ msgstr "ζέμπρα" #~ msgid "zebu" #~ msgstr "ζεμπού" childsplay-3.3/po/childsplay_pt_PT.po0000644000175000017500000011364213271013626016451 0ustar stasstas# translation of childsplay_sp_pt_PT.po to # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Flávio Moringa , 2009. msgid "" msgstr "" "Project-Id-Version: childsplay_sp_pt_PT 1.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-07-09 11:38+0200\n" "PO-Revision-Date: 2009-03-16 12:56+0100\n" "Last-Translator: Stas Zytkiewicz \n" "Language-Team: \n" "Language: pt_PT\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" #: ../SPHelpText.py:76 msgid "" "\n" "\n" "Touch the 'Play' button to continue the game." msgstr "" #: ../SPHelpText.py:71 msgid "" "\n" "\n" "Touch the changed picture." msgstr "" #: ../lib/packid.py:503 msgid "(max two per word), you can play the last level which is a maze." msgstr "" "(máximo dois por palavra), podes jogar o último nível que é um labirinto." #: ../SPMenu.py:348 msgid "A collection of braintrain games for seniors." msgstr "" #: ../lib/memory_sp.py:216 #, fuzzy msgid "Accuracy is more important than speed." msgstr "Exactidão é mais importante que velocidade" #: ../SPMainCore.py:478 #, fuzzy msgid "Activity :" msgstr "Actividade : %s" #: ../SPMainCore.py:590 #, python-format msgid "Activity : %s" msgstr "Actividade : %s" #: ../lib/dltr.py:377 #, fuzzy msgid "Activity:" msgstr "Actividade : %s" #: ../lib/fourrow.py:131 msgid "All pills, both red and yellow, stack on each other." msgstr "" #: ../SPMenu.py:349 msgid "" "All the games have there own help page, just start a game and hit the stars " "on top of the screen to select another difficulty." msgstr "" #: ../SPHelpText.py:142 msgid "Alphabet" msgstr "Alfabeto" #: ../lib/fallingletters.py:207 msgid "Alphabet/Keyboardtraining" msgstr "Alfabeto/Treinodoteclado" #: ../lib/spinbottle.py:119 ../lib/synonyms.py:117 msgid "Already found:" msgstr "" #: ../SPMainCore.py:277 msgid "An error occurred and BraintrainerPlus was restarted" msgstr "" #: ../lib/quiz_math.py:106 msgid "Answer the math questions." msgstr "" #: ../lib/quiz_general.py:159 ../lib/quiz_history.py:251 #: ../lib/quiz_melody.py:111 ../lib/quiz_picture.py:103 ../lib/quiz.py:143 #: ../lib/quiz_royal.py:117 ../lib/quiz_sayings.py:105 ../lib/quiz_text.py:112 msgid "Answer the quiz questions." msgstr "" #: ../SPMainCore.py:871 msgid "" "Are sure you want to quit the dailytraining ? All the results will be lost." msgstr "" #: ../lib/puzzle.py:247 msgid "At the bottom you'll see a image of the complete puzzle." msgstr "" #: ../lib/quiz.py:145 msgid "At the top of the screen, you will see a general knowledge question." msgstr "" #: ../lib/quiz_royal.py:119 msgid "" "At the top of the screen, you will see a question about a member of Royalty" msgstr "" #: ../lib/quiz_picture.py:105 msgid "At the top of the screen, you will see a question about a picture." msgstr "" #: ../lib/quiz_general.py:161 msgid "" "At the top of the screen, you will see a question about general knowledge." msgstr "" #: ../lib/quiz_math.py:108 msgid "At the top of the screen, you will see a question about math problem." msgstr "" #: ../lib/quiz_sayings.py:107 msgid "At the top of the screen, you will see a question about sayings." msgstr "" #: ../lib/quiz_melody.py:113 msgid "" "At the top of the screen, you will see a question about the song playing." msgstr "" #: ../lib/quiz_history.py:253 msgid "" "At the top of the screen, you will see a question from general knowledge " "question from the selected period." msgstr "" #: ../lib/quiz_text.py:114 msgid "At the top of the screen, you will see a question." msgstr "" #: ../lib/billiard.py:345 msgid "Balls" msgstr "Bolas" #: ../lib/numbers_sp.py:190 msgid "Begin" msgstr "" #: ../lib/quiz_general.py:162 ../lib/quiz_history.py:254 #: ../lib/quiz_math.py:109 ../lib/quiz_melody.py:114 ../lib/quiz_picture.py:106 #: ../lib/quiz.py:146 ../lib/quiz_royal.py:120 ../lib/quiz_sayings.py:108 #: ../lib/quiz_text.py:115 msgid "" "Below it are a choice of possible answers.\n" "Touch the correct answer." msgstr "" #: ../lib/billiard.py:287 msgid "Billiard" msgstr "Bilhar" #: ../lib/billiard.py:273 msgid "Billiard Game" msgstr "Jogo de Bilhar" #: ../SPMainCore.py:814 msgid "Cancel" msgstr "" #: ../SPHelpText.py:121 ../SPHelpText.py:122 msgid "Change password" msgstr "" #: ../lib/ichanger.py:323 ../lib/numbers_sp.py:194 msgid "Cheat" msgstr "" #: ../SPMainCore.py:227 #, fuzzy, python-format msgid "Childsplay_sp - educational activities, using theme:%s" msgstr "Childsplay_sp - actividades educativas" #: ../SPgdm.py:73 msgid "Childsplay_sp login" msgstr "Autenticação do Childsplay_sp" #: ../lib/pong.py:425 msgid "Choose the game to play:" msgstr "Escolhe o jogo a jogar:" #: ../lib/memory_sp.py:207 msgid "Classic memory game where you have to find pairs of cards." msgstr "Jogo de memória clássico onde tens de encontrar pares de cartas." #: ../lib/soundmemory.py:197 msgid "Classic memory game where you have to find pairs of sounds." msgstr "Jogo de memória clássico onde tens de encontrar pares de sons." #: ../SPMainCore.py:953 msgid "Close" msgstr "" #: ../lib/fourrow.py:536 msgid "Congratulations, try again ?" msgstr "" #: ../SPHelpText.py:129 msgid "Content import" msgstr "" #: ../lib/electro_sp.py:203 ../lib/fallingletters.py:201 #: ../lib/soundmemory.py:205 msgid "Correctness is more important than speed" msgstr "Exactidão é mais importante que velocidade" #: ../lib/numbers_sp.py:241 #, fuzzy msgid "Correctness is more important than speed." msgstr "Exactidão é mais importante que velocidade" #: ../SPMainCore.py:1244 ../SPMainCore.py:1417 #, python-format msgid "Current activity : %s" msgstr "Actividade actual: %s" #: ../SPHelpText.py:119 msgid "Daily training sequence" msgstr "" #: ../SPHelpText.py:53 msgid "Default group 1" msgstr "" #: ../SPHelpText.py:54 msgid "Default group 2" msgstr "" #: ../lib/dltr.py:434 msgid "Details" msgstr "" #: ../SPMainCore.py:813 msgid "Do you really want to quit ?" msgstr "De certeza que queres sair?" #: ../lib/electro_sp.py:185 msgid "Electro_sp" msgstr "" #: ../SPMainCore.py:575 ../SPMainCore.py:583 msgid "Error !" msgstr "" #: ../SPMainCore.py:582 #, python-format msgid "" "Error constructing activity\n" "%s" msgstr "" #: ../SPMainCore.py:574 #, python-format msgid "" "Error importing activity\n" "%s" msgstr "" #: ../lib/fallingletters.py:185 msgid "Fallingletters" msgstr "LetrasEmQueda" #: ../lib/packid.py:722 msgid "Find all the letters in the right order." msgstr "Encontra todas as letras na ordem certa." #: ../lib/findit_sp.py:212 msgid "Findit" msgstr "" #: ../lib/findsound.py:118 msgid "Findsound" msgstr "Encontrarsom" #: ../lib/fishtank.py:242 msgid "Fishtank" msgstr "Aquário" #: ../lib/fourrow.py:119 msgid "Fourrow" msgstr "" #: ../lib/pong.py:400 ../SPHelpText.py:143 msgid "Fun" msgstr "Diversão" #: ../lib/packid.py:516 msgid "Fun/Alphabet" msgstr "Diversão/Alfabeto" #: ../lib/billiard.py:312 msgid "Fun/Miscellaneous" msgstr "Diversão/Vários" #: ../lib/fishtank.py:263 msgid "Fun/Mousetraining" msgstr "Diversão/Treinodorato" #: ../SPHelpText.py:124 msgid "Gamemanagement" msgstr "" #: ../SPMainCore.py:1021 #, fuzzy, python-format msgid "Generated by %s version %s for the %s activity" msgstr "Gerado pelo Childsplay_sp versão %s para a actividade %s" #: ../SPHelpText.py:118 msgid "Groupmanagement" msgstr "" #: ../lib/spinbottle.py:208 ../lib/synonyms.py:154 msgid "Hit the 'Begin' button to start." msgstr "" #: ../SPMainCore.py:658 msgid "Hit the 'space' key or a mousebutton to skip the countdown" msgstr "" "Carrega na tecla de 'espaço' ou num botão do rato para saltar a contagem " "decrescente" #: ../lib/pong.py:573 msgid "Hit the Escape key to stop." msgstr "" #: ../lib/ichanger.py:287 msgid "Ichanger" msgstr "" #: ../lib/dltr.py:250 msgid "If you ready to start the next activity, hit the 'start' button." msgstr "" #: ../lib/fallingletters.py:195 msgid "" "In the last two levels the uppercase and lowercase are mixed but you don't " "have to match the case only the letter" msgstr "" "Nos dois últimos níveis as maiúsculas e as minúsculas estão misturadas, mas " "basta acertares na letra" #: ../lib/pong.py:388 msgid "In the multiplayer modes, the one who has 11 points wins." msgstr "Nos modos multi-jogador, aquele que tiver 11 pontos ganha." #: ../SPMainCore.py:1034 ../SPMainCore.py:1254 msgid "Information" msgstr "Informação" #: ../SPMainCore.py:932 #, fuzzy, python-format msgid "Information about %s" msgstr "Informação" #: ../SPHelpText.py:58 msgid "" "It seems that we cannot use the sound card right now and because this " "activity is all about sound, we just quit. This problem can also be caused " "by another application which uses the soundcard right now." msgstr "" "Parece que não conseguimos usar a placa de som neste momento e como esta " "actividade é fundamentalmente sobre som, então simplesmente saímos. Este " "problema pode também ser causado por outra aplicação que esteja a usar a " "placa de som neste momento." #: ../SPHelpText.py:139 msgid "Keyboardtraining" msgstr "Treinodeteclado" #: ../SPHelpText.py:141 msgid "Language" msgstr "Linguagem" #: ../lib/findsound.py:127 msgid "Listen to the sound and click on the image to which it belongs." msgstr "Ouve o som e clica na imagem a que pertence." #: ../SPgdm.py:122 msgid "Login" msgstr "Entrar" #: ../lib/numbers_sp.py:233 msgid "Look carefully and try to remember their positions on the screen." msgstr "" #: ../lib/puzzle.py:253 msgid "Look closely at the complete puzzle picture at the bottom." msgstr "" #: ../lib/memory_sp.py:210 msgid "" "Look closely at the pictures, when you have them memorized touch 'START'.\n" "The pictures turn over, you must match the pair of cards." msgstr "" #: ../lib/synonyms.py:116 msgid "Make a word with the letter: " msgstr "" #: ../lib/quiz_math.py:122 ../SPHelpText.py:137 msgid "Math" msgstr "Matemática" #: ../lib/quiz_math.py:97 #, fuzzy msgid "Math Quiz" msgstr "Matemática" #: ../lib/quiz_melody.py:102 msgid "Melody Quiz" msgstr "" #: ../SPHelpText.py:65 msgid "" "Memorize the pictures.\n" "\n" "One of these pictures will be replaced by a new picture.\n" "\n" "Touch the 'Start' button to begin the game." msgstr "" #: ../lib/electro_sp.py:209 ../lib/memory_sp.py:198 ../lib/memory_sp.py:222 #: ../lib/quiz_melody.py:126 ../lib/quiz.py:163 ../lib/quiz_sayings.py:120 #: ../lib/quiz_text.py:127 ../lib/simon_sp.py:183 ../lib/soundmemory.py:211 #: ../SPHelpText.py:136 msgid "Memory" msgstr "Memória" #: ../lib/simon_sp.py:177 msgid "Mind the sound sequence as well as the colors sequence." msgstr "" #: ../lib/dltr.py:227 ../lib/findit_sp.py:237 ../lib/findsound.py:139 #: ../lib/ichanger.py:310 ../lib/numbers_sp.py:247 ../lib/photoalbum.py:200 #: ../lib/quiz_general.py:174 ../lib/quiz_history.py:266 #: ../lib/quiz_picture.py:118 ../lib/quiz_royal.py:132 ../lib/spinbottle.py:222 #: ../lib/synonyms.py:167 ../lib/wipe.py:124 ../SPHelpText.py:144 msgid "Miscellaneous" msgstr "Vários" #: ../SPHelpText.py:140 msgid "Mousetraining" msgstr "Treinoderato" #: ../SPMainCore.py:928 ../SPMainCore.py:935 msgid "Movie" msgstr "" #: ../lib/pong.py:387 msgid "Multi player - Play against another player." msgstr "Multi-jogador - Joga contra outro jogador." #: ../lib/pong.py:386 msgid "Multi player against the computer - Try to defeat the computer." msgstr "Multi-jogador contra o computador - Tenta ganhar ao computador." #: ../lib/wipe.py:83 msgid "New" msgstr "" #: ../SPMainCore.py:729 ../SPMainCore.py:872 ../SPMainCore.py:875 msgid "No" msgstr "Não" #: ../lib/photoalbum.py:233 #, python-format msgid "" "No photo albums found !\n" "You should place your pictures inside directories called 'Album_1', " "'Album_2' etc\n" " Place these directories inside %s" msgstr "" #: ../lib/photoalbum.py:188 msgid "Number of levels : 1" msgstr "" #: ../lib/spinbottle.py:210 ../lib/synonyms.py:156 msgid "Number of levels : 6" msgstr "" #: ../lib/numbers_sp.py:222 #, fuzzy msgid "Numbers_sp" msgstr "MemóriaNúmeros" #: ../lib/dltr.py:434 ../lib/dltr.py:438 ../SPMainCore.py:575 #: ../SPMainCore.py:583 ../SPMainCore.py:814 ../SPMainCore.py:819 #: ../SPMainCore.py:820 ../SPMainCore.py:924 ../SPMainCore.py:1023 #: ../SPMainCore.py:1034 ../SPMainCore.py:1254 msgid "OK" msgstr "" #: ../lib/synonyms.py:152 #, python-format msgid "" "On the next screen you'll find a keyboard, try to make as much words as " "possible that begin with the letter '%s'." msgstr "" #: ../lib/spinbottle.py:206 #, python-format msgid "" "On the next screen you'll find a keyboard, try to name as much %s as " "possible with the same letter." msgstr "" #: ../lib/simon_sp.py:166 msgid "On the screen are four blocks of different colours." msgstr "" #: ../lib/findit_sp.py:221 msgid "" "On the screen you will see two almost identical pictures.\n" "However, there are differences between the images." msgstr "" #: ../lib/spinbottle.py:207 ../lib/synonyms.py:153 msgid "Only words from the dictionary are allowed." msgstr "" #: ../lib/packid.py:491 msgid "Packid" msgstr "Packid" #: ../lib/photoalbum.py:178 msgid "Photoalbum" msgstr "" #: ../lib/quiz_picture.py:94 msgid "Picture Quiz" msgstr "" #: ../SPHelpText.py:120 msgid "Picture import" msgstr "" #: ../lib/fourrow.py:538 msgid "Pity, try again ?" msgstr "" #: ../lib/puzzle.py:245 msgid "Place the puzzle piece on the right where you think it belongs..." msgstr "" #: ../lib/quiz_history.py:219 msgid "Please enter your year of birth." msgstr "" #: ../lib/electro_sp.py:240 ../lib/memory_sp.py:283 msgid "Please, choose a set of cards." msgstr "" #: ../lib/wipe.py:156 msgid "Please, choose a set of images." msgstr "" #: ../lib/puzzle.py:302 msgid "Please, choose a set of puzzle images." msgstr "" #: ../lib/pong.py:373 msgid "Pong" msgstr "Jogo de Ténis" #: ../lib/simon_sp.py:167 msgid "Press the Start button with your finger." msgstr "" #: ../lib/fourrow.py:145 ../lib/puzzle.py:236 ../lib/puzzle.py:259 #: ../SPHelpText.py:138 msgid "Puzzle" msgstr "Puzzle" #: ../SPMainCore.py:729 ../SPMainCore.py:872 msgid "Question ?" msgstr "" #: ../SPMainCore.py:814 #, fuzzy msgid "Quit ?" msgstr "Sair" #: ../lib/quiz.py:134 #, fuzzy msgid "Quiz" msgstr "Matemática" #: ../lib/quiz_history.py:242 msgid "Quiz history" msgstr "" #: ../lib/quiz_royal.py:108 msgid "Quiz royal" msgstr "" #: ../lib/quiz_math.py:111 msgid "" "Remember, the order of operations is multiplication or division and followed " "by addition or subtraction." msgstr "" #: ../lib/dltr.py:434 ../SPMainCore.py:1023 msgid "Results" msgstr "" #: ../SPMainCore.py:1027 msgid "Save image" msgstr "" #: ../lib/quiz_sayings.py:96 msgid "Sayings Quiz" msgstr "" #: ../lib/dltr.py:378 msgid "Score:" msgstr "" #: ../SPHelpText.py:126 #, fuzzy msgid "Select Language" msgstr "Linguagem" #: ../SPMenu.py:334 msgid "" "Select an activity and click on the button, the activity will be started." msgstr "" "Escolhe uma actividade e clica no botão, a actividade vai ser iniciada." #: ../SPMainCore.py:953 msgid "Set volume level" msgstr "" #: ../SPHelpText.py:127 ../SPHelpText.py:128 msgid "Settings" msgstr "" #: ../lib/ichanger.py:296 msgid "" "Several images from the past will appear on the screen.\n" "Look carefully at them and remember what you see." msgstr "" #: ../lib/simon_sp.py:155 msgid "Simon_sp" msgstr "" #: ../lib/pong.py:385 msgid "Single play - Hit the ball against the wall." msgstr "Um jogador - Atira a bola contra a parede." #: ../lib/soundmemory.py:188 msgid "Soundmemory" msgstr "Memóriasonora" #: ../lib/spinbottle.py:196 msgid "Spin the bottle" msgstr "" #: ../lib/dltr.py:261 ../lib/ichanger.py:321 ../lib/memory_sp.py:430 msgid "Start" msgstr "" #: ../lib/spinbottle.py:129 ../lib/synonyms.py:365 #, fuzzy msgid "Starting a new exercise" msgstr "A iniciar o nível %s" #: ../SPMainCore.py:650 #, python-format msgid "Starting level %s" msgstr "A iniciar o nível %s" #: ../SPMainCore.py:834 msgid "Stopping timers, please wait..." msgstr "A parar os temporizadores, por favor espera..." #: ../lib/spinbottle.py:120 ../lib/synonyms.py:118 msgid "Suggestions:" msgstr "" #: ../lib/synonyms.py:140 msgid "Synonyms" msgstr "" #: ../lib/quiz_text.py:103 #, fuzzy msgid "Text Quiz" msgstr "Matemática" #: ../lib/simon_sp.py:169 msgid "The blocks will light up randomly along with sound clues." msgstr "" #: ../lib/packid.py:499 msgid "The aim of the game:" msgstr "O objectivo do jogo:" #: ../lib/billiard.py:295 ../lib/dltr.py:214 ../lib/electro_sp.py:193 #: ../lib/fallingletters.py:193 ../lib/findit_sp.py:220 ../lib/findsound.py:126 #: ../lib/fishtank.py:250 ../lib/fourrow.py:127 ../lib/ichanger.py:295 #: ../lib/memory_sp.py:206 ../lib/numbers_sp.py:230 ../lib/photoalbum.py:186 #: ../lib/pong.py:381 ../lib/puzzle.py:244 ../lib/quiz_general.py:158 #: ../lib/quiz_history.py:250 ../lib/quiz_math.py:105 ../lib/quiz_melody.py:110 #: ../lib/quiz_picture.py:102 ../lib/quiz.py:142 ../lib/quiz_royal.py:116 #: ../lib/quiz_sayings.py:104 ../lib/quiz_text.py:111 ../lib/simon_sp.py:163 #: ../lib/soundmemory.py:196 ../lib/spinbottle.py:204 ../lib/synonyms.py:150 #: ../lib/wipe.py:110 msgid "The aim of this activity:" msgstr "O objectivo desta actvidade:" #: ../lib/findit_sp.py:225 msgid "The arrows to the left take you to the previous image." msgstr "" #: ../lib/pong.py:383 msgid "The classic pong game where you must hit a ball with your bat." msgstr "Clássico jogo de ténis onde tens de bater na bola com a tua raquete." #: ../lib/electro_sp.py:244 ../lib/memory_sp.py:287 ../lib/puzzle.py:306 msgid "The difficulty of the set increases from left to right." msgstr "" #: ../lib/billiard.py:300 ../lib/billiard.py:306 msgid "" "The fewer hits you need to get the ball in the hole, the more points you get." msgstr "" "Quanto menos pancadas precisares para meter a bola no buraco, mais pontos " "ganhas." #: ../lib/electro_sp.py:194 msgid "The game is to match pairs of pictures" msgstr "" #: ../lib/packid.py:711 msgid "" "The last level is only available when you finish the first three levels " "without errors." msgstr "" "O último nível apenas está disponível quando acabares os primeiros três " "níveis sem erros." #: ../lib/billiard.py:299 msgid "The longer you hold the left button the harder it will hit the ball." msgstr "" "Quanto mais tempo mantiveres premido o botão esquerdo, com mais força vais " "bater na bola." #: ../lib/packid.py:723 msgid "The word to find is: " msgstr "A palavra a encontrar é:" #: ../lib/numbers_sp.py:234 msgid "Then push the 'BEGIN' button. The numbers will disappear." msgstr "" #: ../lib/packid.py:501 msgid "There are thee levels with three words each." msgstr "Há três níveis com três palavras cada." #: ../lib/pong.py:384 msgid "There are three modes to choose from:" msgstr "Há três modos que podes escolher:" #: ../SPMainCore.py:1525 #, python-format msgid "" "There was an error in %s. Please check the logs and inform the developers" msgstr "" "Houve um erro em %s. Por favor verifica os históricos e informa os " "programadores" #: ../SPHelpText.py:46 #, python-format msgid "" "There was an error in the database this can be caused by many things but " "most of the time it's caused by the fact that your version of the database " "doesn't match the version of the program. I will backup your original " "database and then replace it with a new one. The original database is now " "called sp.db_back and it's placed in %s" msgstr "" "Houve um erro na base de dados. Isto pode ser causado por diversas coisas " "mas a maioria das vezes é causado pelo facto de a tua versão da base de " "dados não coincidir com a versão do programa. Vou criar uma salvaguarda da " "tua base de dados original e depois substitui-la por uma nova. A base de " "dados original chama-se agora sp.db_back e está disponível em %s" #: ../lib/billiard.py:319 ../lib/electro_sp.py:215 ../lib/fallingletters.py:214 #: ../lib/findit_sp.py:244 ../lib/findsound.py:158 ../lib/fishtank.py:270 #: ../lib/fourrow.py:234 ../lib/ichanger.py:316 ../lib/memory_sp.py:228 #: ../lib/numbers_sp.py:257 ../lib/packid.py:523 ../lib/photoalbum.py:206 #: ../lib/pong.py:406 ../lib/puzzle.py:266 ../lib/quiz_general.py:181 #: ../lib/quiz_history.py:273 ../lib/quiz_picture.py:124 ../lib/quiz.py:169 #: ../lib/quiz_royal.py:138 ../lib/simon_sp.py:189 ../lib/soundmemory.py:217 #: ../lib/spinbottle.py:229 ../lib/synonyms.py:174 ../lib/wipe.py:135 #, python-format msgid "This activity has %s levels" msgstr "Esta actividade tem %s níveis" #: ../lib/dltr.py:215 msgid "" "This activity is known as the daily training which is a collection of " "activities." msgstr "" #: ../SPMenu.py:333 msgid "This is the menu used to select an activity." msgstr "Este é o menu usado para escolher uma actividade" #: ../lib/fourrow.py:133 msgid "Tip: Try creating multiple winning scenario's." msgstr "" #: ../SPMainCore.py:919 #, fuzzy, python-format msgid "Tip:%s" msgstr "Dica:" #: ../lib/quizengine.py:800 #, python-format msgid "" "To little questions found in %s for locale '%s', found %s questions should " "be at least 10" msgstr "" #: ../lib/fourrow.py:132 msgid "" "To win the game you'll need four red pills lined up after each other " "horizontally, vertically or diagonal." msgstr "" #: ../lib/ichanger.py:298 msgid "" "Touch the 'START' button on the right.\n" "The images will dissappear and when they return, one will have changed.\n" "Touch the picture which has changed." msgstr "" #: ../lib/packid.py:500 msgid "Try to 'eat' all the letters in the appropriated order." msgstr "Tentar 'comer' todas as letras na ordem certa." #: ../lib/numbers_sp.py:235 msgid "" "Try to find the numbers, in the correct order and from low to high, by " "touching them on the screen." msgstr "" #: ../lib/packid.py:504 msgid "Try to find the way out while eating the fruits for extra points and" msgstr "Tenta encontrar a saída enquanto comes as frutas para pontos extra e" #: ../lib/fourrow.py:128 msgid "Try to get four in a row in any possible direction." msgstr "" #: ../lib/fishtank.py:251 msgid "Try to remove the fish by clicking on them with the mouse." msgstr "Tenta tirar os peixes clicando neles com rato." #: ../lib/simon_sp.py:164 msgid "Try to repeat the sequence of sounds played." msgstr "" #: ../lib/fallingletters.py:194 msgid "Type the falling letters on the keyboard before they hit the ground." msgstr "Escreve no teclado as letras que caiem antes que elas atinjam o chão." #: ../SPHelpText.py:123 msgid "Update BrainTrainerPlus" msgstr "" #: ../SPMenu.py:335 msgid "Use the 'sub menu' buttons for the different activity menus" msgstr "" #: ../SPMenu.py:350 msgid "Use the menu below to choose between the different game categories" msgstr "" #: ../lib/billiard.py:298 msgid "Use the right mousebutton to aim and the left button to hit the ball." msgstr "" "Utiliza o botão direito do rato para apontar e o botão esquerdo para bater " "na bola." #: ../lib/pong.py:579 msgid "Use these keys on your keyboard to control the bat." msgstr "Usa estas teclas no teu teclado para controlar a raquete." #: ../SPMainCore.py:465 #, python-format msgid "User: %s" msgstr "Utilizador: %s" #: ../SPHelpText.py:117 #, fuzzy msgid "Usermanagement" msgstr "Utilizador:" #: ../SPgdm.py:104 msgid "Username:" msgstr "Utilizador:" #: ../lib/simon_sp.py:170 msgid "" "When the flashing stops you will be prompted to repeat the sequence by " "touching the coloured blocks." msgstr "" #: ../lib/packid.py:502 msgid "When you have finished all the levels, without making to much mistakes" msgstr "Quando acabares todos os níveis, sem fazer muitos erros" #: ../lib/findit_sp.py:223 msgid "" "When you spot a difference, touch it with your finger.\n" "You can click the question mark in the middle of the screen if you need a " "hint." msgstr "" #: ../lib/soundmemory.py:199 msgid "" "When you touch the picture you will hear a sound.\n" "Match the image with others that make the same sound,to get points." msgstr "" #: ../lib/wipe.py:102 msgid "Wipe" msgstr "" #: ../lib/wipe.py:112 msgid "Wipe with your finger on the screen to uncover the picture." msgstr "" #: ../SPMainCore.py:729 ../SPMainCore.py:733 ../SPMainCore.py:734 #: ../SPMainCore.py:872 msgid "Yes" msgstr "Sim" #: ../lib/fourrow.py:130 msgid "" "You can vertically drop a red pill in a desired column by pressing that " "exact column." msgstr "" #: ../lib/dltr.py:374 msgid "You have finished the daily training module." msgstr "" #: ../lib/billiard.py:296 msgid "You have to make the blue ball enter the hole (in level 1)" msgstr "Tens de fazer com que a bola azul entre no buraco(no nível 1)" #: ../SPMainCore.py:728 msgid "You play very good, do you want to try the next level ?" msgstr "" #: ../lib/electro_sp.py:196 msgid "" "You select the pictures by touching them.\n" "As you progress through the star levels more pairs appear to match." msgstr "" #: ../lib/numbers_sp.py:231 msgid "You will see various numbers scattered around the screen." msgstr "" #: ../lib/billiard.py:617 msgid "You won!!" msgstr "Ganhaste!!" #: ../lib/dltr.py:376 msgid "Your average results per group are:" msgstr "" #: ../SPMainCore.py:1033 #, python-format msgid "" "Your image is saved at:\n" "%s" msgstr "" "A tua imagem está guardada em:\n" "%s" #: ../lib/dltr.py:375 msgid "Your results are:" msgstr "" #: ../lib/billiard.py:297 msgid "and the red ones in levels 2 and 3." msgstr "e as vermelhas nos níveis 2 e 3." #: ../lib/spinbottle.py:118 msgid "beginning with the letter: " msgstr "" #: ../lib/packid.py:505 msgid "funny sounds :-)" msgstr "sons divertidos :-)" #: ../lib/billiard.py:604 ../lib/billiard.py:618 msgid "points" msgstr "pontos" #: ../lib/quiz.py:157 #, python-format msgid "question id: %s" msgstr "" #: ../lib/quiz_general.py:134 #, python-format msgid "" "xml file %s is missing, this shouldn't happen, contact the %s developers" msgstr "" #~ msgid "All the data was stored succesfully." #~ msgstr "Todos os dados foram guardados com sucesso." #~ msgid "Aquarium mouse training, difficulty: *" #~ msgstr "Treino de rato em aquário, dificuldade: *" #~ msgid "" #~ "At the start of the game, a photograph of an animal is shown, above the " #~ "picture the name of the animal is written." #~ msgstr "" #~ "No inicio do jogo, é mostrada uma fotografia de um animal, por cima da " #~ "qual está escrito o nome desse animal." #~ msgid "Billiard, difficulty: **/***" #~ msgstr "Bilhar, dificuldade:**/***" #~ msgid "Childsplay_sp information" #~ msgstr "Informação do Childsplay_sp" #~ msgid "Childsplay_sp question" #~ msgstr "Questão do Childsplay_sp" #~ msgid "Childsplay_sp results diagram" #~ msgstr "Diagrama de resultados do Childsplay_sp" #~ msgid "Click image to enlarge" #~ msgstr "Clica na imagem para aumentar" #, fuzzy #~ msgid "Click the buttons in the right order" #~ msgstr "Encontra todas as letras na ordem certa." #~ msgid "" #~ "Each part of the screen can also be clicked on to make the animal scream, " #~ "his name or initial spoken." #~ msgstr "" #~ "Cada parte do ecrã pode também ser clicada para fazer o animal gritar, o " #~ "nome dele ou a inicial." #~ msgid "Exercises" #~ msgstr "Exercícios" #~ msgid "" #~ "Failed to get the dbase data, try to run childsplay_sp first to setup the " #~ "dbase" #~ msgstr "" #~ "Falha ao obter os dados da base de dados, tenta executar primeiro " #~ "childsplay_sp para configurar a base de dados." #~ msgid "Find the characters" #~ msgstr "Encontrar os caracteres" #~ msgid "Flashcards" #~ msgstr "Cartões de memória" #~ msgid "Flashcards, difficulty: *" #~ msgstr "Cartões de memória, dificuldade: *" #~ msgid "" #~ "Give your login name in the box and hit the login button. Alternatively " #~ "you can just hit the login button and run Childsplay_sp in anonymous mode." #~ msgstr "" #~ "Coloca o teu nome de utilizador na caixa e carrega no botão de entrar. Em " #~ "alternativa podes só clicar no botão de entrar e executar o Childsplay_sp " #~ "no modo anónimo." #~ msgid "Goal of the activity" #~ msgstr "Objectivo da actividade" #~ msgid "" #~ "If the menu consist of more layers, sub menus, you can always get back to " #~ "the main menu by using the 'exit' button." #~ msgstr "" #~ "Se o menu é constituído por mais camadas, ou sub-menus, podes sempre " #~ "voltar ao menu principal utilizando o botão 'Sair'." #~ msgid "" #~ "If you start the GUI for the first time there's no username and password " #~ "set so you should just hit the 'Login' button.\n" #~ " You will get a warning message telling you to set as soon as possible a " #~ "username and password.\n" #~ "You can set a username and password in the GUI.\n" #~ " Go to 'Settings' -> 'Set password'." #~ msgstr "" #~ "Se inicias a aplicação pela primeira vez não existe utilizador nem senha " #~ "configurados, por isso basta carregar no botão 'Entrar'.\n" #~ "Vais receber uma mensagem de aviso a dizer para configurar um utilizador " #~ "e senha o mais depressa possível.\n" #~ "Podes configurar um utilizador e senha na aplicação.\n" #~ "Vai a 'Configurações' -> 'Definir senha'." #~ msgid "" #~ "In the last level the fish needs to be clicked two times while they try " #~ "to escape." #~ msgstr "" #~ "No último nível é preciso clicar nos peixes duas vezes enquanto eles " #~ "tentam escapar." #~ msgid "" #~ "In this file you can set a number of options to change the game play." #~ msgstr "" #~ "Neste ficheiro podes configurar diversas opções para mudar como se joga o " #~ "jogo." #~ msgid "Info" #~ msgstr "Informação" #~ msgid "Keyboard training, difficulty: *" #~ msgstr "Treino de teclado, dificuldade: *" #~ msgid "Listen to the sound and click on the character to which it belongs." #~ msgstr "Ouve o som e clica na personagem a que pertence." #~ msgid "Lower case characters memory, difficulty: */**" #~ msgstr "Memória de caracteres minúsculos, dificuldade: */**" #~ msgid "LowercaseMemory" #~ msgstr "MemóriaMinúsculas" #~ msgid "Memory, difficulty: */**" #~ msgstr "Memória, dificuldade:*/**" #~ msgid "Memory/Alphabet" #~ msgstr "Memória/Alfabeto" #~ msgid "Menu" #~ msgstr "Menu" #~ msgid "No data available for this level" #~ msgstr "Não existem dados disponíveis para este nível" #~ msgid "Numbers memory, difficulty: */**" #~ msgstr "Memória de números, dificuldade: */**" #~ msgid "Ok" #~ msgstr "Ok" #~ msgid "On the left the initial of the animal name is shown." #~ msgstr "Do lado esquerdo é mostrada a inicial do nome do animal." #~ msgid "Packid, difficulty: **/***" #~ msgstr "Packid, dificuldade: **/***" #~ msgid "Pause" #~ msgstr "Pausa" #~ msgid "Pong classic tennis game, difficulty: *" #~ msgstr "Jogo de ténis clássico tipo Pong, dificuldade: *" #~ msgid "Put all the pieces in the correct order." #~ msgstr "Coloca todas as peças na ordem correcta." #~ msgid "Puzzle, difficulty: */**" #~ msgstr "Puzzle, dificuldade: */**" #~ msgid "Save" #~ msgstr "Gravar" #~ msgid "Scores reached in level %s" #~ msgstr "Pontuações alcançadas no nível %s" #~ msgid "Screenshot\n" #~ msgstr "Captura de ecrã\n" #~ msgid "Short description\n" #~ msgstr "Breve descrição\n" #~ msgid "Sound association, difficulty: *" #~ msgstr "Associação de sons, dificuldade: *" #~ msgid "Sound association, difficulty: */**" #~ msgstr "Associação de sons, dificuldade: */**" #~ msgid "Sound memory, difficulty: */**" #~ msgstr "Memória sonora, dificuldade: */**" #~ msgid "The aim of this activity" #~ msgstr "O objectivo desta actividade" #~ msgid "" #~ "The faster you find all the characters the better your score will be." #~ msgstr "" #~ "Quanto mais rápido encontrares todos os personagens melhor será a tua " #~ "pontuação." #~ msgid "" #~ "The game has a configuration file called 'pongrc', located in the ." #~ "childsplay directory of your homedirectory." #~ msgstr "" #~ "O jogo tem um ficheiro de configuração chamado 'pongrc', localizado na " #~ "directoria childsplay da tua área pessoal." #~ msgid "The table 'activity_options' doesn't exist in the dbase" #~ msgstr "A tabela 'activity_options' não existe na base de dados" #~ msgid "" #~ "Then the animal name is spoken ('the dog'), and the animal makes his cry " #~ "('woof' 'cui-cui' etc.)." #~ msgstr "" #~ "Depois o nome do animal é dito ('o cão'), e o animal faz o seu som " #~ "('woof' 'cui-cui' etc.)." #~ msgid "" #~ "There was a problem while replacing the rows in the database.\n" #~ "The exception was:\n" #~ "%s" #~ msgstr "" #~ "Houve um problema ao substituir as linhas na base de dados.\n" #~ "A excepção foi \n" #~ "%s" #~ msgid "This activity belongs to the category: %s" #~ msgstr "Esta actividade pertence à categoria: %s" #~ msgid "" #~ "This database table holds the values used when displaying the results " #~ "graph in an activity.\n" #~ "The column 'MU-value' holds an integer between 0 and 10 indicating the " #~ "average score.(the dark blue line).\n" #~ "The column 'SIGMA-value' holds an integer between 0 an 100 indicating the " #~ "standard deviation in percentage, probably always 50. (the light blue " #~ "box)\n" #~ "\n" #~ "Click on the row you want to alter and then click on the field you wish " #~ "to edit.\n" #~ "You cannot edit the 'Activity name' field.\n" #~ "Use the 'Save' button to store the changes in the database." #~ msgstr "" #~ "Esta tabela da base de dados guarda os valores usados quando são " #~ "mostrados os gráficos de resultados numa actividade.\n" #~ "A coluna 'MU-value' guarda um inteiro entre 0 e 10 que indica a pontuação " #~ "média (a linha azul escura).\n" #~ "A coluna 'SIGMA-value' guarda um inteiro entre 0 e 100 que indica o " #~ "desvio padrão em percentagem, provavelmente sempre 50 (a caixa azul " #~ "claro).\n" #~ "\n" #~ "Clica na linha que queres alterar e depois clica no campo que queres " #~ "editar.\n" #~ "Não podes editar o campo 'Activity name'.\n" #~ "Usa o botão 'Gravar' para guardar as alterações na base de dados." #~ msgid "This is a game to teach the alphabet to very little childrens." #~ msgstr "Este é um jogo para ensinar o alfabeto a crianças muito pequenas." #~ msgid "Tips" #~ msgstr "Dicas" #~ msgid "Type of activity" #~ msgstr "Tipo de actividade" #~ msgid "Upper case characters memory, difficulty: */**" #~ msgstr "Memória de caracteres maiúsculos, dificuldade: */**" #~ msgid "UppercaseMemory" #~ msgstr "MemóriaMaiúsculas" #~ msgid "" #~ "When a letter is hit on the keyboard, a corresponding animal is shown." #~ msgstr "" #~ "Quando uma letra é carregada no teclado, é mostrado um animal " #~ "correspondente." #~ msgid "" #~ "When you can't find the correct character after a certain period of time " #~ "a box will be drawn around it." #~ msgstr "" #~ "Quando não consegues encontrar o personagem correcto após um determinado " #~ "período de tempo uma caixa será desenhada à volta dele." #~ msgid "" #~ "You can add your own images by placing them in the following directory: " #~ msgstr "" #~ "Podes adicionar as tuas imagens colocando-as na seguinte directoria:" #~ msgid "You can hit the 'graph' button to see your results per level." #~ msgstr "" #~ "Podes carregar no botão 'gráfico' para veres os teus resultados por nível." #~ msgid "" #~ "Your language, %s, is not supported.\n" #~ " I will now switch to English" #~ msgstr "" #~ "A tua língua, %s, não é suportada.\n" #~ " Vou agora mudar para Inglês" #~ msgid "" #~ "Your language, %s, is supported but you must install\n" #~ " the 'alphabet_sounds_%s' package.\n" #~ " Look for it in your GNU/Linux distro or at www.schoolsplay.org.\n" #~ " I will now switch to English" #~ msgstr "" #~ "A tua língua, %s, é suportada mas tens de instalar\n" #~ " o pacote 'alphabet_sounds_%s' .\n" #~ " Procura pelo pacote na tua distribuição GNU/Linux ou em www.schoolsplay." #~ "org.\n" #~ "Vou agora mudar para Inglês" #~ msgid "badger" #~ msgstr "texugo" #~ msgid "bear" #~ msgstr "urso" #~ msgid "beaver" #~ msgstr "castor" #~ msgid "bee" #~ msgstr "abelha" #~ msgid "bison" #~ msgstr "bisonte" #~ msgid "blackbird" #~ msgstr "melro" #~ msgid "bull" #~ msgstr "touro" #~ msgid "camel" #~ msgstr "camelo" #~ msgid "chimp" #~ msgstr "chimpazé" #~ msgid "cow" #~ msgstr "vaca" #~ msgid "crow" #~ msgstr "corvo" #~ msgid "cuckoo" #~ msgstr "cuco" #~ msgid "deer" #~ msgstr "veado" #~ msgid "doe" #~ msgstr "corça" #~ msgid "dog" #~ msgstr "cão" #~ msgid "dolphin" #~ msgstr "golfinho" #~ msgid "donkey" #~ msgstr "burro" #~ msgid "dromedary" #~ msgstr "dromedário" #~ msgid "duck" #~ msgstr "pato" #~ msgid "elephant" #~ msgstr "elefante" #~ msgid "ferret" #~ msgstr "furão" #~ msgid "filename: %s" #~ msgstr "nome do ficheiro: %s" #~ msgid "fly" #~ msgstr "voar" #~ msgid "fox" #~ msgstr "raposa" #~ msgid "frog" #~ msgstr "sapo" #~ msgid "gander" #~ msgstr "ganso" #~ msgid "giraffe" #~ msgstr "girafa" #~ msgid "goat" #~ msgstr "cabra" #~ msgid "gorilla" #~ msgstr "gorila" #~ msgid "grasshopper" #~ msgstr "gafanhoto" #~ msgid "hen" #~ msgstr "galinha" #~ msgid "hippopotamus" #~ msgstr "hipopótamo" #~ msgid "hornet" #~ msgstr "moscardo" #~ msgid "horse" #~ msgstr "cavalo" #~ msgid "iguana" #~ msgstr "iguana" #~ msgid "kangaroo" #~ msgstr "canguru" #~ msgid "koala" #~ msgstr "coala" #~ msgid "lark" #~ msgstr "cotovia" #~ msgid "lion" #~ msgstr "leão" #~ msgid "marmot" #~ msgstr "marmota" #~ msgid "mountaingoat" #~ msgstr "cabra" #~ msgid "mouse" #~ msgstr "rato" #~ msgid "nandou" #~ msgstr "nandou" #~ msgid "orca" #~ msgstr "orca" #~ msgid "otter" #~ msgstr "lontra" #~ msgid "owl" #~ msgstr "mocho" #~ msgid "peacock" #~ msgstr "pavão" #~ msgid "penguin" #~ msgstr "pinguim" #~ msgid "pig" #~ msgstr "porco" #~ msgid "pigeon" #~ msgstr "pombo" #~ msgid "quetzal" #~ msgstr "quetzal" #~ msgid "rabbit" #~ msgstr "coelho" #~ msgid "ram" #~ msgstr "carneiro" #~ msgid "rat" #~ msgstr "rato" #~ msgid "rooster" #~ msgstr "galo" #~ msgid "seagull" #~ msgstr "gaivota" #~ msgid "tiger" #~ msgstr "tigre" #~ msgid "tucan" #~ msgstr "tucano" #~ msgid "turkey" #~ msgstr "peru" #~ msgid "vulture" #~ msgstr "abutre" #~ msgid "wallaby" #~ msgstr "wallaby" #~ msgid "wapiti" #~ msgstr "wapiti" #~ msgid "whale" #~ msgstr "baleia" #~ msgid "wildboar" #~ msgstr "javali" #~ msgid "wombat" #~ msgstr "wombat" #~ msgid "xanthia" #~ msgstr "xanthia" #~ msgid "yak" #~ msgstr "iaque" #~ msgid "zebra" #~ msgstr "zebra" #~ msgid "zebu" #~ msgstr "zebu" childsplay-3.3/po/StatsTable0000644000175000017500000000246613271013626014641 0ustar stasstas