Hey!

On Tue, 2013-11-05 at 19:11:52 +0000, Ireneusz Imiolek wrote:
> Just a quick update. I have completed the transition to using gettext for
> i18n.

Great!

> This is kind of non standard implementation - but I have chosen the
> quickest way to convert the application with what I already had.

Sure.

> Most of
> the 'messages' are now included in .po files. I have still kept some stuff
> in the custom language files, such us numbers (need them from zero to one
> hundred - so it's easier to generate them automatically) and other stuff
> that was hard to implement with gettext.

I think some other of the messages in the <LANG>.py files would also
be good to have in the .po files, at least the hours and time. The
color ones would benefit from gettext context functions, but they do
not appear to be present in the python interface, unfortunately.

Also the po file names would also benefit from being made more
generic, so that the fallback code can choose a closer language when
available. For example using es_ES.po means that a Mexican using
es_MX.UTF-8 as locale would not fallback to use the Spanish language
(es.po) version, which would be better than no translation. The same
for a Brazilian (pt_BR) or for a non-US or British English speaker like
a Canadian (en_CA). So I'd recommend renaming es_ES.po to es.po,
pt_PT.po to pt.po and en_GB.po to en.po (and leave the other one
untouched as a specialized locale).

> @Guillem: You mentioned under one of your bug reports (
> http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=721829) that you had
> started working on the Catalan language. Did you manage to complete any of
> those translations? If you have could you please send me what you have so I
> can convert it to .po file - this would save you some time copy/pasting it
> into new file. That's just if you still have time to complete this.

(Should probably move this into a new bug report, but anyway.)

I didn't finish yet, I paused when I got stuck with the flash cards. I've
attached the partial stuff that I got in patch form. I'm missing images
for the three words with J, K and U letters. Also for Ç, had to use a
word with the letter inbetween (Calçat = Shoes), there's no meaningful
words in Catalan starting with that letter, hope that's fine. Having
the flashcard images in separate image files would make it easier to
add new ones or to assign the correct name to the correct image, but
I'm not sure if there's a particular reason to have them as sprites.

For J (Jaguar), I found this one:

  <http://openclipart.org/detail/167328/jaguar-by-frankes>

but then I think it might be a bit difficult word, probably would be
better Joguina/Joguets = Toy/Toys, but finding a nice, easily recognizable
image for toy seems a bit difficult. Jardí = Garden could be another
option, but finding an image for that might be difficult too.

For K (Kiwi), I found this one which seems to match the style of the
other flashcards (I realized later on there's already f_img6a.png):

  <http://openclipart.org/detail/129397/kiwi-by-gnokii>

For U (Ull = Eye), I found this image that I think is nice:

  <http://openclipart.org/detail/3469/-by--3469>

> If you would like to check how it works and download the new version with
> .po files - the pre-release source code is available at:
> https://drive.google.com/folderview?id=0BzzRSdFJhjQ8NHBhYTZOTGpSZE0&usp=sharing

That looks nice!

I noticed the Spanish flashcard for violin is wrong. And I'll try to
finish the Catalan translation when I've some time.

Thanks,
Guillem
diff --git a/classes/lang.py b/classes/lang.py
index 23648ac..a763913 100644
--- a/classes/lang.py
+++ b/classes/lang.py
@@ -19,10 +19,10 @@ class Language():
         self.all_lng = ["en_gb", "en_us", "pl", "gr", "es","pt","it","fr","de","ru","fi"]
         self.ok_lng = ["en_gb", "en_us", "pl", "gr", "es","pt","it"]
         """
-        self.flag_files = ["flag_uk.png","flag_us.png","flag_es.png","flag_gr.png","flag_it.png", "flag_pl.png","flag_pt.png","flag_ru.png","flag_de.png","flag_fi.png","flag_fr.png"]
-        self.lang_titles = ["English", "American English", "Español", "Ελληνικά", "Italiano", "Polski", "Português", "Русский", "Deutsch", "Suomalainen", "Français"]
-        self.all_lng = ["en_gb", "en_us", "es", "gr","it", "pl" ,"pt","ru","de","fi","fr"]
-        self.ok_lng = ["en_gb", "en_us", "es", "gr","it", "pl" ,"pt"]
+        self.flag_files = ["flag_uk.png","flag_us.png","flag_ca.png","flag_es.png","flag_gr.png","flag_it.png", "flag_pl.png","flag_pt.png","flag_ru.png","flag_de.png","flag_fi.png","flag_fr.png"]
+        self.lang_titles = ["English", "American English", "Català", "Español", "Ελληνικά", "Italiano", "Polski", "Português", "Русский", "Deutsch", "Suomalainen", "Français"]
+        self.all_lng = ["en_gb", "en_us", "ca", "es", "gr","it", "pl" ,"pt","ru","de","fi","fr"]
+        self.ok_lng = ["en_gb", "en_us", "ca", "es", "gr","it", "pl" ,"pt"]
         
         if self.config.settings[0] not in self.all_lng:
             self.config.reset_settings()
@@ -65,6 +65,13 @@ class Language():
             self.lang_file = languages.pl
             self.kbrd = languages.kbrd.pl
             self.kbrd_course_mod = languages.kbrd.pl_course
+        elif self.lang == 'ca':
+            import languages.ca
+            import languages.word_lists.ca_di
+            #self.voice = ["-s 170","-a 100","-p 80","-vca+m1"]
+            self.voice = ["-vca+m1"]
+            self.di = languages.word_lists.ca_di.di
+            self.lang_file = languages.ca
         elif self.lang == 'es':
             import languages.es
             import languages.word_lists.es_di
diff --git a/game_boards/game002.py b/game_boards/game002.py
index 0b129a1..d090918 100644
--- a/game_boards/game002.py
+++ b/game_boards/game002.py
@@ -21,7 +21,7 @@ class Board(gd.BoardGame):
         color2 = ex.hsv_to_rgb(235,15,245)
 
         font_color = ex.hsv_to_rgb(227,255,50)
-        data = [15,10]
+        data = [15,11]
         #stretch width to fit the screen size
         x_count = self.get_x_count(data[1],even=None)
         if x_count > 15:
@@ -59,6 +59,8 @@ class Board(gd.BoardGame):
         self.board.add_unit(3,8,data[0]-3,1,classes.board.Label,["Anton Kayukov (Антон Каюков)","(uncompleted - anyone with spare time willing to help?)"],color2,"",6)
         self.board.add_unit(0,9,3,1,classes.board.Label,"Finnish",color1,"",6)
         self.board.add_unit(3,9,data[0]-3,1,classes.board.Label,"Not Translated",color1,"",6)
+        self.board.add_unit(0,10,3,1,classes.board.Label,"Catalan",color1,"",6)
+        self.board.add_unit(3,10,data[0]-3,1,classes.board.Label,["Guillem Jover","http://www.hadrons.org/~guillem/"],color1,"",6)
 
         self.outline_all(1,1)
         for each in self.board.units:
diff --git a/languages/append.py b/languages/append.py
index 6a00d2b..6009607 100755
--- a/languages/append.py
+++ b/languages/append.py
@@ -9,7 +9,7 @@ a = os.path.split(os.path.abspath(inspect.getsourcefile(where_am_I)))[0]
 os.chdir(a)
 
 #list of language files
-langs = ["en_gb.py", "en_us.py", "pl.py", "gr.py", "es.py","pt.py","fr.py","it.py","de.py","ru.py","fi.py"]
+langs = ["ca.py", "en_gb.py", "en_us.py", "pl.py", "gr.py", "es.py","pt.py","fr.py","it.py","de.py","ru.py","fi.py"]
 
 argv = sys.argv
 if len(argv) == 2:
diff --git a/languages/ca.py b/languages/ca.py
new file mode 100644
index 0000000..be4f89d
--- /dev/null
+++ b/languages/ca.py
@@ -0,0 +1,405 @@
+# -*- coding: utf-8 -*-
+
+#FAO Translators:
+#First of all thank you for your interest in translating this game,
+#I will be grateful if you could share it with the community -
+#if possible please send it back to my email, and I'll add it to the next version.
+
+#The translation does not have to be exact as long as it makes sense and fits in its location
+#(if it doesn't I'll try to either make the font smaller or make the area wider - where possible).
+#The color names in other languages than English are already in smaller font.
+
+#when translating the "d" dictionary please translate the values
+#and leave keys as they are (the keys are sometimes shortened to save on space)
+
+#Example in German:
+# - d["Welcome back."] = "Welcome back in the game."
+# + d["Welcome back."] = "Willkommen zurück im Spiel."
+
+d=dict()
+
+#word lists
+shape_names = ["Triangle equilàter", "Triangle isòsceles", "Triangle obtús", "Triangle rectangle", "Triangle agut", "Quadrat", "Rectangle", "Trapezoide rectangle", "Trapezoide isòsceles", "Rombe", "Paral·lelogram", "Pentàgon", "Hexàgon", "Cercle", "El·lipse"]
+
+solid_names = ["Cub", "Prisma Quadrat", "Prisma triangular", "Piràmide quadrada", "Piràmide triangular", "Esfera", "Cilindre", "Con", "Torus"]
+numbers = ['u', 'dos', 'tres', 'quatre', 'cinc', 'sis', 'set', 'vuit', 'nou', 'deu', 'onze', 'dotze', 'tretze', 'catorze', 'quinze', 'setze', 'disset', 'divuit', 'dinou', 'vint', 'vint-i-u', 'vint-i-dos', 'vint-i-tres', 'vint-i-quatre', 'vint-i-cinc', 'vint-i-sis', 'vint-i-set', 'vint-i-vuit', 'vint-i-nou']
+numbers2090 = ['vint', 'trenta', 'quaranta', 'cinquanta', 'seixanta', 'setanta', 'vuitanta', 'noranta']
+
+def n2txt(n, twoliner = False):
+    "takes a number from 1 - 99 and returns it back in a word form, ie: 63 returns 'sixty three'."
+    if 0 < n < 30:
+        return numbers[n-1]
+    elif 30 <= n < 100:
+        m = n % 10
+        tens = numbers2090[(n//10)-2]
+        if m == 0:
+            return tens
+        elif m > 0:
+            ones = numbers[m-1]
+            if twoliner:
+                return [tens, ones]
+            else:
+                return tens + " " + ones
+    return ""
+
+#The following 2 lines are not to be translated but replaced with a sequence of words starting in each of the letters of your alphabet in order, best if these words have a corresponding picture in images/flashcard_images.jpg. The second line has the number of the image that the word describes.
+#The images are numbered from left to bottom such that the top left is numbered 0, the last image is 73, if none of the available things have names that start with any of the letters we can add new pictures.
+# XXX: j*, kiwi, ull missing
+d['abc_flashcards_word_sequence'] = ['Ànec', 'Barca', 'Coala', 'Calçat', 'Dofí', 'Elefant', 'Formiga', 'Gat', 'Hipopotam', 'Iglú', 'Joguina', 'Kiwi', 'Lleó', 'Mússol', 'Nit', 'Oceà', 'Poma', 'Quadern', 'Ratolí', 'Síndria', 'Tomàquet', 'Ull', 'Violí', 'Windsurf', 'Xilofon', 'Yoga', 'Zebra']
+d['abc_flashcards_frame_sequence'] = [3, 1, 72, 60, 59, 4, 0, 2, 47, 8, 9, 72, 11, 14, 54, 52, 42, 13, 12, 26, 33, 55, 21, 66, 23, 32, 25]
+
+#used in telling time activity
+#the number lists below are for languages with a bit more complex forms, ie. different suffixes depending on context - if your language is like that check Polish translation to see how to use them
+d["minute_numbers_1to29"] = numbers[:]
+
+#hours case 0: full hour, ie. one o'clock, two o'clock, etc.
+d["hours_a"] = numbers[0:12]
+
+#hours case 1: ie. ten past one, 22 past three, etc.
+d["hours_b"] = d["hours_a"][:]
+
+#hours case 2: ie. ten to one, 22 to three, etc.
+d["hours_c"] = d["hours_a"][:]
+
+d["time_string_one_to"] = "one minute to %s" #if you never use the to the hour form leave this blank
+d["time_string_one_past"] = "one minute past %s"
+#pick either mh or hm version, or leave these 4 blank if you don't use to the hour form: mh means that number of minutes will appear first in the sentence followed by the number of hours, the hm is the opposite.
+d["time_string_to_mh"] = "%s to %s" #ie. five to four
+d["time_string_past_mh"] = "%s past %s" #ie. five past four
+d["time_string_to_hm"] = "" #ie. 3:55 = four o'clock in five
+d["time_string_past_hm"] = "" #ie. 4:05 = four and five minutes
+
+#if you never use the "to the hour" form leave the above fields blank and only fill one of the following two
+d["time_string_1_59_past_mh"] = ""
+d["time_string_1_59_past_hm"] = ""
+d["time_string_3q_past"] = "" #if you don't use quarter to but rather past use this one to either say it's 3 quarters past or 45 past - and leave the "quarter to" field blanck
+
+d["time_string_q_to"] = "quarter to %s"
+d["time_string_q_past"] = "quarter past %s"
+
+d["time_string_half_to"] = "" #ie. in languages using this form, ie. half to four
+d["time_string_half_past"] = "half past %s" #ie. half past three or "thirty past %s" if that sounds better
+d["time_string_full"] = "%s en punt"
+
+fruit = ["poma verda", "poma vermella", "maduixa", "pera", "taronja", "ceba", "tomàquet", "llimona", "cirera", "pebrot", "pastanaga", "plàtan", "síndria"]
+fruits_1 = ["pomes verdes", "pomes vermelles", "maduixes", "peres", "taronges", "cebes", "tomàquets", "llimones", "cireres", "pebrots", "pastanagues", "plàtans", "síndries"]
+fruits_2 = []
+#[[for this number of fruits (in range of 2-7) use names from fruits_1],[and for those from fruits_2]]
+plural_rules = [[2,3,4,5,6,7],[]] #used for some languages where there are more than one form for plurals depending on number
+#alphabet en
+alphabet_lc = ['a', 'b', 'c', 'ç', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
+alphabet_uc = ['A', 'B', 'C', 'Ç', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
+#correction of eSpeak pronounciation of single letters if needed
+letter_names = []
+
+accents_lc = ['à', 'é', 'è', 'í', 'ò', 'ó', 'ú','-']
+accents_uc = ['À', 'É', 'È', 'Í', 'Ò', 'Ó', 'Ú']
+
+#game start
+d["Hello"] = "Hola"
+d["Welcome back."] = "Benvingut un altre cop al joc."
+
+#settings
+d["Preferences"] = "Preferències"
+d["Language"] = "Idioma"
+d["Reader"] = "eSpeak"
+d["Read Instructions"] = "Llegeix instruccions al començar els jocs"
+
+#menu categories
+d["Info Category"] = "Informació i preferències"
+d["Keyboard & Mouse"] = "Teclat i ratolí"
+d["Discover Letters"] = "Descobreix lletres"
+d["Learn Words"] = "Aprèn paraules noves"
+d["Maths"] = "Matemàtiques"
+d["Numbers & Basic Operations"] = "Números i operacions bàsiques"
+d["Basic Operations - exercises"] = "Operacions bàsiques; Exercicis"
+d["Sorting and Comparing"] = "Ordena i compara"
+d["Geometry"] = "Geometría i formes"
+d["Art"] = "Art i color"
+d["Memory"] = "Memòria"
+d["Games & Mazes"] = "Jocs i laberints"
+d["Multiplayer"] = "Jocs multi-jugador"
+
+#games
+d["About."] = "Sobre el joc."
+d["Game info..."] = "Informació del joc..."
+d["Credits"] = "Drets de copia i credits"
+d["Hit the Mole"] = "Hit the Mole"
+d["Letters"] = "Lletres"
+d["Letter Flashcards"] = "Learn Letters with Flashcards"
+d["Learn to Write"] = "Aprèn a escriure"
+d["Trace Letters"] = "Trace Letters and Numbers"
+d["Complete the ABC"] = "Completa l'abecedari"
+d["English"] = "Anglès"
+d["in your language"] = "Català"
+d["Sorting Letters"] = "Ordenar lletres"
+d["Lowercase Letters"] = "Lletres minúscules"
+d["Uppercase Letters"] = "Lletres majúscules"
+d["Word Builder"] = "Construeix paraules"
+d["Word Maze"] = "Laberint de paraules"
+d["Collect all"] = "Collect all letters in the right order"
+d["Word Maze + 4"] = "Word Maze + 4"
+d["Numbers"] = "Números"
+d["Number Flashcards"] = "Learn Numbers with Flashcards"
+d["Learn to Count"] = "Aprèn a contar"
+d["Basic Addition"] = "Suma bàsica"
+d["Basic Subtraction"] = "Resta bàsica"
+d["Shopping List"] = "Llista de la compra"
+d["Plus or Minus"] = "Suma o resta"
+d["Basic Operations"] = "Operacions bàsiques"
+d["Multiplication Table"] = "Taula de multiplicar"
+d["Find the product"] = "Troba el producte"
+d["Find the multiplier"] = "Troba el multiplicador"
+d["Division"] = "Divisió"
+d["Sorting Numbers"] = "Ordena els números"
+d["Number Comparison"] = "Compara els números"
+d["Addition & Subtraction"] = "Sumes i restes"
+d["Comparison"] = "Comparison"
+d["Fractions"] = "Fraccions"
+d["Decimal Fractions"] = "Fraccions decimals"
+d["Even or Odd"] = "Parell o senar"
+d["Shapes"] = "Formes"
+d["Shape Flashcards"] = "Learn Shapes with Flashcards"
+d["Solids"] = "Sòlids"
+d["Solid Flashcards"] = "Solid Geometry with Flashcards"
+d["Shape Matching"] = "Shape Matching"
+d["help me find my shadow"] = "ajuda'm a trobar la meva ombra"
+d["Paint"] = "Pinta"
+d["Colour Matching"] = "Color Matching"
+d["label the colours"] = "etiqueta els colors"
+d["Follow the Arrows"] = "Segueix les fletxes"
+d["remember the directions"] = "recorda les direccions"
+d["Photographic Memory"] = "Memòria fotogràfica"
+d["Training"] = "Training"
+d["Automatic Levels"] = "Nivells automàtics"
+d["Mouse Maze"] = "Laberint del ratolí"
+d["Let's have some cheese"] = "Let's have some cheese"
+d["Sheep Maze"] = "Laberint de l'ovella"
+d["Find the rest"] = "Find the rest of the herd"
+d["Connect"] = "Connect"
+d["Balloons with threads"] = "Globus amb fils"
+d["Fifteen"] = "Fifteen"
+d["With a Twist"] = "With a Twist"
+
+#game instructions
+d["Drag the slider"] = "Drag the slider up or down so that the right sign is in the red square."
+d["Take your sheep"] = "Take your sheep to the rest of the herd."
+d["Check the shopping list"] = "Check the shopping list and drag all needed items into the basket."
+d["Drag lt"] = "Drag one of the <, > or = (lesser, greater or equal) to the red square."
+d["Drag lt2"] = "Drag one of the lesser, greater or equal to the red square."
+d["Re-arrange right"] = "Re-arrange the above numbers so they are in the right order"
+d["Complete abc"] = "Complete the abc using the letters above."
+d["Write a word:"] = "Write a word:"
+d["Find and separate"] = "Find and separate the Even Numbers form the Odd Numbers in the above series."
+d["Re-arrange alphabetical"] = "Re-arrange the above letters so they are in the alphabetical order."
+d["Re-arrange ascending"] = "Re-arrange the above numbers so they are in the ascending order."
+
+#game dialogs
+d["Please try again."] = "Torna-ho a provar."
+d["Sorry! It is wrong."] = "Sorry! It is wrong."
+d["Perfect! Task solved!"] = "Perfecte! Task solved!"
+d["work harder"] = "You need to work a little bit harder next time."
+
+#level_controller
+d["Game Over!"] = "Fí del joc!"
+d["Congratulations! Game Completed."] = "Enhorabona! Has completat totes les tasques d'aquest joc."
+d["Great job!"] = ["Bona feina!","Perfecte!","Meravellós!","Genial!","Fantàstic!","Ben fet!"]
+d["Perfect! Level completed!"] = "Perfecte! Nivell completat!"
+
+#game specific labels:
+d["area:"] = "àrea:"
+d["perimeter:"] = "perímetre:"
+d["surface area:"] = "superfície de l'àrea:"
+d["volume:"] = "volum:"
+d["Perfect!"] = "Perfecte!"
+d["divided by"] = "dividit per"
+d["multiplied by"] = "cops"
+d["equals"] = "igual a"
+d["Shopping List"] = "Llista de la compra"
+d["Even"] = "Parell"
+d["Odd"] = "Senar"
+d["white"]="blanc"
+d["black"]="negre"
+d["grey"]="gris"
+d["red"]="vermell"
+d["orange"]="taronja"
+d["yellow"]="groc"
+d["olive"]="verd oliva"
+d["green"]="verd"
+d["sea green"]="verd mar"
+d["teal"]="verd blavós"
+d["blue"]="blau"
+d["navy"]="blau marí"
+d["purple"]="porpra"
+d["violet"]="violeta"
+d["magenta"]="magenta"
+d["indigo"]="anyil"
+d["pink"]="rosa"
+d["maroon"] = "granat"
+d["brown"] = "marró"
+d["aqua"] = "aqua"
+d["lime"] = "llima"
+
+#new
+d["Keyboard Skills"] = "Teclat d'arc de San Martí"
+d["Touch Typing"] = "Touch Typing Tutor"
+d["Translators"] = "Traductors"
+d["English Alphabet"] = "Alfabet anglès"
+d["Your Alphabet"] = "Alfabet català"
+
+#new in 0.3.0
+d["Paint Mixer"] = "Mixing Colors for Painting"
+d["Mixing RYB"] = "Mix red, yellow, blue, black and white paint"
+
+d["Light Mixer"] = "Additive Color Mixing - Light"
+d["Mixing RGB"] = "Mix red, green and blue light to get other colors"
+
+d["Ink Mixer"] = "Subtractive Color Mixing - Paints, Dyes, Inks"
+d["Mixing CMY"] = "Mix cyan, magenta and yellow paint to get other colors"
+
+d["Find the colour of the circle"] = "Find the color of the circle"
+d["Adjust CMY"] = "Adjust the amount of cyan, magenta and yellow paint"
+d["Adjust RGB"] = "Adjust the intensity of red, green and blue light"
+
+#the following is used by colour matching games in spoken hints
+#ie. "more red, less green, blue is ok"
+d["more color"] = "més"
+d["less color"] = "menys"
+d["color is ok"] = "està bé"
+#in some languages to keep the colours gramaticaly correct
+#the ie. red will be a different word in "more red" and "red is ok"
+#ie. in Polish "więcej czerwonego" and "czerwony jest ok"
+#and in the following 2 element lists first element is used with more, less,
+#and the second with the "is ok" - in most languages those will be the same, but not in Polish or Russian
+d["of red"] = ["vermell", "el vermell"]
+d["of green"] = ["verd", "el verd"]
+d["of blue"] = ["blau", "el blau"]
+d["of cyan"] = ["cian", "el cian"]
+d["of magenta"] = ["magenta", "el magenta"]
+d["of yellow"] = ["groc", "el groc"]
+
+#new in 0.3.1
+d["brush size"] = "mida del pinzell"
+
+#new in 0.3.2
+d["TicTacToe2"] = "Tres en ratlla 2"
+d["TicTacToe3"] = "Tres en ratlla 3"
+d["multiline-tictactoe"] = " Per guanyar aconsegueix el major numero de línies de 3"
+
+d["Player"] = "Participant"
+d["Won"] = "ha guanyat"
+d["Game Draw"] = "Empat"
+d["UserName"] = "El teu nom"
+
+d["Match Animals Memory"] = "Match Animals"
+d["Match Fruits"] = "Match Fruits"
+d["Match Vegetables"] = "Match Vegetables"
+d["Match Numbers"] = "Match Numbers"
+d["Find pairs"] = "Find matching pairs of the same image"
+
+d["Sliced Images"] = "Imatges tallades"
+d["Sliced Animals"] = "Animals"
+d["Sliced Fruits"] = "Fruites"
+d["Sliced Numbers"] = "Números"
+
+d["Fraction Groups"] = "Grups de fraccions"
+d["Percentages"] = "Percentatges"
+d["Ratios"] = "Propocions"
+d["Fract instr0"] = "Match fraction charts on the right to the ones on the left"
+d["Fract instr1"] = ["Match fraction charts and fractions on the right","to the fraction charts on the left"]
+d["Fract instr2"] = "Match fraction charts to the fractions on the left"
+d["Fract instr3"] = ["Match fraction charts, fractions and decimal fractions on the right","to their percentage representations"]
+d["Fract instr4"] = ["Match charts to the ratios on the left","Ratios are expressed as ratio of coloured pieces to white pieces"]
+
+d["Maths Matching Game"] = "Maths Matching Game"
+d["Addition"] = "Suma"
+d["Subtraction"] = "Resta"
+d["Multiplication"] = "Multiplicació"
+d["Division"] = "Divisió"
+
+d["Check for newer version..."] = ["","Check for newer version, report bugs, discuss, translate or review this project at:"]
+d["Match numbers to their spelling"] = "Match numbers to their spelling"
+d["Number Spelling"] = "Number Spelling"
+
+d["Match Animals"] = "Match Animals"
+d["Find all matching animals"] = "Find all matching animals"
+d["Match animals to their shadows"] = "Match animals to their shadows"
+
+d["ShapeMaker"] = "Shape Maker"
+
+d["draw_instr1"] = "Shape to draw: %s"
+d["draw_instr2"] = "Shape to draw: %s" #if the following size_instr turn out to be too long the beginning can be moved here, ie. d["draw_instr2"] = "Shape to draw: %s, such that"
+
+d["size_instr_0"] = "such that lengths of its bases are equal to %d and %d and height to %d" #for trapeziums
+d["size_instr_1"] = "such that lengths of its sides are equal to %d" #square
+d["size_instr_2"] = "such that lengths of its sides are equal to %d and %d" #rectangle
+d["size_instr_3"] = "such that lengths of its 2 parallel bases are equal to %d and height to %d" #for parallelogram
+d["size_instr_4"] = "such that length of its base is equal to %d and height to %d" #for triangles incl. isosceles triangles
+d["size_instr_5"] = "such that lengths of its catheti are equal to %d and %d" #for right triangles
+d["size_instr_6"] = "such that lengths of both of its catheti are equal to %d" #for right isosceles triangles
+d["size_instr_7"] = "such that length of its hypotenuse is equal to %d" #for right isosceles triangles
+d["size_instr_8"] = "such that length of one of its sides is equal to %d and height to %d" #for obtuse triangles
+d["size_instr_9"] = "such that length of its radius is equal to %d" #for circles
+
+d["square"] = shape_names[5]
+d["rectangle"] = shape_names[6]
+d["right_trapezium"] = shape_names[7]
+d["iso_trapezium"] = shape_names[8]
+d["rhombus"] = shape_names[9]
+d["parallelogram"] = shape_names[10]
+d["quadrilateral"] = "Quadrilàter"
+d["trapezium"] = "Trapezoide"
+d["u_trapezium"] = "Trapezoide"
+d["triangle"] = "Triangle"
+d["squished_quadi"] = "Ai... quadrilàter aixafat" #used to label a drawn "quadrilateral" with angles: 0º, 180º, 0º, 180º - all points on one line
+
+d["equi_tria"] = shape_names[0]
+d["iso_tria"] = shape_names[1]
+d["obtuse_tria"] = shape_names[2]
+d["right_tria"] = shape_names[3]
+d["acute_tria"] = shape_names[4]
+d["right_iso_tria"] = "Triangle rectangle isòsceles"
+d["obtuse_iso_tria"] = "Triangle obtús isòsceles"
+d["acute_iso_tria"] = "Triangle agut isòsceles"
+d["squished_tria"] = "Ai... triangle aixafat" #used to label a drawn "triangle" with angles: 0º, 180º, 0º - all points on one line
+d["circle"] = shape_names[13]
+d["triangle_not_really"] = "Triangle? No ben bé..." #used to label a drawn "quadrilateral" with one of its angles equal to 180º - in effect making it look like triangle
+
+d["test_yourself"] = "Test yourself"
+d["Clock1"] = "Rellotge"
+d["Read time"] = "aprèn a llegit l'hora"
+d["Clock2"] = "Rellotge"
+d["Set time"] = "aprèn a posar el rellotge"
+d["Set_clock"] = "Posa el rellotge a:"
+d["Set_clock_instr"] = ["","Drag the clock hands","to set the time"]
+d["What time"] = "Quina hora és?"
+d["close_confirm"] = "Click again to exit"
+d["answer_enter"] = "Type your answer and hit enter"
+
+d["enable_untranslated"] = "FAO: Translators - enable this to show untranslated languages (for testing):"
+d["Fullscreen:"] = "Pantalla completa:"
+
+d["Time"] = "Temps"
+d["Play_w_clock"] = "Turn the clock hands and see what happens."
+
+d["lets_see_what_you_draw"] = "Let's see what shapes you can draw"
+d["txt_only"] = "Time in text version only"
+d["Clock0"] = "Com funciona un rellotge?"
+d["Columnar addition"] = "Suma de la columna"
+d["Columnar subtraction"] = "Resta de la columna"
+d["Long multiplication"] = "Multiplicació llarga"
+d["Long division"] = "Divisiço llarga"
+d["borrow 10"] = "en prenc 10"
+d["carry"] = "en porto" #in columnar addition, ie. in case of 4 + 8 you write 2 under the column and carry 1
+d["demo start"] = "Comença >>"
+d["demo next eg"] = "Següent exemple >>"
+d["demo next step"] = "Següent pas >>"
+d["demo write"] = "escriu " #used to show which digit of the result should be entered in a box, ie. "enter 5"
+d["Demonstration"] = "Demostració"
+d["DIY"] = "Fes-ho tú"
+d["Ratio"] = "Proporció"
+d["Working with large numbers"] = "Treballar amb números grans"
+d["demo rewrite"] = "reescriu "
+d["remainder"] = "remainder"
+d["demo_result"] = "resultat"
+d["TimeMatching"] = "Time Matching"
diff --git a/languages/verifykeys.py b/languages/verifykeys.py
index 4b69de2..ebfcf22 100755
--- a/languages/verifykeys.py
+++ b/languages/verifykeys.py
@@ -9,7 +9,7 @@ a = os.path.split(os.path.abspath(inspect.getsourcefile(where_am_I)))[0]
 os.chdir(a)
 
 #list of language files
-langs = ["en_gb.py", "en_us.py", "pl.py", "gr.py", "es.py","pt.py","fr.py","it.py","de.py","ru.py","fi.py"]
+langs = ["ca.py", "en_gb.py", "en_us.py", "pl.py", "gr.py", "es.py","pt.py","fr.py","it.py","de.py","ru.py","fi.py"]
 
 argv = sys.argv
 if len(argv) == 3:

Reply via email to