diff --git a/bin/sugar-shell b/bin/sugar-shell index ba36fc90..b0f66b4b 100755 --- a/bin/sugar-shell +++ b/bin/sugar-shell @@ -19,7 +19,6 @@ import sys import os from ConfigParser import ConfigParser import gettext -import signal import pygtk pygtk.require('2.0') @@ -86,12 +85,6 @@ def _shell_started_cb(): hw_manager = hardwaremanager.get_manager() hw_manager.set_dcon_freeze(0) -def _sigchild_handler(signum, frame): - try: - os.wait() - except OSError: - pass - def main(): gobject.idle_add(_shell_started_cb) @@ -111,8 +104,6 @@ def main(): win.show_all() gtk.main() - signal.signal(signal.SIGCHLD, _sigchild_handler) - if os.environ.has_key("SUGAR_TP_DEBUG"): # Allow the user time to start up telepathy connection managers # using the Sugar DBus bus address diff --git a/lib/sugar/activity/activityfactory.py b/lib/sugar/activity/activityfactory.py index 85c0832e..119dceab 100644 --- a/lib/sugar/activity/activityfactory.py +++ b/lib/sugar/activity/activityfactory.py @@ -18,6 +18,7 @@ import logging import subprocess +import signal import dbus import gobject @@ -53,6 +54,16 @@ _RAINBOW_SERVICE_NAME = "org.laptop.security.Rainbow" _RAINBOW_ACTIVITY_FACTORY_PATH = "/" _RAINBOW_ACTIVITY_FACTORY_INTERFACE = "org.laptop.security.Rainbow" +_children_pid = [] + +def _sigchild_handler(signum, frame): + for child_pid in _children_pid: + pid, status = os.waitpid(child_pid, os.WNOHANG) + if pid > 0: + _children_pid.remove(pid) + +signal.signal(signal.SIGCHLD, _sigchild_handler) + def create_activity_id(): """Generate a new, unique ID for this activity""" pservice = presenceservice.get_instance() @@ -224,8 +235,9 @@ class ActivityCreationHandler(gobject.GObject): self._handle.uri) if not self._use_rainbow: - process = subprocess.Popen(command, env=environ, cwd=activity.path, - stdout=log_file, stderr=log_file) + p = subprocess.Popen(command, env=environ, cwd=activity.path, + stdout=log_file, stderr=log_file) + _children_pid.append(p.pid) else: log_file.close() system_bus = dbus.SystemBus() diff --git a/lib/sugar/bundle/bundle.py b/lib/sugar/bundle/bundle.py index 33fd1a81..f7f18c9e 100644 --- a/lib/sugar/bundle/bundle.py +++ b/lib/sugar/bundle/bundle.py @@ -108,7 +108,7 @@ class Bundle: raise AlreadyInstalledException if not os.path.isdir(install_dir): - os.mkdir(install_dir) + os.mkdir(install_dir, 0775) # zipfile provides API that in theory would let us do this # correctly by hand, but handling all the oddities of diff --git a/lib/sugar/bundle/contentbundle.py b/lib/sugar/bundle/contentbundle.py index 517ee9a8..9e2d36e4 100644 --- a/lib/sugar/bundle/contentbundle.py +++ b/lib/sugar/bundle/contentbundle.py @@ -21,7 +21,8 @@ from ConfigParser import ConfigParser import os from sugar import env -from sugar.bundle.bundle import Bundle, NotInstalledException +from sugar.bundle.bundle import Bundle, NotInstalledException, \ + MalformedBundleException class ContentBundle(Bundle): """A Sugar content bundle @@ -162,7 +163,7 @@ class ContentBundle(Bundle): def _run_indexer(self): os.spawnlp(os.P_WAIT, 'python', 'python', - os.path.join(env.get_user_library_path(), 'makeIndex.py')) + env.get_prefix_path('share/library-common/make_index.py')) def is_installed(self): if self._unpacked: diff --git a/lib/sugar/env.py b/lib/sugar/env.py index c46b7d07..33b57f35 100644 --- a/lib/sugar/env.py +++ b/lib/sugar/env.py @@ -18,7 +18,7 @@ import os -def _get_prefix_path(base, path=None): +def get_prefix_path(base, path=None): if os.environ.has_key('SUGAR_PREFIX'): prefix = os.environ['SUGAR_PREFIX'] else: @@ -55,7 +55,7 @@ def get_profile_path(path=None): base = os.path.join(os.path.expanduser('~/.sugar'), profile_id) if not os.path.isdir(base): try: - os.makedirs(base) + os.makedirs(base, 0770) except OSError, exc: print "Could not create user directory." @@ -78,10 +78,10 @@ def get_user_library_path(): return os.path.expanduser('~/Library') def get_locale_path(path=None): - return _get_prefix_path('share/locale', path) + return get_prefix_path('share/locale', path) def get_bin_path(path=None): - return _get_prefix_path('bin', path) + return get_prefix_path('bin', path) def get_service_path(name): return _get_sugar_path('services', name) diff --git a/lib/sugar/graphics/palette.py b/lib/sugar/graphics/palette.py index 50925244..a4cef8fc 100644 --- a/lib/sugar/graphics/palette.py +++ b/lib/sugar/graphics/palette.py @@ -439,6 +439,8 @@ class Palette(gtk.Window): def popdown(self, immediate=False): self._popup_anim.stop() + self._mouse_detector.stop() + if not immediate: self._popdown_anim.start() else: @@ -482,8 +484,7 @@ class Palette(gtk.Window): self.popup(immediate=immediate) def _invoker_mouse_leave_cb(self, invoker): - if self._mouse_detector is not None: - self._mouse_detector.stop() + self._mouse_detector.stop() self.popdown() def _enter_notify_event_cb(self, widget, event): diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 00000000..878d7898 --- /dev/null +++ b/po/ja.po @@ -0,0 +1,412 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-11-21 00:36+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: 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.0.1\n" + +#: ../shell/intro/intro.py:67 +msgid "Name:" +msgstr "" + +#: ../shell/intro/intro.py:96 +msgid "Click to change color:" +msgstr "" + +#: ../shell/intro/intro.py:146 +msgid "Back" +msgstr "" + +#: ../shell/intro/intro.py:160 +msgid "Done" +msgstr "" + +#: ../shell/intro/intro.py:163 +msgid "Next" +msgstr "" + +#: ../shell/view/BuddyMenu.py:84 +msgid "Remove friend" +msgstr "" + +#: ../shell/view/BuddyMenu.py:87 +msgid "Make friend" +msgstr "" + +#: ../shell/view/BuddyMenu.py:109 +#, python-format +msgid "Invite to %s" +msgstr "" + +#: ../shell/view/clipboardmenu.py:59 +msgid "Remove" +msgstr "" + +#: ../shell/view/clipboardmenu.py:64 +msgid "Open" +msgstr "" + +#. self._stop_item = MenuItem(_('Stop download'), 'stock-close') +#. TODO: Implement stopping downloads +#. self._stop_item.connect('activate', self._stop_item_activate_cb) +#. self.append_menu_item(self._stop_item) +#: ../shell/view/clipboardmenu.py:74 +msgid "Add to journal" +msgstr "" + +#: ../shell/view/clipboardmenu.py:200 +#, python-format +msgid "Clipboard object: %s." +msgstr "" + +#: ../shell/hardware/keydialog.py:149 +msgid "Key Type:" +msgstr "" + +#: ../shell/hardware/keydialog.py:169 +msgid "Authentication Type:" +msgstr "" + +#: ../shell/hardware/keydialog.py:250 +msgid "Encryption Type:" +msgstr "" + +#: ../shell/view/home/activitiesdonut.py:90 +msgid "Starting..." +msgstr "" + +#: ../shell/view/home/activitiesdonut.py:104 ../shell/view/home/MeshBox.py:295 +msgid "Resume" +msgstr "" + +#: ../shell/view/home/activitiesdonut.py:111 +#: ../lib/sugar/activity/activity.py:128 +msgid "Stop" +msgstr "" + +#: ../shell/view/Shell.py:276 +msgid "Screenshot" +msgstr "" + +#: ../shell/view/home/HomeBox.py:158 +msgid "Reboot" +msgstr "" + +#: ../shell/view/home/HomeBox.py:163 +msgid "Shutdown" +msgstr "" + +#: ../shell/view/home/HomeBox.py:169 +msgid "Register" +msgstr "" + +#. Only show disconnect when there's a mesh device, because mesh takes +#. priority over the normal wireless device. NM doesn't have a "disconnect" +#. method for a device either (for various reasons) so this doesn't +#. have a good mapping +#: ../shell/view/home/MeshBox.py:90 ../shell/view/home/MeshBox.py:197 +#: ../shell/view/devices/network/wireless.py:113 +#: ../shell/view/devices/network/mesh.py:83 +msgid "Disconnect..." +msgstr "" + +#: ../shell/view/home/MeshBox.py:195 ../shell/view/devices/network/mesh.py:37 +#: ../shell/view/devices/network/mesh.py:62 +#: ../shell/view/devices/network/mesh.py:66 +msgid "Mesh Network" +msgstr "" + +#: ../shell/view/home/MeshBox.py:300 +msgid "Join" +msgstr "" + +#: ../shell/view/devices/battery.py:38 +msgid "My Battery life" +msgstr "" + +#: ../shell/view/devices/battery.py:94 +msgid "Battery charging" +msgstr "" + +#: ../shell/view/devices/battery.py:96 +msgid "Battery discharging" +msgstr "" + +#: ../shell/view/devices/battery.py:98 +msgid "Battery fully charged" +msgstr "" + +#: ../shell/view/devices/network/wireless.py:61 +msgid "Disconnected" +msgstr "" + +#: ../shell/view/devices/network/wireless.py:131 +msgid "Channel" +msgstr "" + +#: ../shell/view/frame/zoomtoolbar.py:42 +msgid "Neighborhood" +msgstr "" + +#: ../shell/view/frame/zoomtoolbar.py:54 +msgid "Group" +msgstr "" + +#: ../shell/view/frame/zoomtoolbar.py:66 +msgid "Home" +msgstr "" + +#: ../shell/view/frame/zoomtoolbar.py:78 +msgid "Activity" +msgstr "" + +#: ../lib/sugar/activity/activity.py:111 +msgid "Share with:" +msgstr "" + +#: ../lib/sugar/activity/activity.py:113 +msgid "Private" +msgstr "" + +#: ../lib/sugar/activity/activity.py:114 +msgid "My Neighborhood" +msgstr "" + +#: ../lib/sugar/activity/activity.py:122 +msgid "Keep" +msgstr "" + +#: ../lib/sugar/activity/activity.py:241 +msgid "Undo" +msgstr "" + +#: ../lib/sugar/activity/activity.py:246 +msgid "Redo" +msgstr "" + +#: ../lib/sugar/activity/activity.py:256 +msgid "Copy" +msgstr "" + +#: ../lib/sugar/activity/activity.py:261 +msgid "Paste" +msgstr "" + +#: ../lib/sugar/activity/activity.py:450 +#, python-format +msgid "%s Activity" +msgstr "" + +#: ../lib/sugar/activity/activity.py:813 +msgid "Keep error" +msgstr "" + +#: ../lib/sugar/activity/activity.py:814 +msgid "Keep error: all changes will be lost" +msgstr "" + +#: ../lib/sugar/activity/activity.py:817 +msgid "Don't stop" +msgstr "" + +#: ../lib/sugar/activity/activity.py:820 +msgid "Stop anyway" +msgstr "" + +#: ../lib/sugar/graphics/alert.py:164 ../lib/sugar/graphics/alert.py:206 +msgid "Cancel" +msgstr "" + +#: ../lib/sugar/graphics/alert.py:168 +msgid "Ok" +msgstr "" + +#: ../lib/sugar/graphics/alert.py:216 +msgid "Continue" +msgstr "" + +#: ../lib/sugar/graphics/alert.py:244 +msgid "OK" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:175 +#, python-format +msgid "%d year" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:175 +#, python-format +msgid "%d years" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:176 +#, python-format +msgid "%d month" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:176 +#, python-format +msgid "%d months" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:177 +#, python-format +msgid "%d week" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:177 +#, python-format +msgid "%d weeks" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:178 +#, python-format +msgid "%d day" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:178 +#, python-format +msgid "%d days" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:179 +#, python-format +msgid "%d hour" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:179 +#, python-format +msgid "%d hours" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:180 +#, python-format +msgid "%d minute" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:180 +#, python-format +msgid "%d minutes" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:181 +#, python-format +msgid "%d second" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:181 +#, python-format +msgid "%d seconds" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:191 +msgid " and " +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:193 +msgid ", " +msgstr "" + +#: ../shell/controlpanel/control.py:213 +msgid "To apply your changes you have to restart sugar.\n" +msgstr "" + +#: ../shell/controlpanel/control.py:267 +msgid "Error in specified color modifiers." +msgstr "" + +#: ../shell/controlpanel/control.py:270 +msgid "Error in specified colors." +msgstr "" + +#: ../shell/controlpanel/control.py:307 +msgid "off" +msgstr "" + +#: ../shell/controlpanel/control.py:309 +msgid "on" +msgstr "" + +#: ../shell/controlpanel/control.py:310 +msgid "State is unknown." +msgstr "" + +#: ../shell/controlpanel/control.py:332 +msgid "Error in specified radio argument use on/off." +msgstr "" + +#: ../shell/controlpanel/control.py:336 +msgid "Permission denied. You need to be root to run this method." +msgstr "" + +#: ../shell/controlpanel/control.py:366 +msgid "Error in reading timezone" +msgstr "" + +#: ../shell/controlpanel/control.py:397 +#, python-format +msgid "Error copying timezone (from %s): %s" +msgstr "" + +#: ../shell/controlpanel/control.py:402 +#, python-format +msgid "Changing permission of timezone: %s" +msgstr "" + +#: ../shell/controlpanel/control.py:413 +msgid "Error timezone does not exist." +msgstr "" + +#: ../shell/controlpanel/control.py:418 ../shell/controlpanel/control.py:438 +#, python-format +msgid "Could not access %s. Create standard settings." +msgstr "" + +#: ../shell/controlpanel/control.py:466 +#, python-format +msgid "Language for code=%s could not be determined." +msgstr "" + +#: ../shell/controlpanel/control.py:476 +#, python-format +msgid "Sorry I do not speak '%s'." +msgstr "" + +#: ../shell/view/devices/network/mesh.py:105 +msgid "Connected to a School Mesh Portal" +msgstr "" + +#: ../shell/view/devices/network/mesh.py:107 +msgid "Looking for a School Mesh Portal..." +msgstr "" + +#: ../shell/view/devices/network/mesh.py:110 +msgid "Connected to an XO Mesh Portal" +msgstr "" + +#: ../shell/view/devices/network/mesh.py:112 +msgid "Looking for an XO Mesh Portal..." +msgstr "" + +#: ../shell/view/devices/network/mesh.py:115 +msgid "Connected to a Simple Mesh" +msgstr "" + +#: ../shell/view/devices/network/mesh.py:117 +msgid "Starting a Simple Mesh" +msgstr "" + +#: ../shell/view/devices/network/mesh.py:124 +msgid "Unknown Mesh" +msgstr "" diff --git a/po/ml.po b/po/ml.po new file mode 100644 index 00000000..878d7898 --- /dev/null +++ b/po/ml.po @@ -0,0 +1,412 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-11-21 00:36+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: 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.0.1\n" + +#: ../shell/intro/intro.py:67 +msgid "Name:" +msgstr "" + +#: ../shell/intro/intro.py:96 +msgid "Click to change color:" +msgstr "" + +#: ../shell/intro/intro.py:146 +msgid "Back" +msgstr "" + +#: ../shell/intro/intro.py:160 +msgid "Done" +msgstr "" + +#: ../shell/intro/intro.py:163 +msgid "Next" +msgstr "" + +#: ../shell/view/BuddyMenu.py:84 +msgid "Remove friend" +msgstr "" + +#: ../shell/view/BuddyMenu.py:87 +msgid "Make friend" +msgstr "" + +#: ../shell/view/BuddyMenu.py:109 +#, python-format +msgid "Invite to %s" +msgstr "" + +#: ../shell/view/clipboardmenu.py:59 +msgid "Remove" +msgstr "" + +#: ../shell/view/clipboardmenu.py:64 +msgid "Open" +msgstr "" + +#. self._stop_item = MenuItem(_('Stop download'), 'stock-close') +#. TODO: Implement stopping downloads +#. self._stop_item.connect('activate', self._stop_item_activate_cb) +#. self.append_menu_item(self._stop_item) +#: ../shell/view/clipboardmenu.py:74 +msgid "Add to journal" +msgstr "" + +#: ../shell/view/clipboardmenu.py:200 +#, python-format +msgid "Clipboard object: %s." +msgstr "" + +#: ../shell/hardware/keydialog.py:149 +msgid "Key Type:" +msgstr "" + +#: ../shell/hardware/keydialog.py:169 +msgid "Authentication Type:" +msgstr "" + +#: ../shell/hardware/keydialog.py:250 +msgid "Encryption Type:" +msgstr "" + +#: ../shell/view/home/activitiesdonut.py:90 +msgid "Starting..." +msgstr "" + +#: ../shell/view/home/activitiesdonut.py:104 ../shell/view/home/MeshBox.py:295 +msgid "Resume" +msgstr "" + +#: ../shell/view/home/activitiesdonut.py:111 +#: ../lib/sugar/activity/activity.py:128 +msgid "Stop" +msgstr "" + +#: ../shell/view/Shell.py:276 +msgid "Screenshot" +msgstr "" + +#: ../shell/view/home/HomeBox.py:158 +msgid "Reboot" +msgstr "" + +#: ../shell/view/home/HomeBox.py:163 +msgid "Shutdown" +msgstr "" + +#: ../shell/view/home/HomeBox.py:169 +msgid "Register" +msgstr "" + +#. Only show disconnect when there's a mesh device, because mesh takes +#. priority over the normal wireless device. NM doesn't have a "disconnect" +#. method for a device either (for various reasons) so this doesn't +#. have a good mapping +#: ../shell/view/home/MeshBox.py:90 ../shell/view/home/MeshBox.py:197 +#: ../shell/view/devices/network/wireless.py:113 +#: ../shell/view/devices/network/mesh.py:83 +msgid "Disconnect..." +msgstr "" + +#: ../shell/view/home/MeshBox.py:195 ../shell/view/devices/network/mesh.py:37 +#: ../shell/view/devices/network/mesh.py:62 +#: ../shell/view/devices/network/mesh.py:66 +msgid "Mesh Network" +msgstr "" + +#: ../shell/view/home/MeshBox.py:300 +msgid "Join" +msgstr "" + +#: ../shell/view/devices/battery.py:38 +msgid "My Battery life" +msgstr "" + +#: ../shell/view/devices/battery.py:94 +msgid "Battery charging" +msgstr "" + +#: ../shell/view/devices/battery.py:96 +msgid "Battery discharging" +msgstr "" + +#: ../shell/view/devices/battery.py:98 +msgid "Battery fully charged" +msgstr "" + +#: ../shell/view/devices/network/wireless.py:61 +msgid "Disconnected" +msgstr "" + +#: ../shell/view/devices/network/wireless.py:131 +msgid "Channel" +msgstr "" + +#: ../shell/view/frame/zoomtoolbar.py:42 +msgid "Neighborhood" +msgstr "" + +#: ../shell/view/frame/zoomtoolbar.py:54 +msgid "Group" +msgstr "" + +#: ../shell/view/frame/zoomtoolbar.py:66 +msgid "Home" +msgstr "" + +#: ../shell/view/frame/zoomtoolbar.py:78 +msgid "Activity" +msgstr "" + +#: ../lib/sugar/activity/activity.py:111 +msgid "Share with:" +msgstr "" + +#: ../lib/sugar/activity/activity.py:113 +msgid "Private" +msgstr "" + +#: ../lib/sugar/activity/activity.py:114 +msgid "My Neighborhood" +msgstr "" + +#: ../lib/sugar/activity/activity.py:122 +msgid "Keep" +msgstr "" + +#: ../lib/sugar/activity/activity.py:241 +msgid "Undo" +msgstr "" + +#: ../lib/sugar/activity/activity.py:246 +msgid "Redo" +msgstr "" + +#: ../lib/sugar/activity/activity.py:256 +msgid "Copy" +msgstr "" + +#: ../lib/sugar/activity/activity.py:261 +msgid "Paste" +msgstr "" + +#: ../lib/sugar/activity/activity.py:450 +#, python-format +msgid "%s Activity" +msgstr "" + +#: ../lib/sugar/activity/activity.py:813 +msgid "Keep error" +msgstr "" + +#: ../lib/sugar/activity/activity.py:814 +msgid "Keep error: all changes will be lost" +msgstr "" + +#: ../lib/sugar/activity/activity.py:817 +msgid "Don't stop" +msgstr "" + +#: ../lib/sugar/activity/activity.py:820 +msgid "Stop anyway" +msgstr "" + +#: ../lib/sugar/graphics/alert.py:164 ../lib/sugar/graphics/alert.py:206 +msgid "Cancel" +msgstr "" + +#: ../lib/sugar/graphics/alert.py:168 +msgid "Ok" +msgstr "" + +#: ../lib/sugar/graphics/alert.py:216 +msgid "Continue" +msgstr "" + +#: ../lib/sugar/graphics/alert.py:244 +msgid "OK" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:175 +#, python-format +msgid "%d year" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:175 +#, python-format +msgid "%d years" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:176 +#, python-format +msgid "%d month" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:176 +#, python-format +msgid "%d months" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:177 +#, python-format +msgid "%d week" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:177 +#, python-format +msgid "%d weeks" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:178 +#, python-format +msgid "%d day" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:178 +#, python-format +msgid "%d days" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:179 +#, python-format +msgid "%d hour" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:179 +#, python-format +msgid "%d hours" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:180 +#, python-format +msgid "%d minute" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:180 +#, python-format +msgid "%d minutes" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:181 +#, python-format +msgid "%d second" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:181 +#, python-format +msgid "%d seconds" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:191 +msgid " and " +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:193 +msgid ", " +msgstr "" + +#: ../shell/controlpanel/control.py:213 +msgid "To apply your changes you have to restart sugar.\n" +msgstr "" + +#: ../shell/controlpanel/control.py:267 +msgid "Error in specified color modifiers." +msgstr "" + +#: ../shell/controlpanel/control.py:270 +msgid "Error in specified colors." +msgstr "" + +#: ../shell/controlpanel/control.py:307 +msgid "off" +msgstr "" + +#: ../shell/controlpanel/control.py:309 +msgid "on" +msgstr "" + +#: ../shell/controlpanel/control.py:310 +msgid "State is unknown." +msgstr "" + +#: ../shell/controlpanel/control.py:332 +msgid "Error in specified radio argument use on/off." +msgstr "" + +#: ../shell/controlpanel/control.py:336 +msgid "Permission denied. You need to be root to run this method." +msgstr "" + +#: ../shell/controlpanel/control.py:366 +msgid "Error in reading timezone" +msgstr "" + +#: ../shell/controlpanel/control.py:397 +#, python-format +msgid "Error copying timezone (from %s): %s" +msgstr "" + +#: ../shell/controlpanel/control.py:402 +#, python-format +msgid "Changing permission of timezone: %s" +msgstr "" + +#: ../shell/controlpanel/control.py:413 +msgid "Error timezone does not exist." +msgstr "" + +#: ../shell/controlpanel/control.py:418 ../shell/controlpanel/control.py:438 +#, python-format +msgid "Could not access %s. Create standard settings." +msgstr "" + +#: ../shell/controlpanel/control.py:466 +#, python-format +msgid "Language for code=%s could not be determined." +msgstr "" + +#: ../shell/controlpanel/control.py:476 +#, python-format +msgid "Sorry I do not speak '%s'." +msgstr "" + +#: ../shell/view/devices/network/mesh.py:105 +msgid "Connected to a School Mesh Portal" +msgstr "" + +#: ../shell/view/devices/network/mesh.py:107 +msgid "Looking for a School Mesh Portal..." +msgstr "" + +#: ../shell/view/devices/network/mesh.py:110 +msgid "Connected to an XO Mesh Portal" +msgstr "" + +#: ../shell/view/devices/network/mesh.py:112 +msgid "Looking for an XO Mesh Portal..." +msgstr "" + +#: ../shell/view/devices/network/mesh.py:115 +msgid "Connected to a Simple Mesh" +msgstr "" + +#: ../shell/view/devices/network/mesh.py:117 +msgid "Starting a Simple Mesh" +msgstr "" + +#: ../shell/view/devices/network/mesh.py:124 +msgid "Unknown Mesh" +msgstr "" diff --git a/po/pa.po b/po/pa.po new file mode 100644 index 00000000..878d7898 --- /dev/null +++ b/po/pa.po @@ -0,0 +1,412 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2007-11-21 00:36+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: 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.0.1\n" + +#: ../shell/intro/intro.py:67 +msgid "Name:" +msgstr "" + +#: ../shell/intro/intro.py:96 +msgid "Click to change color:" +msgstr "" + +#: ../shell/intro/intro.py:146 +msgid "Back" +msgstr "" + +#: ../shell/intro/intro.py:160 +msgid "Done" +msgstr "" + +#: ../shell/intro/intro.py:163 +msgid "Next" +msgstr "" + +#: ../shell/view/BuddyMenu.py:84 +msgid "Remove friend" +msgstr "" + +#: ../shell/view/BuddyMenu.py:87 +msgid "Make friend" +msgstr "" + +#: ../shell/view/BuddyMenu.py:109 +#, python-format +msgid "Invite to %s" +msgstr "" + +#: ../shell/view/clipboardmenu.py:59 +msgid "Remove" +msgstr "" + +#: ../shell/view/clipboardmenu.py:64 +msgid "Open" +msgstr "" + +#. self._stop_item = MenuItem(_('Stop download'), 'stock-close') +#. TODO: Implement stopping downloads +#. self._stop_item.connect('activate', self._stop_item_activate_cb) +#. self.append_menu_item(self._stop_item) +#: ../shell/view/clipboardmenu.py:74 +msgid "Add to journal" +msgstr "" + +#: ../shell/view/clipboardmenu.py:200 +#, python-format +msgid "Clipboard object: %s." +msgstr "" + +#: ../shell/hardware/keydialog.py:149 +msgid "Key Type:" +msgstr "" + +#: ../shell/hardware/keydialog.py:169 +msgid "Authentication Type:" +msgstr "" + +#: ../shell/hardware/keydialog.py:250 +msgid "Encryption Type:" +msgstr "" + +#: ../shell/view/home/activitiesdonut.py:90 +msgid "Starting..." +msgstr "" + +#: ../shell/view/home/activitiesdonut.py:104 ../shell/view/home/MeshBox.py:295 +msgid "Resume" +msgstr "" + +#: ../shell/view/home/activitiesdonut.py:111 +#: ../lib/sugar/activity/activity.py:128 +msgid "Stop" +msgstr "" + +#: ../shell/view/Shell.py:276 +msgid "Screenshot" +msgstr "" + +#: ../shell/view/home/HomeBox.py:158 +msgid "Reboot" +msgstr "" + +#: ../shell/view/home/HomeBox.py:163 +msgid "Shutdown" +msgstr "" + +#: ../shell/view/home/HomeBox.py:169 +msgid "Register" +msgstr "" + +#. Only show disconnect when there's a mesh device, because mesh takes +#. priority over the normal wireless device. NM doesn't have a "disconnect" +#. method for a device either (for various reasons) so this doesn't +#. have a good mapping +#: ../shell/view/home/MeshBox.py:90 ../shell/view/home/MeshBox.py:197 +#: ../shell/view/devices/network/wireless.py:113 +#: ../shell/view/devices/network/mesh.py:83 +msgid "Disconnect..." +msgstr "" + +#: ../shell/view/home/MeshBox.py:195 ../shell/view/devices/network/mesh.py:37 +#: ../shell/view/devices/network/mesh.py:62 +#: ../shell/view/devices/network/mesh.py:66 +msgid "Mesh Network" +msgstr "" + +#: ../shell/view/home/MeshBox.py:300 +msgid "Join" +msgstr "" + +#: ../shell/view/devices/battery.py:38 +msgid "My Battery life" +msgstr "" + +#: ../shell/view/devices/battery.py:94 +msgid "Battery charging" +msgstr "" + +#: ../shell/view/devices/battery.py:96 +msgid "Battery discharging" +msgstr "" + +#: ../shell/view/devices/battery.py:98 +msgid "Battery fully charged" +msgstr "" + +#: ../shell/view/devices/network/wireless.py:61 +msgid "Disconnected" +msgstr "" + +#: ../shell/view/devices/network/wireless.py:131 +msgid "Channel" +msgstr "" + +#: ../shell/view/frame/zoomtoolbar.py:42 +msgid "Neighborhood" +msgstr "" + +#: ../shell/view/frame/zoomtoolbar.py:54 +msgid "Group" +msgstr "" + +#: ../shell/view/frame/zoomtoolbar.py:66 +msgid "Home" +msgstr "" + +#: ../shell/view/frame/zoomtoolbar.py:78 +msgid "Activity" +msgstr "" + +#: ../lib/sugar/activity/activity.py:111 +msgid "Share with:" +msgstr "" + +#: ../lib/sugar/activity/activity.py:113 +msgid "Private" +msgstr "" + +#: ../lib/sugar/activity/activity.py:114 +msgid "My Neighborhood" +msgstr "" + +#: ../lib/sugar/activity/activity.py:122 +msgid "Keep" +msgstr "" + +#: ../lib/sugar/activity/activity.py:241 +msgid "Undo" +msgstr "" + +#: ../lib/sugar/activity/activity.py:246 +msgid "Redo" +msgstr "" + +#: ../lib/sugar/activity/activity.py:256 +msgid "Copy" +msgstr "" + +#: ../lib/sugar/activity/activity.py:261 +msgid "Paste" +msgstr "" + +#: ../lib/sugar/activity/activity.py:450 +#, python-format +msgid "%s Activity" +msgstr "" + +#: ../lib/sugar/activity/activity.py:813 +msgid "Keep error" +msgstr "" + +#: ../lib/sugar/activity/activity.py:814 +msgid "Keep error: all changes will be lost" +msgstr "" + +#: ../lib/sugar/activity/activity.py:817 +msgid "Don't stop" +msgstr "" + +#: ../lib/sugar/activity/activity.py:820 +msgid "Stop anyway" +msgstr "" + +#: ../lib/sugar/graphics/alert.py:164 ../lib/sugar/graphics/alert.py:206 +msgid "Cancel" +msgstr "" + +#: ../lib/sugar/graphics/alert.py:168 +msgid "Ok" +msgstr "" + +#: ../lib/sugar/graphics/alert.py:216 +msgid "Continue" +msgstr "" + +#: ../lib/sugar/graphics/alert.py:244 +msgid "OK" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:175 +#, python-format +msgid "%d year" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:175 +#, python-format +msgid "%d years" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:176 +#, python-format +msgid "%d month" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:176 +#, python-format +msgid "%d months" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:177 +#, python-format +msgid "%d week" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:177 +#, python-format +msgid "%d weeks" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:178 +#, python-format +msgid "%d day" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:178 +#, python-format +msgid "%d days" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:179 +#, python-format +msgid "%d hour" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:179 +#, python-format +msgid "%d hours" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:180 +#, python-format +msgid "%d minute" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:180 +#, python-format +msgid "%d minutes" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:181 +#, python-format +msgid "%d second" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:181 +#, python-format +msgid "%d seconds" +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:191 +msgid " and " +msgstr "" + +#: ../lib/sugar/graphics/objectchooser.py:193 +msgid ", " +msgstr "" + +#: ../shell/controlpanel/control.py:213 +msgid "To apply your changes you have to restart sugar.\n" +msgstr "" + +#: ../shell/controlpanel/control.py:267 +msgid "Error in specified color modifiers." +msgstr "" + +#: ../shell/controlpanel/control.py:270 +msgid "Error in specified colors." +msgstr "" + +#: ../shell/controlpanel/control.py:307 +msgid "off" +msgstr "" + +#: ../shell/controlpanel/control.py:309 +msgid "on" +msgstr "" + +#: ../shell/controlpanel/control.py:310 +msgid "State is unknown." +msgstr "" + +#: ../shell/controlpanel/control.py:332 +msgid "Error in specified radio argument use on/off." +msgstr "" + +#: ../shell/controlpanel/control.py:336 +msgid "Permission denied. You need to be root to run this method." +msgstr "" + +#: ../shell/controlpanel/control.py:366 +msgid "Error in reading timezone" +msgstr "" + +#: ../shell/controlpanel/control.py:397 +#, python-format +msgid "Error copying timezone (from %s): %s" +msgstr "" + +#: ../shell/controlpanel/control.py:402 +#, python-format +msgid "Changing permission of timezone: %s" +msgstr "" + +#: ../shell/controlpanel/control.py:413 +msgid "Error timezone does not exist." +msgstr "" + +#: ../shell/controlpanel/control.py:418 ../shell/controlpanel/control.py:438 +#, python-format +msgid "Could not access %s. Create standard settings." +msgstr "" + +#: ../shell/controlpanel/control.py:466 +#, python-format +msgid "Language for code=%s could not be determined." +msgstr "" + +#: ../shell/controlpanel/control.py:476 +#, python-format +msgid "Sorry I do not speak '%s'." +msgstr "" + +#: ../shell/view/devices/network/mesh.py:105 +msgid "Connected to a School Mesh Portal" +msgstr "" + +#: ../shell/view/devices/network/mesh.py:107 +msgid "Looking for a School Mesh Portal..." +msgstr "" + +#: ../shell/view/devices/network/mesh.py:110 +msgid "Connected to an XO Mesh Portal" +msgstr "" + +#: ../shell/view/devices/network/mesh.py:112 +msgid "Looking for an XO Mesh Portal..." +msgstr "" + +#: ../shell/view/devices/network/mesh.py:115 +msgid "Connected to a Simple Mesh" +msgstr "" + +#: ../shell/view/devices/network/mesh.py:117 +msgid "Starting a Simple Mesh" +msgstr "" + +#: ../shell/view/devices/network/mesh.py:124 +msgid "Unknown Mesh" +msgstr ""