Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--FractionBounceActivity.py218
-rw-r--r--NEWS16
-rw-r--r--activity/activity-fractionbounce.svg43
-rw-r--r--activity/activity.info2
-rw-r--r--ball.py10
-rw-r--r--balls/README2
-rw-r--r--balls/baseball.svg271
-rw-r--r--balls/beachball.svg53
-rw-r--r--balls/sunball.svg60
-rw-r--r--balls/tennis.svg41
-rw-r--r--bar.py2
-rw-r--r--basketball.svg (renamed from balls/basketball.svg)0
-rw-r--r--bounce.py96
-rw-r--r--icons/fraction.svg7
-rw-r--r--icons/percent.svg7
-rw-r--r--icons/sector.svg23
-rw-r--r--po/af.po116
-rw-r--r--po/ak.po116
-rw-r--r--po/am.po116
-rw-r--r--po/ar.po116
-rw-r--r--po/ayc.po116
-rw-r--r--po/aym.po116
-rw-r--r--po/bg.po116
-rw-r--r--po/bn.po116
-rw-r--r--po/bn_IN.po116
-rw-r--r--po/bs.po116
-rw-r--r--po/ca.po116
-rw-r--r--po/cpp.po116
-rw-r--r--po/cs.po116
-rw-r--r--po/de.po116
-rw-r--r--po/dz.po116
-rw-r--r--po/el.po119
-rw-r--r--po/es.po118
-rw-r--r--po/fa.po116
-rw-r--r--po/fa_AF.po116
-rw-r--r--po/ff.po116
-rw-r--r--po/fi.po116
-rw-r--r--po/fil.po116
-rw-r--r--po/fr.po118
-rw-r--r--po/gn.po116
-rw-r--r--po/gu.po116
-rw-r--r--po/ha.po116
-rw-r--r--po/he.po116
-rw-r--r--po/hi.po116
-rw-r--r--po/ht.po116
-rw-r--r--po/hu.po116
-rw-r--r--po/hus.po116
-rw-r--r--po/id.po116
-rw-r--r--po/ig.po116
-rw-r--r--po/is.po116
-rw-r--r--po/it.po116
-rw-r--r--po/ja.po116
-rw-r--r--po/km.po116
-rw-r--r--po/kn.po116
-rw-r--r--po/ko.po116
-rw-r--r--po/kos.po116
-rw-r--r--po/ku.po116
-rw-r--r--po/lt.po116
-rw-r--r--po/lv.po116
-rw-r--r--po/mg.po116
-rw-r--r--po/mi.po116
-rw-r--r--po/mk.po116
-rw-r--r--po/ml.po116
-rw-r--r--po/mn.po116
-rw-r--r--po/mr.po116
-rw-r--r--po/ms.po116
-rw-r--r--po/mvo.po116
-rw-r--r--po/na.po116
-rw-r--r--po/nah.po116
-rw-r--r--po/nb.po116
-rw-r--r--po/ne.po116
-rw-r--r--po/nl.po118
-rw-r--r--po/nn.po116
-rw-r--r--po/pa.po116
-rw-r--r--po/pap.po116
-rw-r--r--po/pbs.po116
-rw-r--r--po/pl.po119
-rw-r--r--po/ps.po116
-rw-r--r--po/pt.po118
-rw-r--r--po/pt_BR.po116
-rw-r--r--po/quy.po116
-rw-r--r--po/quz.po116
-rw-r--r--po/ro.po116
-rw-r--r--po/ru.po116
-rw-r--r--po/rw.po116
-rw-r--r--po/sd.po116
-rw-r--r--po/si.po116
-rw-r--r--po/sk.po116
-rw-r--r--po/sl.po116
-rw-r--r--po/sm.po116
-rw-r--r--po/son.po116
-rw-r--r--po/sq.po116
-rw-r--r--po/sr.po116
-rw-r--r--po/st.po116
-rw-r--r--po/sv.po116
-rw-r--r--po/sw.po116
-rw-r--r--po/ta.po116
-rw-r--r--po/te.po116
-rw-r--r--po/to.po116
-rw-r--r--po/tr.po116
-rw-r--r--po/tvl.po116
-rw-r--r--po/tyv.po116
-rw-r--r--po/tzm.po116
-rw-r--r--po/tzo.po116
-rw-r--r--po/ug.po116
-rw-r--r--po/uk.po116
-rw-r--r--po/ur.po116
-rw-r--r--po/vi.po116
-rw-r--r--po/wa.po116
-rw-r--r--po/yo.po116
-rw-r--r--po/zh_CN.po116
-rw-r--r--po/zh_HK.po116
-rw-r--r--po/zh_TW.po116
-rwxr-xr-xsetup.py2
-rw-r--r--soccer.svg (renamed from balls/soccer.svg)0
-rw-r--r--sprites.py241
-rw-r--r--svg_utils.py7
-rw-r--r--toolbar_utils.py66
-rw-r--r--utils.py103
119 files changed, 11607 insertions, 929 deletions
diff --git a/FractionBounceActivity.py b/FractionBounceActivity.py
index 0c46376..db2b7e6 100644
--- a/FractionBounceActivity.py
+++ b/FractionBounceActivity.py
@@ -1,8 +1,5 @@
# -*- coding: utf-8 -*-
#Copyright (c) 2011, Walter Bender, Paulina Clares, Chris Rowe
-#Copyright (c) 2012, Ignacio Rodriguez
-# Ported to GTK3 - 2012:
-# Ignacio Rodríguez <ignaciorodriguez@sugarlabs.org>
# 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
@@ -12,26 +9,28 @@
# You should have received a copy of the GNU General Public License
# along with this library; if not, write to the Free Software
# Foundation, 51 Franklin Street, Suite 500 Boston, MA 02110-1335 USA
-from gi.repository import Gdk, GdkPixbuf, GObject, Gtk
+
+
+import gtk
import os
-from sugar3.activity import activity
-from sugar3 import profile
-from sugar3.graphics.toolbarbox import ToolbarBox
-from sugar3.graphics.toolbarbox import ToolbarButton
-from sugar3.graphics.toolbutton import ToolButton
-from sugar3.graphics.toolbutton import ToolButton
-# This is for test case in sugar 0.96#
-from sugar3.graphics.colorbutton import ColorToolButton
-
-from sugar3.activity.widgets import ActivityToolbarButton
-from sugar3.activity.widgets import StopButton
-import utils
+from sugar.activity import activity
+from sugar import profile
+try: # 0.86+ toolbar widgets
+ from sugar.graphics.toolbarbox import ToolbarBox
+ HAS_TOOLBARBOX = True
+except ImportError:
+ HAS_TOOLBARBOX = False
+if HAS_TOOLBARBOX:
+ from sugar.graphics.toolbarbox import ToolbarButton
+ from sugar.activity.widgets import ActivityToolbarButton
+ from sugar.activity.widgets import StopButton
+
import telepathy
from dbus.service import signal
from dbus.gobject_service import ExportedGObject
-from sugar3.presence import presenceservice
-from sugar3.presence.tubeconn import TubeConnection
+from sugar.presence import presenceservice
+from sugar.presence.tubeconn import TubeConnection
from gettext import gettext as _
@@ -40,22 +39,16 @@ _logger = logging.getLogger('fractionbounce-activity')
from toolbar_utils import image_factory, separator_factory, combo_factory, \
label_factory, radio_factory, button_factory, entry_factory
-
-# from utils import json_load, json_dump, chooser
-from utils import chooser
+from utils import json_load, json_dump, chooser
from svg_utils import svg_str_to_pixbuf, generate_xo_svg
-from utils import rgb2html
-from utils import get_user_fill_color as acolor
-from utils import get_user_stroke_color as bcolor
+
from bounce import Bounce
-BALLS = [_('basketball'), _('soccer ball'), _('tennis ball'), _('baseball'),
- _('beachball'), _('sun ball'), _('user defined')]
+BALLS = [_('basketball'), _('soccer ball'), _('user defined')]
SERVICE = 'org.sugarlabs.FractionBounceActivity'
IFACE = SERVICE
PATH = '/org/augarlabs/FractionBounceActivity'
-canvas = Gtk.DrawingArea()
class FractionBounceActivity(activity.Activity):
@@ -70,10 +63,8 @@ class FractionBounceActivity(activity.Activity):
else:
self.colors = ['#A0FFA0', '#FF8080']
- '''
- self.add_events(Gdk.EventMask.VISIBILITY_NOTIFY_MASK)
+ self.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK)
self.connect('visibility-notify-event', self.__visibility_notify_cb)
- '''
self.max_participants = 4 # sharing
@@ -100,49 +91,41 @@ class FractionBounceActivity(activity.Activity):
def _setup_toolbars(self):
''' Add buttons to toolbars '''
- view_toolbar = Gtk.Toolbar()
- custom_toolbar = Gtk.Toolbar()
- toolbox = ToolbarBox()
- self.toolbar = toolbox.toolbar
- activity_button = ActivityToolbarButton(self)
- self.toolbar.insert(activity_button, 0)
- activity_button.show()
-
- view_toolbar_button = ToolbarButton(
- label=_('View'),
- page=view_toolbar,
- icon_name='toolbar-view')
- view_toolbar.show()
- self.toolbar.insert(view_toolbar_button, -1)
- view_toolbar_button.show()
-
- custom_toolbar_button = ToolbarButton(
- label=_('Custom'),
- page=custom_toolbar,
- icon_name='view-source')
- custom_toolbar.show()
- self.toolbar.insert(custom_toolbar_button, -1)
- custom_toolbar_button.show()
-
- self._load_standard_buttons(self.toolbar)
- separator_factory(self.toolbar, expand=True, visible=False)
- stop_button = StopButton(self)
- stop_button.props.accelerator = _('<Ctrl>Q')
- self.toolbar.insert(stop_button, -1)
- stop_button.show()
- self.set_toolbar_box(toolbox)
- toolbox.show()
-
- self._load_view_buttons(view_toolbar)
- self._load_custom_buttons(custom_toolbar)
-
- def unfullscreen(self):
- utils.full = False
- activity.Activity.unfullscreen(self)
+ custom_toolbar = gtk.Toolbar()
+ if HAS_TOOLBARBOX:
+ toolbox = ToolbarBox()
+ self.toolbar = toolbox.toolbar
+ activity_button = ActivityToolbarButton(self)
+ self.toolbar.insert(activity_button, 0)
+ activity_button.show()
+
+ custom_toolbar_button = ToolbarButton(
+ label=_('Custom'),
+ page=custom_toolbar,
+ icon_name='view-source')
+ custom_toolbar.show()
+ self.toolbar.insert(custom_toolbar_button, -1)
+ custom_toolbar_button.show()
+
+ self._load_standard_buttons(self.toolbar)
+ separator_factory(self.toolbar, expand=True, visible=False)
+
+ stop_button = StopButton(self)
+ stop_button.props.accelerator = _('<Ctrl>Q')
+ self.toolbar.insert(stop_button, -1)
+ stop_button.show()
+
+ self.set_toolbox(toolbox)
+ toolbox.show()
+ else:
+ toolbox = activity.ActivityToolbox(self)
+ self.set_toolbox(toolbox)
+ self.toolbar = gtk.Toolbar()
+ toolbox.add_toolbar(_('Project'), self.toolbar)
+ toolbox.add_toolbar(_('Custom'), custom_toolbar)
+ self._load_standard_buttons(self.toolbar)
- def __fullscreen_clicked_cb(self, button):
- utils.full = True
- self.fullscreen()
+ self._load_custom_buttons(custom_toolbar)
def _load_standard_buttons(self, toolbar):
''' Load buttons onto whichever toolbar we are using '''
@@ -159,35 +142,11 @@ class FractionBounceActivity(activity.Activity):
tooltip=_('percents'),
group=self.fraction_button)
self.player = image_factory(
- svg_str_to_pixbuf(generate_xo_svg(scale=1,
- colors=[acolor(), bcolor()])),
+ svg_str_to_pixbuf(generate_xo_svg(scale=0.8,
+ colors=['#282828', '#000000'])),
toolbar, tooltip=self.nick)
-
- self.challenge = label_factory(toolbar, _("Click the ball to start."),
- width=200)
-
- def _setup_color(self,widget,pspec):
- Htmlcolor = rgb2html(widget.get_color())
- canvas.modify_bg(Gtk.StateType.NORMAL,Gdk.color_parse(Htmlcolor))
- canvas.show()
-
- def _load_view_buttons(self, toolbar):
- item_label = Gtk.ToolItem()
- label = Gtk.Label(_('Set background color'))
- item_label.add(label)
- item_label.show_all()
-
- fullscreen = ToolButton('view-fullscreen')
- fullscreen.set_tooltip(_('Fullscreen'))
- fullscreen.connect('clicked',self.__fullscreen_clicked_cb)
- color = ColorToolButton()
- color.connect('notify::color', self._setup_color)
-
- toolbar.insert(fullscreen,-1)
- separator_factory(toolbar, expand=False, visible=False)
- toolbar.insert(item_label,-1)
- toolbar.insert(color,-1)
- toolbar.show_all()
+ separator_factory(toolbar, expand=False, visible=True)
+ self.challenge = label_factory(toolbar, _("Click the ball to start."))
def _load_custom_buttons(self, toolbar):
''' Entry fields and buttons for adding custom fractions '''
@@ -201,16 +160,18 @@ class FractionBounceActivity(activity.Activity):
tooltip=_('add new fraction'),
accelerator='Return')
separator_factory(toolbar, expand=False, visible=True)
+ separator_factory(toolbar, expand=False, visible=False)
self._ball_selector = combo_factory(BALLS, toolbar, self._combo_cb,
default=_('soccer ball'),
tooltip=_('choose a ball'))
- toolbar.show_all()
def _setup_canvas(self):
''' Create a canvas '''
- canvas.set_size_request(Gdk.Screen.width(),
- Gdk.Screen.height())
+ canvas = gtk.DrawingArea()
+ canvas.set_size_request(gtk.gdk.screen_width(),
+ gtk.gdk.screen_height())
self.set_canvas(canvas)
+ canvas.show()
self.show_all()
return canvas
@@ -220,22 +181,10 @@ class FractionBounceActivity(activity.Activity):
return
if BALLS[self._ball_selector.get_active()] == _('basketball'):
self.bounce_window.ball.new_ball(os.path.join(
- activity.get_bundle_path(), 'balls/basketball.svg'))
+ activity.get_bundle_path(), 'basketball.svg'))
elif BALLS[self._ball_selector.get_active()] == _('soccer ball'):
self.bounce_window.ball.new_ball(os.path.join(
- activity.get_bundle_path(), 'balls/soccer.svg'))
- elif BALLS[self._ball_selector.get_active()] == _('tennis ball'):
- self.bounce_window.ball.new_ball(os.path.join(
- activity.get_bundle_path(), 'balls/tennis.svg'))
- elif BALLS[self._ball_selector.get_active()] == _('baseball'):
- self.bounce_window.ball.new_ball(os.path.join(
- activity.get_bundle_path(), 'balls/baseball.svg'))
- elif BALLS[self._ball_selector.get_active()] == _('beachball'):
- self.bounce_window.ball.new_ball(os.path.join(
- activity.get_bundle_path(), 'balls/beachball.svg'))
- elif BALLS[self._ball_selector.get_active()] == _('sun ball'):
- self.bounce_window.ball.new_ball(os.path.join(
- activity.get_bundle_path(), 'balls/sunball.svg'))
+ activity.get_bundle_path(), 'soccer.svg'))
else:
chooser(self, '', self._new_ball_from_journal)
@@ -244,23 +193,12 @@ class FractionBounceActivity(activity.Activity):
if self.bounce_window.mode != 'sectors':
return
if BALLS[self._ball_selector.get_active()] == _('soccer ball'):
- self.bounce_window.ball.new_ball(os.path.join(
- activity.get_bundle_path(), 'balls/soccer.svg'))
- elif BALLS[self._ball_selector.get_active()] == _('basketball'):
- self.bounce_window.ball.new_ball(os.path.join(
- activity.get_bundle_path(), 'balls/basketball.svg'))
- elif BALLS[self._ball_selector.get_active()] == _('tennis ball'):
- self.bounce_window.ball.new_ball(os.path.join(
- activity.get_bundle_path(), 'balls/tennis.svg'))
- elif BALLS[self._ball_selector.get_active()] == _('baseball'):
- self.bounce_window.ball.new_ball(os.path.join(
- activity.get_bundle_path(), 'balls/baseball.svg'))
- elif BALLS[self._ball_selector.get_active()] == _('beachball'):
- self.bounce_window.ball.new_ball(os.path.join(
- activity.get_bundle_path(), 'balls/beachball.svg'))
- elif BALLS[self._ball_selector.get_active()] == _('sun ball'):
- self.bounce_window.ball.new_ball(os.path.join(
- activity.get_bundle_path(), 'balls/sunball.svg'))
+ self.bounce_window.ball.new_ball(os.path.join(
+ activity.get_bundle_path(), 'soccer.svg'))
+ else:
+ self.bounce_window.ball.new_ball(os.path.join(
+ activity.get_bundle_path(), 'basketball.svg'))
+
def _new_ball_from_journal(self, dsobject):
''' Load an image from the Journal. '''
self.bounce_window.ball.new_ball_from_image(dsobject.file_path)
@@ -314,6 +252,18 @@ class FractionBounceActivity(activity.Activity):
# _logger.debug('%s', str(event.state))
return
+ '''
+ # Awaiting resolution of #2570
+ if event.state == gtk.gdk.VISIBILITY_FULLY_OBSCURED:
+ _logger.debug('pause it')
+ self.bounce_window.pause()
+ elif event.state in \
+ [gtk.gdk.VISIBILITY_UNOBSCURED, gtk.gdk.VISIBILITY_PARTIAL]:
+ if not self.bounce_window.paused:
+ _logger.debug('unpause it')
+ self.challenge.set_label(_('Click the ball to continue'))
+ '''
+
# Collaboration-related methods
def _setup_presence_service(self):
diff --git a/NEWS b/NEWS
index 62940e3..457b638 100644
--- a/NEWS
+++ b/NEWS
@@ -1,19 +1,3 @@
-16
-
-ENHANCEMENTS:
-* Added Fullscreen mode (Ignacio Rodriguez)
-* Added ColorToolButton to set background screen color (Ignacio Rodriguez)
-* Added more default balls (Ignacio Rodriguez)
-* Edited icon. Now is a real soccer ball :)
-
-BUG FIX:
-* Fixed chooser for loading user-defined balls
-
-15
-
-ENHANCEMENT:
-* Ignacio Rodríguez port to gtk3
-
14
ENHANCEMENT:
diff --git a/activity/activity-fractionbounce.svg b/activity/activity-fractionbounce.svg
index f98ec37..d14bbfa 100644
--- a/activity/activity-fractionbounce.svg
+++ b/activity/activity-fractionbounce.svg
@@ -1,6 +1,37 @@
-<?xml version="1.0" ?><!-- Created with Inkscape (http://www.inkscape.org/) --><!-- This is a logo for activity: Fraction Bounce --><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [
- <!ENTITY stroke_color "#000000">
- <!ENTITY fill_color "#aaaaaa">
-]><svg height="99.253731" id="Calque_1" version="1.1" viewBox="0 0 268.811 266.62" width="100" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg"><metadata id="metadata9"><rdf:RDF><cc:Work rdf:about="A simple icon for FractionBounce activity"><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><defs id="defs7"/>
-<g id="g3103"><path d="m 38.271566,68.342079 a 30.91165,25.864849 0 1 1 -61.823299,0 30.91165,25.864849 0 1 1 61.823299,0 z" id="path3101" style="fill:&fill_color;;stroke:&stroke_color;" transform="matrix(4.2887052,0,0,5.0831747,103.34098,-214.49234)"/><path d="M 134.405,0 C 60.3,0 0,59.794 0,133.3 0,206.815 60.3,266.62 134.405,266.62 208.51,266.62 268.81,206.815 268.81,133.3 268.811,59.794 208.511,0 134.405,0 z m 41.324,19.176 c 19.396,7.227 36.41,19.271 49.531,34.811 9.217,16.129 11.063,24.318 10.502,28.393 L 198.609,95.958 158.838,70.717 c -2.752,-14.435 -9.255,-37.8 -11.321,-45.151 10.064,-6.238 26.403,-6.39 28.212,-6.39 z m -36.934,6.436 -0.066,0.019 c 0.085,0.286 8.159,28.393 11.511,45.17 L 114.325,100.28 56.777,91.71 c 0,0 -3.561,-15.311 -3.504,-27.631 l 0.009,0.019 c 0.219,-0.305 20.271,-32.449 53.777,-42.875 0.001,0 19.939,0.923 31.736,4.389 z M 81.476,24.203 C 63.69,36.229 51.179,52.511 47.446,57.719 42.638,59.747 37.62,63.908 33.43,67.974 45.065,49.283 61.69,34.086 81.476,24.203 z M 15.435,130.577 c 0,-2.038 0.209,-4.037 0.314,-6.075 3.247,5.675 7.979,9.931 11.426,12.54 2.895,10.998 11.13,39.066 24.66,61.328 -0.399,8.864 0.429,14.91 1.438,18.967 -23.223,-21.729 -37.838,-52.53 -37.838,-86.76 z m 43.884,63.852 C 45.38,171.682 37.001,141.374 34.83,132.834 43.532,114.295 54.806,100.28 54.806,100.28 l 56.339,8.208 c 6.398,18.453 15.349,37.648 19.662,46.617 -6.265,9.359 -23.87,35.4 -34.268,48.197 -9.979,0.143 -27.451,-5.427 -37.22,-8.873 z m 75.077,55.109 c -10.331,0 -20.31,-1.447 -29.878,-3.941 9.94,-0.305 15.806,-2.666 19.147,-4.932 3.009,0.646 11.702,2.304 23.309,2.304 11.835,0 26.65,-1.8 41.313,-8.093 0.781,0.266 1.553,0.409 2.333,0.504 -16.748,9.026 -35.905,14.158 -56.224,14.158 z m 53.101,-23.508 c -29.936,14.102 -62.604,6.256 -62.946,6.17 l -2.438,-1.248 c -8.874,-8.141 -16.396,-20.613 -17.843,-23.137 -0.076,-0.133 -0.105,-0.267 -0.171,-0.4 10.683,-13.425 27.231,-37.876 33.525,-47.303 33.753,-1.466 47.055,-4.132 47.055,-4.132 0.124,0.19 17.281,22.557 25.413,42.58 -4.095,9.769 -15.996,21.082 -22.595,27.47 z m 54.663,-48.931 c -13.635,10.76 -25.689,14.987 -25.689,14.987 -5.398,-10.626 -24.279,-41.114 -24.279,-41.114 6.246,-15.52 8.77,-36.924 10.055,-47.34 L 237.79,90.635 c 8.808,8.541 13.464,23.261 15.006,29.05 0.334,3.599 0.563,7.236 0.563,10.893 0,17.576 -3.923,34.182 -10.798,49.207 -0.02,-1.791 -0.401,-2.686 -0.401,-2.686 z" id="path3" style="fill:&stroke_color;;stroke:none"/></g>
-</svg> \ No newline at end of file
+<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [
+ <!ENTITY stroke_color "#000">
+ <!ENTITY fill_color "#eee">
+]><svg height="55px" viewBox="0 0 55 55" width="55px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5" stroke="&stroke_color;" fill="&fill_color;">
+ <g
+ transform="translate(0.97542099,-0.97645059)"
+ id="g3868">
+ <path
+ d="m 50.074302,28.475804 a 23.549723,23.549723 0 1 1 -7.21e-4,-0.183632"
+ id="path2987"
+ style="fill:&fill_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+ <path
+ d="m 3.0364599,27.688318 0.4652114,-0.103436 c 0.5126269,4.098471 1.4646813,6.838938 2.9881891,8.802843 -0.034462,2.476361 0.058935,3.36923 0.4954553,5.373578 C 5.0831795,39.018017 3.0543636,33.597062 3.0364599,27.688318 z"
+ id="path3757"
+ style="fill:&stroke_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.60036892px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ d="m 39.599141,10.951555 c -2.283243,1.127593 -4.040961,2.187136 -6.061441,3.804554 1.542714,3.092957 2.616395,6.350139 3.417953,9.278869 2.873021,0.268382 5.622424,1.096265 8.370979,1.998213 0.56429,-2.028234 1.143276,-4.413302 1.405572,-7.341132 -1.863643,-2.79804 -4.250805,-5.271728 -7.133063,-7.740504 z"
+ id="path3761"
+ style="fill:&stroke_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.60036892px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ d="m 48.730303,36.60722 c -0.845333,-0.41038 -1.526439,-0.689379 -2.535998,-1.231141 -2.848004,4.335368 -3.626754,5.550434 -6.770366,7.882238 0.04869,1.710494 -0.36245,3.256762 -1.13489,4.737339 0.256712,-0.0084 0.513424,-0.01682 0.770136,-0.02523 4.486416,-2.761792 6.823887,-6.15788 9.671118,-11.363208 z"
+ id="path3763"
+ style="fill:&stroke_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.60036892px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ d="m 18.894729,30.346805 c -2.079862,2.657921 -3.281334,4.682018 -4.565547,8.097962 2.085741,3.226082 4.373988,5.844647 7.168498,7.855696 3.314335,-0.852116 6.426165,-2.007991 9.335489,-4.075139 0.0405,-3.282181 -0.324013,-6.892815 -1.397295,-10.174996 -3.62152,-0.97453 -7.053358,-1.304028 -10.541145,-1.703523 z"
+ id="path3765"
+ style="fill:&stroke_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.60036892px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ d="m 10.342723,11.582668 c 2.857119,-1.581181 5.747084,-3.0638267 8.76843,-4.3494003 1.503179,1.6621179 2.349453,2.9957823 3.622716,4.8878173 -2.496242,2.552867 -4.893949,4.777281 -7.193119,7.6586 -2.437673,-0.270044 -4.645429,-0.343017 -7.5100903,-0.02185 0.4093897,-3.250582 1.1472323,-5.450114 2.3120633,-8.17517 z"
+ id="path3767"
+ style="fill:&stroke_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.60036892px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <path
+ d="m 18.442599,50.187489 c 1.503746,0.278257 2.391791,0.292644 3.367794,0.04316 1.392199,0.756102 2.402891,1.180366 3.515932,1.443767 -3.509951,-0.251534 -4.828652,-0.791799 -6.883726,-1.486925 z"
+ id="path3757-4"
+ style="fill:&stroke_color;;fill-opacity:1;stroke:&stroke_color;;stroke-width:0.60036892px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ </g>
+</svg>
diff --git a/activity/activity.info b/activity/activity.info
index f44017c..61984fb 100644
--- a/activity/activity.info
+++ b/activity/activity.info
@@ -1,6 +1,6 @@
[Activity]
name = FractionBounce
-activity_version = 16
+activity_version = 14
license = GPLv3
bundle_id = org.sugarlabs.FractionBounceActivity
exec = sugar-activity FractionBounceActivity.FractionBounceActivity
diff --git a/ball.py b/ball.py
index 9197486..7750468 100644
--- a/ball.py
+++ b/ball.py
@@ -1,9 +1,6 @@
# -*- coding: utf-8 -*-
#Copyright (c) 2011, Walter Bender, Paulina Clares, Chris Rowe
-# Ported to GTK3 - 2012:
-# Ignacio Rodríguez <ignaciorodriguez@sugarlabs.org>
-
# 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
@@ -13,7 +10,8 @@
# along with this library; if not, write to the Free Software
# Foundation, 51 Franklin Street, Suite 500 Boston, MA 02110-1335 USA
-from gi.repository import Gtk, Gdk, GObject
+
+import gtk
from math import pi
from sprites import Sprite
@@ -119,7 +117,7 @@ class Ball():
_logger.debug('Image file not found.')
return
try:
- self.ball.set_shape(GdkPixbuf.Pixbuf.new_from_file_at_size(
+ self.ball.set_shape(gtk.gdk.pixbuf_new_from_file_at_size(
filename, SIZE, SIZE))
except:
_logger.debug('Could not load image from %s.', filename)
@@ -129,7 +127,7 @@ class Ball():
r = SIZE / 2.0
self.ball.set_shape(svg_str_to_pixbuf(
svg_header(SIZE, SIZE, 1.0) + \
- svg_sector(r, r, r - 1, 1.999 * pi, '#A0A0A0', '#ff00FF') + \
+ svg_sector(r, r, r - 1, 1.999 * pi, '#A0A0A0', '#ff0000') + \
svg_sector(r, r, r - 1, fraction * 2 * pi, '#ffff00', '#ff0000') + \
svg_footer()))
diff --git a/balls/README b/balls/README
deleted file mode 100644
index d492950..0000000
--- a/balls/README
+++ /dev/null
@@ -1,2 +0,0 @@
-sunball.svg is taken from the MIT Scratch project
-
diff --git a/balls/baseball.svg b/balls/baseball.svg
deleted file mode 100644
index c9acda2..0000000
--- a/balls/baseball.svg
+++ /dev/null
@@ -1,271 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.1"
- width="85"
- height="85"
- id="svg2">
- <metadata
- id="metadata8">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs6">
- <filter
- x="0"
- y="0"
- width="1"
- height="1"
- color-interpolation-filters="sRGB"
- id="filter3114">
- <feColorMatrix
- result="fbSourceGraphic"
- values="180"
- type="hueRotate"
- id="feColorMatrix3116" />
- <feColorMatrix
- result="result3"
- values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0 "
- in="fbSourceGraphic"
- id="feColorMatrix3118" />
- <feBlend
- in2="result3"
- mode="lighten"
- in="fbSourceGraphic"
- result="result2"
- id="feBlend3120" />
- <feBlend
- in2="result2"
- mode="multiply"
- in="result2"
- result="result1"
- id="feBlend3122" />
- <feComposite
- in2="SourceGraphic"
- operator="in"
- id="feComposite3124" />
- </filter>
- <filter
- color-interpolation-filters="sRGB"
- id="filter3845">
- <feGaussianBlur
- stdDeviation="0.35566654"
- id="feGaussianBlur3847" />
- </filter>
- </defs>
- <path
- d="m 87.145768,56.016311 a 36.377117,34.756355 0 1 1 0.08117,-0.269879"
- transform="matrix(1.0298688,0,0,1.0778879,-11.284255,-7.3865709)"
- id="path3069"
- style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3845)" />
- <path
- d="m 6.8389904,37.454052 c 0,0 -0.870849,1.411827 -0.866667,2.2 0.00407,0.767541 0.866667,2.133333 0.866667,2.133333 0,0 -0.958297,1.600001 -0.866667,2.466667 0.098576,0.93236 1.466667,2.4 1.466667,2.4"
- id="path3853"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 8.3056564,36.587385 -0.866666,2.533334 0.866666,1.666666 -0.8,2.933334 1.133334,2"
- id="path3855"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 10.03899,35.254052 -1.1999996,2.466667 0.866666,1.8 -1,1.666666 1.3999996,3.133334"
- id="path3857"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 11.905656,33.920719 -1.333333,3.133333 1,1.533333 -0.266667,2.466667 1.133334,2.066667"
- id="path3859"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 13.905656,32.387385 -0.533333,2.8 0.666667,2.066667 -1,1.533333 0.6,2.133334 0.933333,1.066666"
- id="path3861"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 16.572323,30.987385 -0.933333,2.866667 0.8,1.866667 -1.2,1.133333 1.733333,3.866667"
- id="path3863"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 19.23899,29.787385 -0.733334,2.133334 0.666667,2.066666 -1.133333,1.666667 1.6,3.6"
- id="path3865"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 22.972323,28.187385 -1.066667,2.466667 0,2 -0.8,0.933333 1.4,4.533334"
- id="path3867"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 26.505656,27.320719 -0.933333,2.2 0,1.866666 -0.866667,0.8 0.333334,2.466667 0.666666,2.2"
- id="path3869"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 30.43899,26.187385 -0.933334,1.933334 -0.733333,2.333333 -1,1 0.8,2.266667 0.6,2.2"
- id="path3871"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 35.03899,26.054052 -1.066667,1.666667 -0.933333,2.533333 c 0,0 -1.266667,0 -1.266667,0.333333 0,0.333334 0.666667,4.466667 0.666667,4.466667"
- id="path3873"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 39.43899,26.254052 -2.533334,3.4 -1.333333,0.6 0,5.266667"
- id="path3875"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 43.972323,26.987385 -2.933333,3.666667 -1.4,0.2 -0.933334,5.4"
- id="path3877"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 47.972323,28.654052 -3.066667,3.2 -1.6,-0.133333 -1.066666,5.6"
- id="path3879"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 51.972323,30.654052 -3.333333,2.733333 -1.2,-0.266666 -1.6,5.333333"
- id="path3881"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 55.43899,32.854052 c -0.333334,0.06667 -3.533334,2.133333 -3.533334,2.133333 l -1.266666,-0.133333 -1.8,5"
- id="path3883"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 58.772323,34.587385 -4,2.733334 -1,-0.466667 -1.933333,4.733333"
- id="path3885"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 61.905656,38.387385 -4.333333,1.4 -1,-0.6 -2.533333,5.333334"
- id="path3887"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 64.43899,41.654052 -4.066667,1.466667 -1,-0.466667 -2.933333,4.133333"
- id="path3889"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 65.972323,45.454052 -3.8,0.933333 -0.6,-0.6 -3.6,4.4"
- id="path3891"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 67.372323,49.320719 -3.733333,0.6 -0.533334,-0.866667 -3.866666,3.6"
- id="path3893"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 68.305656,53.254052 -3.666666,0.133333 c 0,0 -0.333334,-1.333333 -0.466667,-1.066666 -0.133333,0.266666 -4.066667,2.933333 -4.066667,2.933333"
- id="path3895"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 68.505656,56.920719 c -0.266666,0.133333 -3.533333,0.2 -3.533333,0.2 l -0.266667,-0.6 -3.933333,1.933333"
- id="path3897"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 67.705656,60.787385 -2.666666,-0.333333 -0.4,-0.8 -4.933334,1.666667"
- id="path3899"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 66.572323,63.987385 -2.733333,-0.133333 0,-0.733333 -3.933334,0.733333"
- id="path3901"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 64.105656,67.454052 -1.6,-0.4 -0.4,-0.666667 -3.8,0.8"
- id="path3903"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 62.43899,70.187385 -1.4,-0.4 c 0,0 0,-0.933333 -0.266667,-0.8 -0.266667,0.133334 -4.133333,0.4 -4.133333,0.4"
- id="path3905"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 59.705656,72.854052 -0.933333,-0.666667 -0.466667,-0.533333 -1.933333,0.6 -1.866667,-0.866667"
- id="path3907"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 57.23899,75.254052 -1.333334,-0.8 -2,-0.2 -1.866666,-0.466667"
- id="path3909"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 54.772323,77.120719 -1.666667,-0.933334 -2.266666,0 -1.533334,-1"
- id="path3911"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 50.772323,78.720719 -0.933333,-0.8 -3.4,-0.933334 0,-0.133333"
- id="path3913"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 47.905656,79.454052 -4.533333,-1.6"
- id="path3915"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 43.23899,79.654052 -3,-0.933333"
- id="path3917"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="M 39.105656,79.454052 37.172323,78.787385"
- id="path3919"
- style="fill:none;stroke:#7d4040;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 49.172323,5.7873851 c 0.4,-0.066667 1.266667,-0.2666666 1.266667,-0.2666666"
- id="path3921"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="M 51.905656,6.1873851 53.63899,6.0540518"
- id="path3923"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 54.572323,7.2540518 c 0.4,0.066667 2.133333,0.066667 2.133333,0.066667"
- id="path3925"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 57.63899,9.1873851 1.733333,0.2 0.866667,-0.5333333"
- id="path3927"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 60.572323,11.520719 c 0.333333,-0.133334 1.466667,-0.8 1.466667,-0.8 l 0.4,-0.466667"
- id="path3929"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 63.505656,13.454052 c 0.933334,0.06667 1.866667,0.2 1.866667,0.2 l -0.6,-1.4"
- id="path3931"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 66.03899,16.520719 c 0,0 1.266666,-0.333334 1.533333,-0.266667 0.266667,0.06667 -0.06667,-1.6 -0.06667,-1.6"
- id="path3933"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 68.305656,19.854052 c 0.8,-0.2 2.066667,-0.533333 2.066667,-0.533333 l -0.866667,-2.066667"
- id="path3935"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="M 71.972323,20.654052 71.23899,19.387385 z"
- id="path3937"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 71.172323,23.120719 c 0.266667,-0.06667 1.933333,0.666666 1.933333,0.666666 l 0.866667,-0.8"
- id="path3939"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 73.772323,26.387385 1.533333,0.266667 0.666667,0.266667 0,-0.733334"
- id="path3941"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 75.305656,30.054052 c 0,0 0.866667,-0.733333 1.2,-0.666667 0.333334,0.06667 1.133334,1.066667 1.133334,1.066667 l -0.266667,-1.2"
- id="path3943"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 77.305656,33.587385 1.333334,-0.8 0.133333,-0.666666"
- id="path3945"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 79.172323,37.520719 0.333333,-0.733334"
- id="path3947"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <path
- d="m 79.705656,39.654052 0.2,-0.4"
- id="path3949"
- style="fill:none;stroke:#7d4040;stroke-width:1.875;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-</svg>
diff --git a/balls/beachball.svg b/balls/beachball.svg
deleted file mode 100644
index b835ad7..0000000
--- a/balls/beachball.svg
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.1"
- width="85"
- height="85"
- id="svg2987">
- <metadata
- id="metadata2993">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs2991" />
- <path
- d="m 80.452924,53.572794 a 39.535206,39.53499 0 1 1 0.08822,-0.306985"
- id="path3047-1"
- style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- <g
- transform="translate(-2.2507039e-4,2.4371096e-5)"
- id="g3849">
- <path
- d="m 48.28877,62.219251 c 0,0 -1.582829,-3.361509 -1.44385,-5.13369 0.17024,-2.170797 2.727273,-5.935828 2.727273,-5.935828 0,0 -9.567817,-6.020918 -14.278075,-9.144385 C 29.780704,38.349292 24.133542,34.861063 18.930481,30.775401 15.713605,28.249375 9.7860963,22.593583 9.7860963,22.593583 c 0,0 -4.9217576,8.009501 -5.9358289,12.513369 -1.010186,4.486612 -0.7494874,9.259344 0,13.796791 0.4878049,2.953203 1.5346133,5.832745 2.8877005,8.502674 1.7704758,3.493525 6.7379681,9.625669 6.7379681,9.625669 0,0 4.531513,1.587425 6.898396,1.764705 4.234344,0.317153 8.527747,-0.366618 12.673796,-1.283422 C 38.299266,66.3522 48.28877,62.219251 48.28877,62.219251 z"
- id="path3049"
- style="fill:#ff4141;fill-opacity:1;stroke:none" />
- <path
- d="m 60.962567,45.534759 c 0,0 3.080573,0.959965 4.331551,1.925134 1.084412,0.836659 2.566845,3.208556 2.566845,3.208556 0,0 5.079694,-3.898145 7.219251,-6.256684 2.422531,-2.670474 6.256684,-8.82353 6.256684,-8.82353 0,0 -2.666481,-10.98466 -5.775401,-15.561497 C 72.731711,15.860832 68.514642,12.724107 64.331551,9.9197861 60.437677,7.3093547 51.657754,3.8235294 51.657754,3.8235294 L 48.770053,3.5026738 c 0,0 4.486173,5.9646111 6.096257,9.3048132 2.151476,4.463347 3.571867,9.282076 4.652407,14.117647 0.963363,4.31119 1.401257,8.742234 1.604278,13.15508 0.0836,1.817046 -0.160428,5.454545 -0.160428,5.454545 z"
- id="path3819"
- style="fill:#4146ff;fill-opacity:1;stroke:none" />
- <path
- d="m 57.433155,66.229947 c 0,0 3.483786,-0.954874 4.973262,-1.925134 1.710925,-1.114514 4.331551,-4.331551 4.331551,-4.331551 0,0 3.05905,1.997341 4.652406,2.887701 1.043842,0.583294 3.208556,1.604278 3.208556,1.604278 0,0 -3.884278,6.235701 -6.57754,8.663101 -2.602383,2.345492 -5.739761,4.132079 -8.983957,5.454546 -2.186166,0.891171 -6.898396,1.604278 -6.898396,1.604278 0,0 2.019306,-4.453916 2.887701,-6.737968 0.901453,-2.371002 2.406417,-7.219251 2.406417,-7.219251 z"
- id="path3821"
- style="fill:#ffd941;fill-opacity:1;stroke:none" />
- <path
- d="m 78.930895,63.569678 c -3.442202,10.09089 -11.713724,18.909646 -22.483577,23.972573 -10.769853,5.062926 -23.905344,6.30801 -35.703,3.385506 C 8.9466619,88.005253 -1.3682578,80.951198 -7.29828,71.752335 -13.228302,62.553472 -14.701965,51.322298 -11.307824,41.220708 -7.9136829,31.119117 0.30674365,22.270677 11.042082,17.168033 21.77742,12.06539 34.897279,10.771426 46.709045,13.651939 c 11.811765,2.880513 22.170272,9.900243 28.154197,19.081122 5.983925,9.180879 7.519314,20.410098 4.172543,30.524445 z"
- transform="matrix(0.84108375,0,0,0.98338297,14.06561,-8.9404119)"
- id="path3047"
- style="fill:none;stroke:#000000;stroke-width:3.29868078;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- </g>
-</svg>
diff --git a/balls/sunball.svg b/balls/sunball.svg
deleted file mode 100644
index 1bfaf84..0000000
--- a/balls/sunball.svg
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.3.1 r9886"
- width="100"
- height="100"
- sodipodi:docname="sunball.svg">
- <metadata
- id="metadata8">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs6" />
- <sodipodi:namedview
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1"
- objecttolerance="10"
- gridtolerance="10"
- guidetolerance="10"
- inkscape:pageopacity="0"
- inkscape:pageshadow="2"
- inkscape:window-width="1628"
- inkscape:window-height="577"
- id="namedview4"
- showgrid="false"
- inkscape:zoom="1"
- inkscape:cx="60"
- inkscape:cy="60.5"
- inkscape:window-x="-643"
- inkscape:window-y="24"
- inkscape:window-maximized="0"
- inkscape:current-layer="svg2" />
- <image
- width="100"
- height="100"
- xlink:href="data:image/png;base64,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 "
- id="image10"
- x="0"
- y="0" />
-</svg>
diff --git a/balls/tennis.svg b/balls/tennis.svg
deleted file mode 100644
index fde52d4..0000000
--- a/balls/tennis.svg
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.1"
- width="85"
- height="85"
- id="svg2">
- <metadata
- id="metadata8">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs6" />
- <g
- transform="translate(1.0130582,-0.7280399)"
- id="g3826">
- <path
- d="m 83.387392,56.493855 a 36.506237,37.21925 0 1 1 0.08146,-0.289003"
- transform="matrix(1.080768,0,0,1.0600578,-10.759595,-5.6083131)"
- id="path3755"
- style="fill:#b9ff43;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
- <path
- d="m 64.171123,12.700535 c 0,0 2.403943,3.041675 2.424242,4.848485 0.02126,1.892313 -2.027077,3.427519 -3.422459,4.705882 -2.428535,2.224874 -5.197848,3.138142 -8.413547,3.850267 -3.958186,0.87655 -10.980393,0.998218 -11.97861,0.998218 -0.998218,0 -13.547237,0.855615 -14.402852,0.998217 -0.855615,0.142603 -8.016962,0.574314 -11.550803,2.28164 -2.641531,1.276219 -5.15891,3.209241 -6.702317,5.7041 -2.2926814,3.706033 -3.4224597,12.121212 -3.1372547,12.691622 0.285205,0.57041 1.3840035,6.706468 2.7094474,9.839572 1.4610883,3.453742 3.0248253,7.073118 5.7041003,9.69697 3.542719,3.469436 8.229991,5.839065 12.976827,7.272727 3.605172,1.088851 10.552584,0.713013 11.265597,0.855615 0.713012,0.142603 11.569829,-1.618269 16.969697,-3.707665 3.99203,-1.544655 10.552584,-5.846702 11.122994,-6.417112 0.57041,-0.57041 5.989305,-5.276292 5.989305,-5.276292"
- id="path3824"
- style="fill:none;stroke:#949494;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- </g>
-</svg>
diff --git a/bar.py b/bar.py
index b26579e..88311f9 100644
--- a/bar.py
+++ b/bar.py
@@ -48,7 +48,7 @@ class Bar():
self.ball_size / 4., 0, '#000000', '#000000') + \
svg_footer()
self.mark = Sprite(self.sprites, 0,
- self.screen_height * 2, # hide off bottom of screen
+ self.screen_height, # hide off bottom of screen
svg_str_to_pixbuf(mark))
self.mark.set_layer(2)
diff --git a/balls/basketball.svg b/basketball.svg
index 7ccb8c3..7ccb8c3 100644
--- a/balls/basketball.svg
+++ b/basketball.svg
diff --git a/bounce.py b/bounce.py
index b4687e7..6d428bf 100644
--- a/bounce.py
+++ b/bounce.py
@@ -1,7 +1,5 @@
# -*- coding: utf-8 -*-
#Copyright (c) 2011, Walter Bender, Paulina Clares, Chris Rowe
-# Ported to GTK3 - 2012:
-# Ignacio Rodríguez <ignaciorodriguez@sugarlabs.org>
# 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
@@ -16,7 +14,6 @@
# [a fraction to display on the ball,
# the number of segments in the bar,
# the number of times this challenge has been played]
-import os
CHALLENGES = [[['1/2', 2, 0], ['1/3', 3, 0], ['1/4', 4, 0],
['2/4', 4, 0], ['2/3', 3, 0], ['3/4', 4, 0]],
@@ -46,16 +43,14 @@ BOUNCE_PAUSE = 3000 # milliseconds between bounces
DX = 10 # starting step size for horizontal movement
DDX = 1.25 # acceleration during keypress
ACCELEROMETER_DEVICE = '/sys/devices/platform/lis3lv02d/position'
-
CRASH = 'crash.ogg' # wrong answer sound
LAUGH = 'bottle.ogg' # correct answer sound
BUBBLES = 'bubbles.ogg' # Easter Egg sound
-
-from gi.repository import Gtk, Gdk, GdkPixbuf, GObject
-
+import gtk
from random import uniform
-import utils
+import os
+import gobject
from svg_utils import svg_header, svg_footer, svg_rect, svg_str_to_pixbuf, \
svg_from_file
@@ -70,11 +65,11 @@ import logging
_logger = logging.getLogger('fractionbounce-activity')
try:
- from sugar3.graphics import style
+ from sugar.graphics import style
GRID_CELL_SIZE = style.GRID_CELL_SIZE
except ImportError:
GRID_CELL_SIZE = 0
-from sugar3.graphics.alert import NotifyAlert
+
from sprites import Sprites, Sprite
@@ -101,20 +96,21 @@ class Bounce():
else:
self.accelerometer = False
- self.canvas.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
- self.canvas.add_events(Gdk.EventMask.BUTTON_RELEASE_MASK)
- self.canvas.add_events(Gdk.EventMask.POINTER_MOTION_MASK)
- self.canvas.add_events(Gdk.EventMask.KEY_PRESS_MASK)
- self.canvas.add_events(Gdk.EventMask.KEY_RELEASE_MASK)
- self.canvas.connect('draw', self.__draw_cb)
+ self.canvas.set_flags(gtk.CAN_FOCUS)
+ self.canvas.add_events(gtk.gdk.BUTTON_PRESS_MASK)
+ self.canvas.add_events(gtk.gdk.BUTTON_RELEASE_MASK)
+ self.canvas.add_events(gtk.gdk.POINTER_MOTION_MASK)
+ self.canvas.add_events(gtk.gdk.KEY_PRESS_MASK)
+ self.canvas.add_events(gtk.gdk.KEY_RELEASE_MASK)
+ self.canvas.connect('expose-event', self._expose_cb)
self.canvas.connect('button-press-event', self._button_press_cb)
self.canvas.connect('button-release-event', self._button_release_cb)
self.canvas.connect('key_press_event', self._keypress_cb)
self.canvas.connect('key_release_event', self._keyrelease_cb)
- self.width = Gdk.Screen.width()
- self.height = Gdk.Screen.height() - GRID_CELL_SIZE
+ self.width = gtk.gdk.screen_width()
+ self.height = gtk.gdk.screen_height() - GRID_CELL_SIZE
self.sprites = Sprites(self.canvas)
- self.scale = Gdk.Screen.height() / 900.0
+ self.scale = gtk.gdk.screen_height() / 900.0
self.timeout = None
self.buddies = [] # used for sharing
@@ -123,7 +119,7 @@ class Bounce():
self.easter_egg = int(uniform(1, 100))
- # Find paths to sound files
+ # Find paths to sound files
self.path_to_success = os.path.join(path, LAUGH)
self.path_to_failure = os.path.join(path, CRASH)
self.path_to_bubbles = os.path.join(path, BUBBLES)
@@ -145,8 +141,8 @@ class Bounce():
self.n = 0
self.dx = 0. # ball horizontal trajectory
- # acceleration (with dampening)
- self.ddy = (6.7 * self.height) / (STEPS * STEPS)
+ # acceleration (with dampening)
+ self.ddy = (6.67 * self.height) / (STEPS * STEPS)
self.dy = self.ddy * (1 - STEPS) / 2. # initial step size
def _create_sprites(self, path):
@@ -166,7 +162,7 @@ class Bounce():
'#C0C0C0', '#282828') + \
svg_footer())
- self.ball = Ball(self.sprites, os.path.join(path, 'balls/soccer.svg'))
+ self.ball = Ball(self.sprites, os.path.join(path, 'soccer.svg'))
self.current_frame = 0
self.bar = Bar(self.sprites, self.width, self.height, self.scale,
@@ -180,7 +176,7 @@ class Bounce():
def pause(self):
''' Pause play when visibility changes '''
if self.timeout is not None:
- GObject.source_remove(self.timeout)
+ gobject.source_remove(self.timeout)
self.timeout = None
def we_are_sharing(self):
@@ -190,7 +186,7 @@ class Bounce():
def its_my_turn(self):
''' When sharing, it is your turn... '''
- GObject.timeout_add(1000, self._take_a_turn)
+ gobject.timeout_add(1000, self._take_a_turn)
def _take_a_turn(self):
''' On your turn, choose a fraction. '''
@@ -202,7 +198,7 @@ class Bounce():
def its_their_turn(self, nick):
''' When sharing, it is nick's turn... '''
- GObject.timeout_add(1000, self._wait_your_turn, nick)
+ gobject.timeout_add(1000, self._wait_your_turn, nick)
def _wait_your_turn(self, nick):
''' Wait for nick to choose a fraction. '''
@@ -266,7 +262,7 @@ class Bounce():
def _move_ball(self):
''' Move the ball and test boundary conditions '''
if self.new_bounce:
- self.bar.mark.move((0, self.height * 2)) # hide the mark
+ self.bar.mark.move((0, self.height)) # hide the mark
if not self.we_are_sharing():
self._choose_a_fraction()
self.new_bounce = False
@@ -308,12 +304,12 @@ class Bounce():
if self._easter_egg_test():
self._animate()
else:
- self.timeout = GObject.timeout_add(
+ self.timeout = gobject.timeout_add(
max(STEP_PAUSE,
BOUNCE_PAUSE - self.count * STEP_PAUSE),
self._move_ball)
else:
- self.timeout = GObject.timeout_add(STEP_PAUSE, self._move_ball)
+ self.timeout = gobject.timeout_add(STEP_PAUSE, self._move_ball)
def _animate(self):
''' A little Easter Egg just for fun. '''
@@ -325,7 +321,7 @@ class Bounce():
self.ball.move_frame(self.current_frame,
(self.ball.ball_x(), self.ball.ball_y()))
self.ball.move_ball((self.ball.ball_x(), self.height))
- GObject.idle_add(play_audio_from_file, self, self.path_to_bubbles)
+ gobject.idle_add(play_audio_from_file, self, self.path_to_bubbles)
if self.accelerometer:
fh = open(ACCELEROMETER_DEVICE)
@@ -348,9 +344,9 @@ class Bounce():
self.ball.hide_frames()
self._test(easter_egg=True)
self.new_bounce = True
- self.timeout = GObject.timeout_add(BOUNCE_PAUSE, self._move_ball)
+ self.timeout = gobject.timeout_add(BOUNCE_PAUSE, self._move_ball)
else:
- GObject.timeout_add(STEP_PAUSE, self._animate)
+ gobject.timeout_add(STEP_PAUSE, self._animate)
def add_fraction(self, string):
''' Add a new challenge; set bar to 2x demominator '''
@@ -423,24 +419,11 @@ class Bounce():
if not easter_egg:
spr = Sprite(self.sprites, 0, 0, self.smiley_graphic)
self.correct += 1
- if utils.full:
- self.alert = NotifyAlert(3)
- self.alert.props.title = _('Great')
- self.alert.props.msg = _('Level up!')
- self.alert.connect('response', lambda w, i: self.activity.remove_alert(w))
- self.activity.add_alert(self.alert)
- GObject.idle_add(play_audio_from_file, self, self.path_to_success)
+ gobject.idle_add(play_audio_from_file, self, self.path_to_success)
else:
if not easter_egg:
spr = Sprite(self.sprites, 0, 0, self.frown_graphic)
- if utils.full:
- self.alert = NotifyAlert(3)
- self.alert.props.title = _('Oh...')
- self.alert.props.msg = _('Level down')
- self.alert.connect('response', lambda w, i: self.activity.remove_alert(w))
- self.activity.add_alert(self.alert)
-
- GObject.idle_add(play_audio_from_file, self, self.path_to_failure)
+ gobject.idle_add(play_audio_from_file, self, self.path_to_failure)
if easter_egg:
spr = Sprite(self.sprites, 0, 0, self.egg_graphic)
@@ -451,24 +434,18 @@ class Bounce():
# after enough correct answers, up the difficulty
if self.correct == len(self.challenges) * 2:
self.challenge += 1
-
- #
if self.challenge < len(CHALLENGES):
for challenge in CHALLENGES[self.challenge]:
self.challenges.append(challenge)
else:
self.expert = True
- self.alert = NotifyAlert(10)
- self.alert.props.title = _('Great')
- self.alert.props.msg = _('Now are in expert levels')
- self.alert.connect('response', lambda w, i: self.activity.remove_alert(w))
- self.activity.add_alert(alerta)
+
self.count += 1
self.dx = 0. # stop horizontal movement between bounces
def _keypress_cb(self, area, event):
''' Keypress: moving the slides with the arrow keys '''
- k = Gdk.keyval_name(event.keyval)
+ k = gtk.gdk.keyval_name(event.keyval)
if k in ['h', 'Left', 'KP_Left']:
self.dx = -DX * self.scale
elif k in ['l', 'Right', 'KP_Right']:
@@ -485,8 +462,10 @@ class Bounce():
self.dx = 0.
return True
- def __draw_cb(self, canvas, cr):
- self.sprites.redraw_sprites(cr=cr)
+ def _expose_cb(self, win, event):
+ ''' Callback to handle window expose events '''
+ self.do_expose_event(event)
+ return True
def do_expose_event(self, event):
''' Handle the expose-event by drawing '''
@@ -495,8 +474,9 @@ class Bounce():
cr.rectangle(event.area.x, event.area.y,
event.area.width, event.area.height)
cr.clip()
+ # Refresh sprite list
self.sprites.redraw_sprites(cr=cr)
def _destroy_cb(self, win, event):
''' Callback to handle quit '''
- Gtk.main_quit()
+ gtk.main_quit()
diff --git a/icons/fraction.svg b/icons/fraction.svg
index 0ccc8ea..d7c6452 100644
--- a/icons/fraction.svg
+++ b/icons/fraction.svg
@@ -25,13 +25,6 @@
</metadata>
<defs
id="defs4" />
- <rect
- width="55"
- height="55"
- x="0"
- y="0"
- id="rect2984"
- style="fill:#282828;fill-opacity:1;stroke:none" />
<text
x="-1.6708984"
y="39.189453"
diff --git a/icons/percent.svg b/icons/percent.svg
index cece558..7311df2 100644
--- a/icons/percent.svg
+++ b/icons/percent.svg
@@ -25,13 +25,6 @@
</metadata>
<defs
id="defs4" />
- <rect
- width="55"
- height="55"
- x="0"
- y="0"
- id="rect2984"
- style="fill:#282828;fill-opacity:1;stroke:none" />
<text
x="4.6953125"
y="44.972656"
diff --git a/icons/sector.svg b/icons/sector.svg
index 5596928..c0bbd95 100644
--- a/icons/sector.svg
+++ b/icons/sector.svg
@@ -11,29 +11,8 @@
width="55"
height="55"
id="svg2">
- <metadata
- id="metadata3930">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs3928" />
- <rect
- width="55"
- height="55"
- x="0"
- y="0"
- id="rect2984"
- style="fill:#282828;fill-opacity:1;stroke:none" />
<path
- d="M 47.142859,25.588802 A 19.855213,18.581081 0 1 1 27.35948,7.0078426 L 27.28764,25.588802 z"
+ d="M 47.142859,25.588802 A 19.855213,18.581081 0 1 1 27.35948,7.0078426 l -0.07184,18.5809594 z"
transform="matrix(0,-1.0906182,-1.1654035,0,57.32128,57.260403)"
id="path2984"
style="fill:#c0c0c0;fill-opacity:1;stroke:#ffffff;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
diff --git a/po/af.po b/po/af.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/af.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ak.po b/po/ak.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ak.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/am.po b/po/am.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/am.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ar.po b/po/ar.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ar.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ayc.po b/po/ayc.po
new file mode 100644
index 0000000..bd117c9
--- /dev/null
+++ b/po/ayc.po
@@ -0,0 +1,116 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: 2013-04-25 03:55+0200\n"
+"Last-Translator: EdgarQuispeChambi <quispedgar@yahoo.es>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: ayc\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.5\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr "Jaljatanaka kutiqtayiri"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr "basqueta piluta"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr "fútbol piluta"
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr "apnaqirina wakichata"
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr "Jaqichjata"
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr "<Ctrl>Q wakichata"
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr "Amtäwi"
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr "jaljatanaka"
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr "suyunaka"
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr "patakata jaljatanaka"
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr "qalltañataki piluta limt'aña"
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr "Jakhjata"
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr "Jakhjaña"
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr "yaqha jaljayaña yapxataña"
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr "maya piluta jajlliña"
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr "Piluta maya chiqaruwa thuqxati %(fraction)s siqi ch'iqäxata jak'aru."
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr "Yaqhanaka mayachasiñapa suyaña."
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr "Anatiri qalltañapa suyaña."
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr "mayachasiwa."
+
+#: bar.py:84
+msgid "0"
+msgstr "0 chimpu"
+
+#: bar.py:88
+msgid "1"
+msgstr "1 chimpu"
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr "clic limt'ma jaljayañanaka jajlliña wakichataru."
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr "Suyt'ataskiwa %(buddy)s"
diff --git a/po/aym.po b/po/aym.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/aym.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/bg.po b/po/bg.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/bn.po b/po/bn.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/bn.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/bn_IN.po b/po/bn_IN.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/bn_IN.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/bs.po b/po/bs.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/bs.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ca.po b/po/ca.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ca.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/cpp.po b/po/cpp.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/cpp.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/cs.po b/po/cs.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/cs.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/de.po b/po/de.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/de.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/dz.po b/po/dz.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/dz.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/el.po b/po/el.po
new file mode 100644
index 0000000..63126ba
--- /dev/null
+++ b/po/el.po
@@ -0,0 +1,119 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: 2012-09-27 20:38+0200\n"
+"Last-Translator: Yannis <kiolalis@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.5\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr "FractionBounce"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr "μπάλα μπάσκετ"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr "μπάλα ποδοσφαίρου"
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr "καθορισμός χρήστη"
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr "Προσαρμοσμένο"
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr "<Ctrl>Q"
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr "Έργο"
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr "κλάσματα"
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr "τομείς"
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr "ποσοστά"
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr "Κάντε κλικ πάνω στην μπάλα για να ξεκινήσετε"
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr "αριθμητής"
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr "παρανομαστής"
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr "προσθήκη νέου κλάσματος"
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr "επιλογή μπάλας"
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+"Μετακινήστε την μπάλα με τα βελάκια, καθώς αυτή αναπηδά, στη θέση %"
+"(fraction)s ξεκινώντας από τα αριστερά της μπάρας που βρίσκεται στο κάτω "
+"μέρος της οθόνης."
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr "Περιμένετε να συνδεθούν και άλλοι χρήστες"
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr "Περιμένετε αυτόν που έχει μοιράσει τη δραστηριότητα να την ξεκινήσει."
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr "έχει συνδεθεί"
+
+#: bar.py:84
+msgid "0"
+msgstr "0"
+
+#: bar.py:88
+msgid "1"
+msgstr "1"
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr "Κάντε κλικ στην μπάρα για να επιλέξετεένα κλάσμα."
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr "Αναμονή για τον %(buddy)s"
diff --git a/po/es.po b/po/es.po
new file mode 100644
index 0000000..0501baa
--- /dev/null
+++ b/po/es.po
@@ -0,0 +1,118 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: 2012-02-14 17:55+0200\n"
+"Last-Translator: AlanJAS <alanjas@hotmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.5\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr "RebotaFracciones"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr "pelota de basquet"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr "pelota de futbol"
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr "definido por el usuario"
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr "Personalizado"
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr "<Ctrl>Q"
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr "Proyecto"
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr "fracciones"
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr "sectores"
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr "porcentajes"
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr "Pulsar la pelota para empezar."
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr "numerador"
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr "denominador"
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr "agregar una nueva fraccion"
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr "escoger una pelota"
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+"Rebota la pelota a una posición %(fraction)s de la distancia dellado "
+"izquierdo de la barra."
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr "Esperar a que otros se unan."
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr "Esperar a que el participante empiece."
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr "se ha unido."
+
+#: bar.py:84
+msgid "0"
+msgstr "0"
+
+#: bar.py:88
+msgid "1"
+msgstr "1"
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr "Haga clic en la barra para escoger una fracción."
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr "Esperando a %(buddy)s"
diff --git a/po/fa.po b/po/fa.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/fa.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/fa_AF.po b/po/fa_AF.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/fa_AF.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ff.po b/po/ff.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ff.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/fi.po b/po/fi.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/fi.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/fil.po b/po/fil.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/fil.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..d726291
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,118 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: 2012-07-15 12:52+0200\n"
+"Last-Translator: Bastien Guerry <bzg@laptop.org>\n"
+"Language-Team: OLPC France <contact@olpc-france.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr "FractionBounce"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr "basket"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr "football"
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr "défini par l'utilisateur"
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr "Personnalisé"
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr "<Ctrl>Q"
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr "Projet"
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr "fractions"
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr "secteurs"
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr "pourcents"
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr "Clique sur la balle pour démarrer."
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr "numérateur"
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr "dénominateur"
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr "ajoute une nouvelle fraction"
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr "choisis une balle"
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+"Fais rebondir la balle à %(fraction)s de distance du côté gauche de \n"
+"la barre."
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr "Attends que les autres te rejoignent."
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr "Attends que celui qui partage démarre."
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr "a rejoint."
+
+#: bar.py:84
+msgid "0"
+msgstr "0"
+
+#: bar.py:88
+msgid "1"
+msgstr "1"
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr "Clique sur la barre pour choisir une fraction."
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr "En attente de %(buddy)s"
diff --git a/po/gn.po b/po/gn.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/gn.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/gu.po b/po/gu.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/gu.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ha.po b/po/ha.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ha.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/he.po b/po/he.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/he.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/hi.po b/po/hi.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/hi.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ht.po b/po/ht.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ht.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/hu.po b/po/hu.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/hu.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/hus.po b/po/hus.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/hus.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/id.po b/po/id.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/id.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ig.po b/po/ig.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ig.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/is.po b/po/is.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/is.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/it.po b/po/it.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ja.po b/po/ja.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ja.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/km.po b/po/km.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/km.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/kn.po b/po/kn.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/kn.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ko.po b/po/ko.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ko.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/kos.po b/po/kos.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/kos.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ku.po b/po/ku.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ku.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/lt.po b/po/lt.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/lt.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/lv.po b/po/lv.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/mg.po b/po/mg.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/mg.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/mi.po b/po/mi.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/mi.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/mk.po b/po/mk.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/mk.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ml.po b/po/ml.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ml.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/mn.po b/po/mn.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/mn.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/mr.po b/po/mr.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/mr.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ms.po b/po/ms.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ms.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/mvo.po b/po/mvo.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/mvo.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/na.po b/po/na.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/na.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/nah.po b/po/nah.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/nah.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/nb.po b/po/nb.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/nb.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ne.po b/po/ne.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ne.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/nl.po b/po/nl.po
new file mode 100644
index 0000000..1a91e77
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,118 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: 2012-01-28 00:53+0200\n"
+"Last-Translator: whe <heppew@yahoo.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.5\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr "FractieStuiter"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr "basketbal"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr "voetbal"
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr "gebruiker gedefinieerd"
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr "Aangepast"
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr "<Ctrl>Q"
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr "Project"
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr "fracties"
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr "sectoren"
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr "procenten"
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr "Klik op de bal om te starten."
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr "nummeraar"
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr "benoemer"
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr "voeg een nieuwe breuk toe"
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr "kies een bal"
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+"Stuiter de bal naar een positie %(fraction)s van de weg van de linkerkant "
+"van de balk."
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr "Wacht tot anderen meedoen."
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr "Wacht tot de deler start."
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr "doet mee."
+
+#: bar.py:84
+msgid "0"
+msgstr "0"
+
+#: bar.py:88
+msgid "1"
+msgstr "1"
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr "Klik op de balk om een breuk te kiezen."
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr "Wavht op %(buddy)s"
diff --git a/po/nn.po b/po/nn.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/nn.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/pa.po b/po/pa.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/pa.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/pap.po b/po/pap.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/pap.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/pbs.po b/po/pbs.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/pbs.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..e5bf6fb
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,119 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: 2012-02-17 14:27+0200\n"
+"Last-Translator: Iron <maciek_ksa@interia.pl>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+"X-Generator: Pootle 2.0.5\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr "Odbijanie ułamkami"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr "koszykówka"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr "piłka nożna"
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr "zdefiniowany przez użytkownika"
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr "Własny"
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr "<Ctrl>Q"
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr "Projekt"
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr "ułamki"
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr "sektory"
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr "procenty"
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr "Naciśnij na piłkę, aby rozpocząć."
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr "licznik"
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr "mianownik"
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr "dodaj nowy ułamek"
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr "wybierz piłkę"
+
+#: FractionBounceActivity.py:246
+#, python-format
+#, python-format,
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr "Odbij piłkę do pozycji %(fraction)s na drodze od lewej strony paska."
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr "Zaczekaj aż dołączą inni."
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr "Zaczekaj na współuczestnika, aby rozpocząć."
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr "dołączył(a)."
+
+#: bar.py:84
+msgid "0"
+msgstr "0"
+
+#: bar.py:88
+msgid "1"
+msgstr "1"
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr "Kliknij na pasek, aby wybrać ułamek."
+
+#: bounce.py:209
+#, python-format
+#, python-format,
+msgid "Waiting for %(buddy)s"
+msgstr "Czekam na %(buddy)s"
diff --git a/po/ps.po b/po/ps.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ps.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/pt.po b/po/pt.po
new file mode 100644
index 0000000..3fdd1e2
--- /dev/null
+++ b/po/pt.po
@@ -0,0 +1,118 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: 2012-04-12 23:22+0200\n"
+"Last-Translator: Eduardo H. <hoboprimate@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Pootle 2.0.5\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr "SaltitaFração"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr "bola de basquetebol"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr "bola de futebol"
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr "definido pelo utilizador"
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr "Personalizado"
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr "<Ctrl>Q"
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr "Projeto"
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr "frações"
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr "sectores"
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr "percentagens"
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr "Clica na bola para iniciar."
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr "numerador"
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr "denominador"
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr "adicionar nova fração"
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr "escolhe uma bola"
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+"Faz a bola saltitar numa posição %(fraction)s do caminho a partir do lado "
+"esquerdo da barra."
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr "Espera que outros se juntem."
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr "Espera que o participante inicie."
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr "entrou."
+
+#: bar.py:84
+msgid "0"
+msgstr "0"
+
+#: bar.py:88
+msgid "1"
+msgstr "1"
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr "Clica na barra para escolher uma fração."
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr "À espera de %(buddy)s"
diff --git a/po/pt_BR.po b/po/pt_BR.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/pt_BR.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/quy.po b/po/quy.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/quy.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/quz.po b/po/quz.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/quz.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ro.po b/po/ro.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ro.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ru.po b/po/ru.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ru.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/rw.po b/po/rw.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/rw.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/sd.po b/po/sd.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/sd.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/si.po b/po/si.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/si.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/sk.po b/po/sk.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/sk.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/sl.po b/po/sl.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/sl.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/sm.po b/po/sm.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/sm.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/son.po b/po/son.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/son.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/sq.po b/po/sq.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/sq.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/sr.po b/po/sr.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/st.po b/po/st.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/st.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/sv.po b/po/sv.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/sv.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/sw.po b/po/sw.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/sw.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ta.po b/po/ta.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ta.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/te.po b/po/te.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/te.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/to.po b/po/to.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/to.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/tr.po b/po/tr.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/tr.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/tvl.po b/po/tvl.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/tvl.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/tyv.po b/po/tyv.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/tyv.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/tzm.po b/po/tzm.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/tzm.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/tzo.po b/po/tzo.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/tzo.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ug.po b/po/ug.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ug.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/uk.po b/po/uk.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/uk.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/ur.po b/po/ur.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/ur.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/vi.po b/po/vi.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/vi.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/wa.po b/po/wa.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/wa.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/yo.po b/po/yo.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/yo.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/zh_CN.po b/po/zh_CN.po
new file mode 100644
index 0000000..8ba8a61
--- /dev/null
+++ b/po/zh_CN.po
@@ -0,0 +1,116 @@
+# 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: 2012-02-03 03:33+0200\n"
+"Last-Translator: lite <litekok@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Pootle 2.0.5\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr "分数弹跳"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr "篮球"
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr "足球"
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr "用户定义"
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr "定制"
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr "<Ctrl>Q"
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr "项目"
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr "分数"
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr "扇形"
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr "%"
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr "点击球开始。"
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr "分子"
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr "分母"
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr "添加新的分数"
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr "选择球"
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr "球弹跳到左边栏 %(fraction)s 的位置。"
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr "等待其他人加入。"
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr "等待分享者开始。"
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr "已加入。"
+
+#: bar.py:84
+msgid "0"
+msgstr "0"
+
+#: bar.py:88
+msgid "1"
+msgstr "1"
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr "单击边栏选择分数。"
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr "正在等待 %(buddy)s"
diff --git a/po/zh_HK.po b/po/zh_HK.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/zh_HK.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/po/zh_TW.po b/po/zh_TW.po
new file mode 100644
index 0000000..bc935cb
--- /dev/null
+++ b/po/zh_TW.po
@@ -0,0 +1,116 @@
+# 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.
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-10-22 11:31-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.7.0\n"
+
+#: activity/activity.info:2
+msgid "FractionBounce"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:165
+#: FractionBounceActivity.py:182
+msgid "basketball"
+msgstr ""
+
+#: FractionBounceActivity.py:48 FractionBounceActivity.py:185
+#: FractionBounceActivity.py:195
+msgid "soccer ball"
+msgstr ""
+
+#: FractionBounceActivity.py:48
+msgid "user defined"
+msgstr ""
+
+#: FractionBounceActivity.py:103 FractionBounceActivity.py:125
+msgid "Custom"
+msgstr ""
+
+#: FractionBounceActivity.py:114
+msgid "<Ctrl>Q"
+msgstr ""
+
+#: FractionBounceActivity.py:124
+msgid "Project"
+msgstr ""
+
+#: FractionBounceActivity.py:134
+msgid "fractions"
+msgstr ""
+
+#: FractionBounceActivity.py:138
+msgid "sectors"
+msgstr ""
+
+#: FractionBounceActivity.py:142
+msgid "percents"
+msgstr ""
+
+#: FractionBounceActivity.py:149
+msgid "Click the ball to start."
+msgstr ""
+
+#: FractionBounceActivity.py:153
+msgid "numerator"
+msgstr ""
+
+#: FractionBounceActivity.py:156
+msgid "denominator"
+msgstr ""
+
+#: FractionBounceActivity.py:160
+msgid "add new fraction"
+msgstr ""
+
+#: FractionBounceActivity.py:166
+msgid "choose a ball"
+msgstr ""
+
+#: FractionBounceActivity.py:246
+#, python-format
+msgid ""
+"Bounce the ball to a position %(fraction)s of the way from the left side of "
+"the bar."
+msgstr ""
+
+#: FractionBounceActivity.py:314
+msgid "Wait for others to join."
+msgstr ""
+
+#: FractionBounceActivity.py:321
+msgid "Wait for the sharer to start."
+msgstr ""
+
+#: FractionBounceActivity.py:382
+msgid "has joined."
+msgstr ""
+
+#: bar.py:84
+msgid "0"
+msgstr ""
+
+#: bar.py:88
+msgid "1"
+msgstr ""
+
+#: bounce.py:198
+msgid "Click on the bar to choose a fraction."
+msgstr ""
+
+#: bounce.py:209
+#, python-format
+msgid "Waiting for %(buddy)s"
+msgstr ""
diff --git a/setup.py b/setup.py
index bdeaed6..bd1e319 100755
--- a/setup.py
+++ b/setup.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python
-from sugar3.activity import bundlebuilder
+from sugar.activity import bundlebuilder
if __name__ == "__main__":
bundlebuilder.start()
diff --git a/balls/soccer.svg b/soccer.svg
index 0ed65fa..0ed65fa 100644
--- a/balls/soccer.svg
+++ b/soccer.svg
diff --git a/sprites.py b/sprites.py
index 8cad6a6..baae94f 100644
--- a/sprites.py
+++ b/sprites.py
@@ -24,7 +24,7 @@
'''
sprites.py is a simple sprites library for managing graphics objects,
-'sprites', on a Gtk.DrawingArea. It manages multiple sprites with
+'sprites', on a gtk.DrawingArea. It manages multiple sprites with
methods such as move, hide, set_layer, etc.
There are two classes:
@@ -68,7 +68,7 @@ Example usage:
# method for converting SVG to a gtk pixbuf
def svg_str_to_pixbuf(svg_string):
- pl = GdkPixbuf.PixbufLoader('svg')
+ pl = gtk.gdk.PixbufLoader('svg')
pl.write(svg_string)
pl.close()
pixbuf = pl.get_pixbuf()
@@ -76,20 +76,21 @@ def svg_str_to_pixbuf(svg_string):
'''
-import gi
-from gi.repository import Gtk, GdkPixbuf, Gdk
-from gi.repository import Pango, PangoCairo
+import pygtk
+pygtk.require('2.0')
+import gtk
+import pango
+import pangocairo
import cairo
-
class Sprites:
''' A class for the list of sprites and everything they share in common '''
def __init__(self, widget):
''' Initialize an empty array of sprites '''
- self.cr = None
self.widget = widget
self.list = []
+ self.cr = None
def set_cairo_context(self, cr):
''' Cairo context may be set or reset after __init__ '''
@@ -97,7 +98,7 @@ class Sprites:
def get_sprite(self, i):
''' Return a sprint from the array '''
- if i < 0 or i > len(self.list)-1:
+ if i < 0 or i > len(self.list) - 1:
return(None)
else:
return(self.list[i])
@@ -159,13 +160,11 @@ class Sprite:
''' Initialize an individual sprite '''
self._sprites = sprites
self.save_xy = (x, y) # remember initial (x, y) position
- self.rect = [int(x), int(y), 0, 0]
+ self.rect = gtk.gdk.Rectangle(int(x), int(y), 0, 0)
self._scale = [12]
self._rescale = [True]
self._horiz_align = ["center"]
self._vert_align = ["middle"]
- self._x_pos = [None]
- self._y_pos = [None]
self._fd = None
self._bold = False
self._italic = False
@@ -173,7 +172,7 @@ class Sprite:
self._margins = [0, 0, 0, 0]
self.layer = 100
self.labels = []
- self.images = []
+ self.cached_surfaces = []
self._dx = [] # image offsets
self._dy = []
self.type = None
@@ -182,47 +181,54 @@ class Sprite:
def set_image(self, image, i=0, dx=0, dy=0):
''' Add an image to the sprite. '''
- while len(self.images) < i + 1:
- self.images.append(None)
+ while len(self.cached_surfaces) < i + 1:
+ self.cached_surfaces.append(None)
self._dx.append(0)
self._dy.append(0)
- self.images[i] = image
self._dx[i] = dx
self._dy[i] = dy
- if hasattr(self.images[i], 'get_width'):
- w = self.images[i].get_width()
- h = self.images[i].get_height()
+ if isinstance(image, gtk.gdk.Pixbuf):
+ w = image.get_width()
+ h = image.get_height()
else:
- w, h = self.images[i].get_size()
+ w, h = image.get_size()
if i == 0: # Always reset width and height when base image changes.
- self.rect[2] = w + dx
- self.rect[3] = h + dy
+ self.rect.width = w + dx
+ self.rect.height = h + dy
else:
- if w + dx > self.rect[2]:
- self.rect[2] = w + dx
- if h + dy > self.rect[3]:
- self.rect[3] = h + dy
+ if w + dx > self.rect.width:
+ self.rect.width = w + dx
+ if h + dy > self.rect.height:
+ self.rect.height = h + dy
+ surface = cairo.ImageSurface(
+ cairo.FORMAT_ARGB32, self.rect.width, self.rect.height)
+ context = cairo.Context(surface)
+ context = gtk.gdk.CairoContext(context)
+ context.set_source_pixbuf(image, 0, 0)
+ context.rectangle(0, 0, self.rect.width, self.rect.height)
+ context.fill()
+ self.cached_surfaces[i] = surface
def move(self, pos):
''' Move to new (x, y) position '''
self.inval()
- self.rect[0], self.rect[1] = int(pos[0]), int(pos[1])
+ self.rect.x, self.rect.y = int(pos[0]), int(pos[1])
self.inval()
def move_relative(self, pos):
''' Move to new (x+dx, y+dy) position '''
self.inval()
- self.rect[0] += int(pos[0])
- self.rect[1] += int(pos[1])
+ self.rect.x += int(pos[0])
+ self.rect.y += int(pos[1])
self.inval()
def get_xy(self):
''' Return current (x, y) position '''
- return (self.rect[0], self.rect[1])
+ return (self.rect.x, self.rect.y)
def get_dimensions(self):
''' Return current size '''
- return (self.rect[2], self.rect[3])
+ return (self.rect.width, self.rect.height)
def get_layer(self):
''' Return current layer '''
@@ -240,7 +246,7 @@ class Sprite:
if layer is not None:
self.layer = layer
for i in range(self._sprites.length_of_list()):
- if self.layer < self._sprites.get_sprite(i).layer:
+ if layer < self._sprites.get_sprite(i).layer:
self._sprites.insert_in_list(self, i)
self.inval()
return
@@ -273,12 +279,10 @@ class Sprite:
self._rescale.append(self._rescale[0])
self._horiz_align.append(self._horiz_align[0])
self._vert_align.append(self._vert_align[0])
- self._x_pos.append(self._x_pos[0])
- self._y_pos.append(self._y_pos[0])
def set_font(self, font):
''' Set the font for a label '''
- self._fd = Pango.FontDescription(font)
+ self._fd = pango.FontDescription(font)
def set_label_color(self, rgb):
''' Set the font color for a label '''
@@ -296,15 +300,13 @@ class Sprite:
return
def set_label_attributes(self, scale, rescale=True, horiz_align="center",
- vert_align="middle", x_pos=None, y_pos=None, i=0):
+ vert_align="middle", i=0):
''' Set the various label attributes '''
self._extend_labels_array(i)
self._scale[i] = scale
self._rescale[i] = rescale
self._horiz_align[i] = horiz_align
self._vert_align[i] = vert_align
- self._x_pos[i] = x_pos
- self._y_pos[i] = y_pos
def hide(self):
''' Hide a sprite '''
@@ -317,149 +319,136 @@ class Sprite:
def inval(self):
''' Invalidate a region for gtk '''
- # self._sprites.window.invalidate_rect(self.rect, False)
- self._sprites.widget.queue_draw_area(self.rect[0],
- self.rect[1],
- self.rect[2],
- self.rect[3])
+ self._sprites.widget.queue_draw_area(self.rect.x,
+ self.rect.y,
+ self.rect.width,
+ self.rect.height)
def draw(self, cr=None):
''' Draw the sprite (and label) '''
if cr is None:
- cr = self._sprites.cr
- if cr is None:
print 'sprite.draw: no Cairo context.'
return
- for i, img in enumerate(self.images):
- if isinstance(img, GdkPixbuf.Pixbuf):
- Gdk.cairo_set_source_pixbuf(cr, img,
- self.rect[0] + self._dx[i],
- self.rect[1] + self._dy[i])
- cr.rectangle(self.rect[0] + self._dx[i],
- self.rect[1] + self._dy[i],
- self.rect[2],
- self.rect[3])
- cr.fill()
- elif type(img) == cairo.ImageSurface:
- cr.set_source_surface(img, self.rect[0] + self._dx[i],
- self.rect[1] + self._dy[i])
- cr.rectangle(self.rect[0] + self._dx[i],
- self.rect[1] + self._dy[i],
- self.rect[2],
- self.rect[3])
- cr.fill()
- else:
- print 'sprite.draw: source not a pixbuf (%s)' % (type(img))
+ for i, surface in enumerate(self.cached_surfaces):
+ cr.set_source_surface(surface,
+ self.rect.x + self._dx[i],
+ self.rect.y + self._dy[i])
+ cr.rectangle(self.rect.x + self._dx[i],
+ self.rect.y + self._dy[i],
+ self.rect.width,
+ self.rect.height)
+ cr.fill()
if len(self.labels) > 0:
self.draw_label(cr)
def hit(self, pos):
''' Is (x, y) on top of the sprite? '''
x, y = pos
- if x < self.rect[0]:
+ if x < self.rect.x:
return False
- if x > self.rect[0] + self.rect[2]:
+ if x > self.rect.x + self.rect.width:
return False
- if y < self.rect[1]:
+ if y < self.rect.y:
return False
- if y > self.rect[1] + self.rect[3]:
+ if y > self.rect.y + self.rect.height:
return False
return True
def draw_label(self, cr):
''' Draw the label based on its attributes '''
- my_width = self.rect[2] - self._margins[0] - self._margins[2]
+ # Create a pangocairo context
+ cr = pangocairo.CairoContext(cr)
+ my_width = self.rect.width - self._margins[0] - self._margins[2]
if my_width < 0:
my_width = 0
- my_height = self.rect[3] - self._margins[1] - self._margins[3]
+ my_height = self.rect.height - self._margins[1] - self._margins[3]
for i in range(len(self.labels)):
- pl = PangoCairo.create_layout(cr)
- pl.set_text(str(self.labels[i]), -1)
- self._fd.set_size(int(self._scale[i] * Pango.SCALE))
+ pl = cr.create_layout()
+ pl.set_text(str(self.labels[i]))
+ self._fd.set_size(int(self._scale[i] * pango.SCALE))
pl.set_font_description(self._fd)
- w = pl.get_size()[0] / Pango.SCALE
+ w = pl.get_size()[0] / pango.SCALE
if w > my_width:
if self._rescale[i]:
self._fd.set_size(
- int(self._scale[i] * Pango.SCALE * my_width / w))
+ int(self._scale[i] * pango.SCALE * my_width / w))
pl.set_font_description(self._fd)
- w = pl.get_size()[0] / Pango.SCALE
+ w = pl.get_size()[0] / pango.SCALE
else:
j = len(self.labels[i]) - 1
while(w > my_width and j > 0):
pl.set_text(
- "…" + self.labels[i][len(self.labels[i]) - j:], -1)
- self._fd.set_size(int(self._scale[i] * Pango.SCALE))
+ "…" + self.labels[i][len(self.labels[i]) - j:])
+ self._fd.set_size(int(self._scale[i] * pango.SCALE))
pl.set_font_description(self._fd)
- w = pl.get_size()[0] / Pango.SCALE
+ w = pl.get_size()[0] / pango.SCALE
j -= 1
- if self._x_pos[i] is not None:
- x = int(self.rect[0] + self._x_pos[i])
- elif self._horiz_align[i] == "center":
- x = int(self.rect[0] + self._margins[0] + (my_width - w) / 2)
+ if self._horiz_align[i] == "center":
+ x = int(self.rect.x + self._margins[0] + (my_width - w) / 2)
elif self._horiz_align[i] == 'left':
- x = int(self.rect[0] + self._margins[0])
+ x = int(self.rect.x + self._margins[0])
else: # right
- x = int(self.rect[0] + self.rect[2] - w - self._margins[2])
- h = pl.get_size()[1] / Pango.SCALE
- if self._y_pos[i] is not None:
- y = int(self.rect[1] + self._y_pos[i])
- elif self._vert_align[i] == "middle":
- y = int(self.rect[1] + self._margins[1] + (my_height - h) / 2)
+ x = int(self.rect.x + self.rect.width - w - self._margins[2])
+ h = pl.get_size()[1] / pango.SCALE
+ if self._vert_align[i] == "middle":
+ y = int(self.rect.y + self._margins[1] + (my_height - h) / 2)
elif self._vert_align[i] == "top":
- y = int(self.rect[1] + self._margins[1])
+ y = int(self.rect.y + self._margins[1])
else: # bottom
- y = int(self.rect[1] + self.rect[3] - h - self._margins[3])
+ y = int(self.rect.y + self.rect.height - h - self._margins[3])
cr.save()
cr.translate(x, y)
cr.set_source_rgb(self._color[0], self._color[1], self._color[2])
- PangoCairo.update_layout(cr, pl)
- PangoCairo.show_layout(cr, pl)
+ cr.update_layout(pl)
+ cr.show_layout(pl)
cr.restore()
- def label_width(self, cr=None):
+ def label_width(self):
''' Calculate the width of a label '''
- if cr is None:
- cr = self._sprites.cr
- max = 0
- for i in range(len(self.labels)):
- pl = PangoCairo.create_layout(cr)
- pl.set_text(str(self.labels[i]), -1)
- self._fd.set_size(int(self._scale[i] * Pango.SCALE))
- pl.set_font_description(self._fd)
- w = pl.get_size()[0] / Pango.SCALE
- if w > max:
- max = w
- return max
+ cr = pangocairo.CairoContext(self._sprites.cr)
+ if cr is not None:
+ max = 0
+ for i in range(len(self.labels)):
+ pl = cr.create_layout()
+ pl.set_text(self.labels[i])
+ self._fd.set_size(int(self._scale[i] * pango.SCALE))
+ pl.set_font_description(self._fd)
+ w = pl.get_size()[0] / pango.SCALE
+ if w > max:
+ max = w
+ return max
+ else:
+ return self.rect.width
def label_safe_width(self):
''' Return maximum width for a label '''
- return self.rect[2] - self._margins[0] - self._margins[2]
+ return self.rect.width - self._margins[0] - self._margins[2]
def label_safe_height(self):
''' Return maximum height for a label '''
- return self.rect[3] - self._margins[1] - self._margins[3]
+ return self.rect.height - self._margins[1] - self._margins[3]
def label_left_top(self):
''' Return the upper-left corner of the label safe zone '''
return(self._margins[0], self._margins[1])
def get_pixel(self, pos, i=0):
- ''' Return the pixl at (x, y) '''
- x, y = pos
- x = x - self.rect[0]
- y = y - self.rect[1]
- if y > self.images[i].get_height() - 1:
- return(-1, -1, -1, -1)
- try:
- array = self.images[i].get_pixels()
- if array is not None:
- offset = (y * self.images[i].get_width() + x) * 4
- r, g, b, a = ord(array[offset]), ord(array[offset + 1]),\
- ord(array[offset + 2]), ord(array[offset + 3])
- return(r, g, b, a)
- else:
- return(-1, -1, -1, -1)
- except IndexError:
- print "Index Error: %d %d" % (len(array), offset)
+ ''' Return the pixel at (x, y) '''
+ x = int(pos[0] - self.rect.x)
+ y = int(pos[1] - self.rect.y)
+ if x < 0 or x > (self.rect.width - 1) or \
+ y < 0 or y > (self.rect.height - 1):
return(-1, -1, -1, -1)
+
+ # create a new 1x1 cairo surface
+ cs = cairo.ImageSurface(cairo.FORMAT_RGB24, 1, 1);
+ cr = cairo.Context(cs)
+ cr.set_source_surface(self.cached_surfaces[i], -x, -y)
+ cr.rectangle(0,0,1,1)
+ cr.set_operator(cairo.OPERATOR_SOURCE)
+ cr.fill()
+ cs.flush() # ensure all writing is done
+ # Read the pixel
+ pixels = cs.get_data()
+ return (ord(pixels[2]), ord(pixels[1]), ord(pixels[0]), 0)
+
diff --git a/svg_utils.py b/svg_utils.py
index 1ea67e3..2bbc67d 100644
--- a/svg_utils.py
+++ b/svg_utils.py
@@ -9,8 +9,9 @@
# You should have received a copy of the GNU General Public License
# along with this library; if not, write to the Free Software
# Foundation, 51 Franklin Street, Suite 500 Boston, MA 02110-1335 USA
-from gi.repository import GdkPixbuf
+
+import gtk
from math import sin, cos, pi
@@ -23,7 +24,7 @@ def generate_xo_svg(scale=1.0, colors=["#C0C0C0", "#282828"]):
def svg_str_to_pixbuf(svg_string):
''' Load pixbuf from SVG string '''
- pl = GdkPixbuf.PixbufLoader.new_with_type('svg')
+ pl = gtk.gdk.PixbufLoader('svg')
pl.write(svg_string)
pl.close()
pixbuf = pl.get_pixbuf()
@@ -56,7 +57,7 @@ def svg_rect(w, h, rx, ry, x, y, fill, stroke):
return svg_string
-def _svg_xo(fill, stroke, width=5.5):
+def _svg_xo(fill, stroke, width=3.5):
''' Returns XO icon graphic '''
svg_string = '<path d="M33.233,35.1l10.102,10.1c0.752,\
0.75,1.217,1.783,1.217,2.932\
diff --git a/toolbar_utils.py b/toolbar_utils.py
index 72f7100..9b7f6be 100644
--- a/toolbar_utils.py
+++ b/toolbar_utils.py
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2011, Walter Bender
-# Port To GTK3:
-# Ignacio Rodriguez <ignaciorodriguez@sugarlabs.org>
+
# 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
@@ -12,12 +11,12 @@
# Foundation, 51 Franklin Street, Suite 500 Boston, MA 02110-1335 USA
-from gi.repository import Gtk
+import gtk
-from sugar3.graphics.radiotoolbutton import RadioToolButton
-from sugar3.graphics.toolbutton import ToolButton
-from sugar3.graphics.combobox import ComboBox
-from sugar3.graphics.toolcombobox import ToolComboBox
+from sugar.graphics.radiotoolbutton import RadioToolButton
+from sugar.graphics.toolbutton import ToolButton
+from sugar.graphics.combobox import ComboBox
+from sugar.graphics.toolcombobox import ToolComboBox
def combo_factory(combo_array, toolbar, callback, cb_arg=None,
@@ -33,7 +32,7 @@ def combo_factory(combo_array, toolbar, callback, cb_arg=None,
for i, selection in enumerate(combo_array):
combo.append_item(i, selection, None)
combo.show()
- toolitem = Gtk.ToolItem()
+ toolitem = gtk.ToolItem()
toolitem.add(combo)
if hasattr(toolbar, 'insert'): # the main toolbar
toolbar.insert(toolitem, -1)
@@ -47,13 +46,13 @@ def combo_factory(combo_array, toolbar, callback, cb_arg=None,
def entry_factory(default_string, toolbar, tooltip=None, max=3):
''' Factory for adding a text box to a toolbar '''
- entry = Gtk.Entry()
+ entry = gtk.Entry()
entry.set_text(default_string)
if tooltip is not None and hasattr(entry, 'set_tooltip_text'):
entry.set_tooltip_text(tooltip)
entry.set_width_chars(max)
entry.show()
- toolitem = Gtk.ToolItem()
+ toolitem = gtk.ToolItem()
toolitem.add(entry)
if hasattr(toolbar, 'insert'): # the main toolbar
toolbar.insert(toolitem, -1)
@@ -65,7 +64,7 @@ def entry_factory(default_string, toolbar, tooltip=None, max=3):
def button_factory(icon_name, toolbar, callback, cb_arg=None, tooltip=None,
accelerator=None):
- '''Factory for making tooplbar buttons'''
+ '''Factory for making toolbar buttons'''
button = ToolButton(icon_name)
if tooltip is not None:
button.set_tooltip(tooltip)
@@ -84,11 +83,11 @@ def button_factory(icon_name, toolbar, callback, cb_arg=None, tooltip=None,
return button
-def radio_factory(name, toolbar, callback, cb_arg=None, tooltip=None,
+def radio_factory(button_name, toolbar, callback, cb_arg=None, tooltip=None,
group=None):
''' Add a radio button to a toolbar '''
button = RadioToolButton(group=group)
- button.set_icon_name(name)
+ button.set_named_icon(button_name)
if callback is not None:
if cb_arg is None:
button.connect('clicked', callback)
@@ -106,60 +105,35 @@ def radio_factory(name, toolbar, callback, cb_arg=None, tooltip=None,
def label_factory(toolbar, label_text, width=None):
''' Factory for adding a label to a toolbar '''
- label = Gtk.Label(label_text)
+ label = gtk.Label(label_text)
label.set_line_wrap(True)
if width is not None:
label.set_size_request(width, -1) # doesn't work on XOs
label.show()
- toolitem = Gtk.ToolItem()
+ toolitem = gtk.ToolItem()
toolitem.add(label)
- if hasattr(toolbar, 'insert'): # the main toolbar
- toolbar.insert(toolitem, -1)
- else: # or a secondary toolbar
- toolbar.props.page.insert(toolitem, -1)
+ toolbar.insert(toolitem, -1)
toolitem.show()
return label
def separator_factory(toolbar, expand=False, visible=True):
''' add a separator to a toolbar '''
- separator = Gtk.SeparatorToolItem()
+ separator = gtk.SeparatorToolItem()
separator.props.draw = visible
separator.set_expand(expand)
- if hasattr(toolbar, 'insert'): # the main toolbar
- toolbar.insert(separator, -1)
- else: # or a secondary toolbar
- toolbar.props.page.insert(separator, -1)
+ toolbar.insert(separator, -1)
separator.show()
def image_factory(image, toolbar, tooltip=None):
''' Add an image to the toolbar '''
- img = Gtk.Image()
+ img = gtk.Image()
img.set_from_pixbuf(image)
- img_tool = Gtk.ToolItem()
+ img_tool = gtk.ToolItem()
img_tool.add(img)
if tooltip is not None:
img.set_tooltip_text(tooltip)
- if hasattr(toolbar, 'insert'): # the main toolbar
- toolbar.insert(img_tool, -1)
- else: # or a secondary toolbar
- toolbar.props.page.insert(img_tool, -1)
+ toolbar.insert(img_tool, -1)
img_tool.show()
return img
-
-
-def spin_factory(default, min, max, callback, toolbar):
- spin_adj = Gtk.Adjustment(default, min, max, 1, 32, 0)
- spin = Gtk.SpinButton(spin_adj, 0, 0)
- spin_id = spin.connect('value-changed', callback)
- spin.set_numeric(True)
- spin.show()
- toolitem = Gtk.ToolItem()
- toolitem.add(spin)
- if hasattr(toolbar, 'insert'): # the main toolbar
- toolbar.insert(toolitem, -1)
- else:
- toolbar.props.page.insert(toolitem, -1)
- toolitem.show()
- return spin
diff --git a/utils.py b/utils.py
index dc13207..148b05e 100644
--- a/utils.py
+++ b/utils.py
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2011, Walter Bender
-# Copyright (c) 2012, Ignacio Rodriguez
# 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
@@ -12,83 +11,51 @@
# Foundation, 51 Franklin Street, Suite 500 Boston, MA 02110-1335 USA
-from gi.repository import Gtk
+import gtk
-from sugar3.graphics.objectchooser import ObjectChooser
-from sugar3 import profile
-from sugar3.graphics.style import Color
+from sugar.graphics.objectchooser import ObjectChooser
from StringIO import StringIO
-import json
-json.dumps
-from json import load as jload
-from json import dump as jdump
-full = False
-
-
-def rgb2html(color):
- """Returns a html string from a Gdk color"""
- red = "%x" % int(color.red / 65535.0 * 255)
- if len(red) == 1:
- red = "0%s" % red
-
- green = "%x" % int(color.green / 65535.0 * 255)
-
- if len(green) == 1:
- green = "0%s" % green
-
- blue = "%x" % int(color.blue / 65535.0 * 255)
-
- if len(blue) == 1:
- blue = "0%s" % blue
-
- new_color = "#%s%s%s" % (red, green, blue)
-
- return new_color
-def get_user_fill_color(type='str'):
- """Returns the user fill color"""
- color = profile.get_color()
-
- if type == 'gdk':
- rcolor = Color(color.get_fill_color()).get_gdk_color()
-
- elif type == 'str':
- rcolor = color.get_fill_color()
-
- return rcolor
-
-
-def get_user_stroke_color(type='str'):
- """Returns the user stroke color"""
- color = profile.get_color()
-
- if type == 'gdk':
- rcolor = Color(color.get_stroke_color()).get_gdk_color()
-
- elif type == 'str':
- rcolor = color.get_stroke_color()
+try:
+ USING_JSON_READWRITE = False
+ import json
+ json.dumps
+ from json import load as jload
+ from json import dump as jdump
+except (ImportError, AttributeError):
+ try:
+ import simplejson as json
+ from simplejson import load as jload
+ from simplejson import dump as jdump
+ except (ImportError, AttributeError):
+ USING_JSON_READWRITE = True
- return rcolor
def json_load(text):
""" Load JSON data using what ever resources are available. """
- # strip out leading and trailing whitespace, nulls, and newlines
- io = StringIO(text)
- try:
- listdata = jload(io)
- except ValueError:
- # assume that text is ascii list
- listdata = text.split()
- for i, value in enumerate(listdata):
- listdata[i] = int(value)
+ if USING_JSON_READWRITE is True:
+ listdata = json.read(text)
+ else:
+ # strip out leading and trailing whitespace, nulls, and newlines
+ io = StringIO(text)
+ try:
+ listdata = jload(io)
+ except ValueError:
+ # assume that text is ascii list
+ listdata = text.split()
+ for i, value in enumerate(listdata):
+ listdata[i] = int(value)
return listdata
def json_dump(data):
""" Save data using available JSON tools. """
- _io = StringIO()
- jdump(data, _io)
- return _io.getvalue()
+ if USING_JSON_READWRITE is True:
+ return json.write(data)
+ else:
+ _io = StringIO()
+ jdump(data, _io)
+ return _io.getvalue()
def chooser(parent_window, filter, action):
@@ -98,11 +65,11 @@ def chooser(parent_window, filter, action):
chooser = ObjectChooser(parent=parent_window, what_filter=filter)
except TypeError:
chooser = ObjectChooser(None, parent_window,
- Gtk.DialogFlags.MODAL | Gtk.DialogFlags.DESTROY_WITH_PARENT)
+ gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT)
if chooser is not None:
try:
result = chooser.run()
- if result == Gtk.ResponseType.ACCEPT:
+ if result == gtk.RESPONSE_ACCEPT:
dsobject = chooser.get_selected_object()
action(dsobject)
dsobject.destroy()