diff --git b/.flake8 a/.flake8 new file mode 100644 index 0000000..0146a5f --- /dev/null +++ a/.flake8 @@ -0,0 +1,6 @@ +[flake8] + +# E402 module level import not at top of file +# gi.require_version() is required before later imports + +ignore = E402 diff --git b/MAINTAINERS a/MAINTAINERS new file mode 100644 index 0000000..0f3a245 --- /dev/null +++ a/MAINTAINERS @@ -0,0 +1,14 @@ +Current maintainers +------------------- + +Aleksey Lim http://github.com/alsroot (Journal) +Tomeu Vizoso http://github.com/tomeuv +Gonzalo Odiard http://github.com/godiard +Martin Abente Lahaye http://github.com/tchx84 +Sam http://github.com/samdroid-apps + + +Past maintainers +---------------- + +Marco Pesenti Gritti diff --git b/autogen.sh a/autogen.sh new file mode 100755 index 0000000..739e7f8 --- /dev/null +++ a/autogen.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +test -n "${srcdir}" || srcdir=`dirname "$0"` +test -n "${srcdir}" || srcdir="$(pwd)" + +olddir="$(pwd)" +cd "$srcdir" + +mkdir -p m4 + +intltoolize --force +autoreconf -i + +cd "$olddir" +"$srcdir/configure" --enable-maintainer-mode "$@" diff --git b/data/.gitignore a/data/.gitignore new file mode 100644 index 0000000..09d75cd --- /dev/null +++ a/data/.gitignore @@ -0,0 +1,3 @@ +*.gtkrc +sugar.schemas +org.sugarlabs.gschema.valid diff --git b/docs/debian.md a/docs/debian.md index 725b6a1..9183bb7 100644 --- b/docs/debian.md +++ a/docs/debian.md @@ -18,7 +18,7 @@ sudo apt install sucrose lightdm exec sudo reboot ``` -- in the graphical login screen, change from the default X session to Sugar, +- in the graphical login screen, [change from the default X session to Sugar](https://github.com/sugarlabs/sugar-docs/blob/master/src/sugar-logging-in.md), - log in as the non-root user, which you will have created during install. Known bugs include; @@ -41,7 +41,7 @@ sudo apt install sucrose lightdm exec sudo reboot ``` -- in the graphical login screen, change from the default X session to Sugar, +- in the graphical login screen, [change from the default X session to Sugar](https://github.com/sugarlabs/sugar-docs/blob/master/src/sugar-logging-in.md), - log in as your non-root user, created during install. Known bugs include; @@ -61,10 +61,9 @@ Packaging Packaging of Sugar on Debian is done by a team: -- [pkg-sugar project](https://alioth.debian.org/projects/pkg-sugar/), +- [pkg-sugar-team project](https://salsa.debian.org/pkg-sugar-team), - [pkg-sugar-devel mailing list](https://lists.alioth.debian.org/mailman/listinfo/pkg-sugar-devel), -- [pkg-sugar-commit mailing list](https://lists.alioth.debian.org/mailman/listinfo/pkg-sugar-commit), -- [pkg-sugar git repositories](https://anonscm.debian.org/cgit/pkg-sugar/), +- [pkg-sugar git repositories](https://salsa.debian.org/pkg-sugar-team/sugar) - [package archive of Jonas Smedegaard](http://debian.jones.dk/pkg/sugar_/), Sucrose packages are usually updated in the unstable release. These packages migrate to the testing release after a while. You can see the current package versions [here](http://packages.debian.org/search?keywords=sugar&searchon=names&suite=all§ion=all). diff --git b/docs/development-environment.md a/docs/development-environment.md index eb1914d..7bd61a4 100644 --- b/docs/development-environment.md +++ a/docs/development-environment.md @@ -26,7 +26,7 @@ See [downloads](http://people.sugarlabs.org/~quozl/sugar-live-build/) for the IS Once installed, Sugar Live Build can be used to make changes to Sugar, the toolkits, the demonstration activities, or to write new activities. -- changes to Sugar or the toolkits can be done by editing files in the module source trees in `/usr/src`, followed by `sudo make install` for each changed module. +- changes to Sugar or the toolkits can be done by editing files in the module source trees in `/usr/src`, followed by per-module [install steps](https://github.com/sugarlabs/sugar-live-build/blob/master/src/config/hooks/normal/0900-sugar.hook.chroot#L42) for each changed module. See [issue 442](https://github.com/sugarlabs/sugar-toolkit-gtk3/issues/442) for details. - changes to demonstration activities can be done in the activity source trees in `/usr/src/sugar-activities`, and are immediately effective; just start a new instance of the activity in Sugar. @@ -49,7 +49,7 @@ Install the `sucrose` package; sudo apt install sucrose -Log out, then log in with the Sugar desktop selected. +Log out, then [log in with the Sugar desktop selected](https://github.com/sugarlabs/sugar-docs/blob/master/src/sugar-logging-in.md). Once Sugar is installed, development of activities can begin. @@ -144,7 +144,7 @@ Clone the Browse and Terminal activities; git clone https://github.com/sugarlabs/browse-activity.git Browse.activity git clone https://github.com/sugarlabs/terminal-activity.git Terminal.activity -Log out and log in again with the Sugar desktop selected, or use the remote desktop feature described earlier on this page. +Log out and [log in again with the Sugar desktop selected](https://github.com/sugarlabs/sugar-docs/blob/master/src/sugar-logging-in.md), or use the remote desktop feature described earlier on this page. After making changes in a Sugar module, repeat the `sudo make install` step, and log in again. diff --git b/docs/fedora.md a/docs/fedora.md index 4b50b8b..af3c3e9 100644 --- b/docs/fedora.md +++ a/docs/fedora.md @@ -12,7 +12,7 @@ Install Fedora. Then, in a Terminal, type: sudo dnf groupinstall sugar-desktop -Then restart your computer. At the *Sign in* select the *Sugar* desktop. +Then restart your computer. At the *Sign in* select the *Sugar* desktop (Fedora uses GDM by default, tutorial to login to Sugar using GDM can be viewed in [the Sugar Docs](https://github.com/sugarlabs/sugar-docs/blob/master/src/sugar-logging-in.md)). Using Sugar with another Desktop Environment -------------------------------------------- diff --git b/docs/ubuntu.md a/docs/ubuntu.md index 34c5644..26661cd 100644 --- b/docs/ubuntu.md +++ a/docs/ubuntu.md @@ -14,7 +14,7 @@ Sugar 0.112 can be installed with the following commands: sudo apt install sucrose - log out, -- log in with the Sugar desktop selected, +- [log in with the Sugar desktop selected](https://github.com/sugarlabs/sugar-docs/blob/master/src/sugar-logging-in.md), Known Problems: @@ -31,7 +31,7 @@ Sugar 0.112 is in the universe repository, and can be installed with the followi sudo apt install sucrose - log out, -- log in with the Sugar desktop selected, +- [log in with the Sugar desktop selected](https://github.com/sugarlabs/sugar-docs/blob/master/src/sugar-logging-in.md), Ubuntu 18.04 (Bionic Beaver) and 18.10 (Cosmic Cuttlefish) ------------------- @@ -44,7 +44,7 @@ Sugar 0.112 is in the universe repository, and can be installed with the followi sudo apt install sucrose - log out, -- log in with the Sugar desktop selected, +- [log in with the Sugar desktop selected](https://github.com/sugarlabs/sugar-docs/blob/master/src/sugar-logging-in.md), - press the F3 key to switch to the home view, see below. Known problems diff --git b/extensions/cpsection/language/view.py a/extensions/cpsection/language/view.py index 39beda7..b2bb51e 100644 --- b/extensions/cpsection/language/view.py +++ a/extensions/cpsection/language/view.py @@ -486,6 +486,7 @@ class BlackLabel(PaletteMenuItem): self.set_label(text_label) def set_label(self, text_label): + text_label = GLib.markup_escape_text(text_label) text = '' % style.COLOR_BLACK.get_html() + \ text_label + '' self.label.set_markup(text) diff --git b/extensions/cpsection/modemconfiguration/model.py a/extensions/cpsection/modemconfiguration/model.py index e2ba304..dfe0e20 100755 --- b/extensions/cpsection/modemconfiguration/model.py +++ a/extensions/cpsection/modemconfiguration/model.py @@ -318,8 +318,6 @@ class ServiceProviders(object): provider_name = self._settings.get_string(CONF_SP_PROVIDER) if not provider_name: provider_name = '' - else: - provider_name = provider_name.decode('utf-8') plan_idx = self._settings.get_int(CONF_SP_PLAN) or 0 diff --git b/po/en_US.po a/po/en_US.po new file mode 100644 index 0000000..06414dd --- /dev/null +++ a/po/en_US.po @@ -0,0 +1,2016 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-07-31 00:33-0400\n" +"PO-Revision-Date: 2013-08-01 05:05+0200\n" +"Last-Translator: Chris \n" +"Language-Team: LANGUAGE \n" +"Language: en_US\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" + +#: ../extensions/cpsection/aboutme/__init__.py:24 +msgid "About Me" +msgstr "About Me" + +#: ../extensions/cpsection/aboutme/model.py:48 +msgid "You must enter a name." +msgstr "You must enter a name." + +#: ../extensions/cpsection/aboutme/model.py:75 +#, python-format +msgid "stroke: color=%s hue=%s" +msgstr "stroke: color=%s hue=%s" + +#: ../extensions/cpsection/aboutme/model.py:78 +#, python-format +msgid "stroke: %s" +msgstr "stroke: %s" + +#: ../extensions/cpsection/aboutme/model.py:80 +#, python-format +msgid "fill: color=%s hue=%s" +msgstr "fill: color=%s hue=%s" + +#: ../extensions/cpsection/aboutme/model.py:82 +#, python-format +msgid "fill: %s" +msgstr "fill: %s" + +#: ../extensions/cpsection/aboutme/model.py:94 +msgid "Error in specified color modifiers." +msgstr "Error in specified color modifiers." + +#: ../extensions/cpsection/aboutme/model.py:97 +msgid "Error in specified colors." +msgstr "Error in specified colors." + +#: ../extensions/cpsection/aboutme/view.py:212 +msgid "Click to change your color:" +msgstr "Click to change your color:" + +#: ../extensions/cpsection/aboutcomputer/__init__.py:21 +msgid "About my Computer" +msgstr "About my Computer" + +#: ../extensions/cpsection/aboutcomputer/model.py:42 +msgid "Not available" +msgstr "Not available" + +#: ../extensions/cpsection/aboutcomputer/view.py:60 +msgid "Identity" +msgstr "Identity" + +#: ../extensions/cpsection/aboutcomputer/view.py:69 +msgid "Serial Number:" +msgstr "Serial Number:" + +#: ../extensions/cpsection/aboutcomputer/view.py:91 +msgid "Software" +msgstr "Software" + +#: ../extensions/cpsection/aboutcomputer/view.py:100 +msgid "Build:" +msgstr "Build:" + +#: ../extensions/cpsection/aboutcomputer/view.py:115 +msgid "Sugar:" +msgstr "Sugar:" + +#: ../extensions/cpsection/aboutcomputer/view.py:130 +msgid "Firmware:" +msgstr "Firmware:" + +#: ../extensions/cpsection/aboutcomputer/view.py:145 +msgid "Wireless Firmware:" +msgstr "Wireless Firmware:" + +#: ../extensions/cpsection/aboutcomputer/view.py:168 +msgid "Copyright and License" +msgstr "Copyright and License" + +#. TRANS: The word "Sugar" should not be translated. +#: ../extensions/cpsection/aboutcomputer/view.py:187 +msgid "" +"Sugar is the graphical user interface that you are looking at. Sugar is free " +"software, covered by the GNU General Public License, and you are welcome to " +"change it and/or distribute copies of it under certain conditions described " +"therein." +msgstr "" +"Sugar is the graphical user interface that you are looking at. Sugar is free " +"software, covered by the GNU General Public License, and you are welcome to " +"change it and/or distribute copies of it under certain conditions described " +"therein." + +#: ../extensions/cpsection/aboutcomputer/view.py:199 +msgid "Full license:" +msgstr "Full license:" + +#: ../extensions/cpsection/background/__init__.py:21 +msgid "Background" +msgstr "Background" + +#: ../extensions/cpsection/background/view.py:39 +msgid "Select a background:" +msgstr "Select a background:" + +#: ../extensions/cpsection/background/view.py:46 +msgid "Clear background" +msgstr "Clear background" + +#: ../extensions/cpsection/datetime/__init__.py:21 +msgid "Date & Time" +msgstr "Date & Time" + +#: ../extensions/cpsection/datetime/model.py:92 +msgid "Error timezone does not exist." +msgstr "Error timezone does not exist." + +#: ../extensions/cpsection/datetime/view.py:66 ../data/sugar.schemas.in.h:61 +msgid "Timezone" +msgstr "Timezone" + +#: ../extensions/cpsection/frame/__init__.py:21 +msgid "Frame" +msgstr "Frame" + +#: ../extensions/cpsection/frame/model.py:41 +#: ../extensions/cpsection/frame/model.py:66 +msgid "Value must be an integer." +msgstr "Value must be an integer." + +#: ../extensions/cpsection/frame/view.py:27 +msgid "never" +msgstr "never" + +#: ../extensions/cpsection/frame/view.py:28 +msgid "instantaneous" +msgstr "instantaneous" + +#: ../extensions/cpsection/frame/view.py:29 +#, python-format +msgid "%s seconds" +msgstr "%s seconds" + +#: ../extensions/cpsection/frame/view.py:54 +msgid "Activation Delay" +msgstr "Activation Delay" + +#: ../extensions/cpsection/frame/view.py:78 +msgid "Corner" +msgstr "Corner" + +#: ../extensions/cpsection/frame/view.py:114 +msgid "Edge" +msgstr "Edge" + +#: ../extensions/cpsection/keyboard/__init__.py:21 +#: ../extensions/cpsection/keyboard/view.py:38 +msgid "Keyboard" +msgstr "Keyboard" + +#: ../extensions/cpsection/keyboard/view.py:240 +msgid "Keyboard Model" +msgstr "Keyboard Model" + +#: ../extensions/cpsection/keyboard/view.py:301 +msgid "Key(s) to change layout" +msgstr "Key(s) to change layout" + +#: ../extensions/cpsection/keyboard/view.py:369 +msgid "Keyboard Layout(s)" +msgstr "Keyboard Layout(s)" + +#: ../extensions/cpsection/language/__init__.py:21 +#: ../extensions/cpsection/language/view.py:33 +msgid "Language" +msgstr "Language" + +#: ../extensions/cpsection/language/model.py:30 +msgid "Could not access ~/.i18n. Create standard settings." +msgstr "Could not access ~/.i18n. Create standard settings." + +#: ../extensions/cpsection/language/model.py:129 +#, python-format +msgid "Language for code=%s could not be determined." +msgstr "Language for code=%s could not be determined." + +#: ../extensions/cpsection/language/model.py:152 +#, python-format +msgid "Sorry I do not speak '%s'." +msgstr "Sorry I do not speak '%s'." + +#: ../extensions/cpsection/language/view.py:57 +msgid "" +"Add languages in the order you prefer. If a translation is not available, " +"the next in the list will be used." +msgstr "" +"Add languages in the order you prefer. If a translation is not available, " +"the next in the list will be used." + +#: ../extensions/cpsection/modemconfiguration/__init__.py:21 +msgid "Modem Configuration" +msgstr "Modem Configuration" + +#: ../extensions/cpsection/modemconfiguration/view.py:94 +msgid "" +"You will need to provide the following information to set up a mobile " +"broadband connection to a cellular (3G) network." +msgstr "" +"You will need to provide the following information to set up a mobile " +"broadband connection to a cellular (3G) network." + +#: ../extensions/cpsection/modemconfiguration/view.py:117 +msgid "Country:" +msgstr "Country:" + +#: ../extensions/cpsection/modemconfiguration/view.py:118 +msgid "Provider:" +msgstr "Provider:" + +#: ../extensions/cpsection/modemconfiguration/view.py:119 +msgid "Plan:" +msgstr "Plan:" + +#: ../extensions/cpsection/modemconfiguration/view.py:160 +msgid "Username:" +msgstr "Username:" + +#: ../extensions/cpsection/modemconfiguration/view.py:167 +msgid "Password:" +msgstr "Password:" + +#: ../extensions/cpsection/modemconfiguration/view.py:174 +msgid "Number:" +msgstr "Number:" + +#: ../extensions/cpsection/modemconfiguration/view.py:181 +msgid "Access Point Name (APN):" +msgstr "Access Point Name (APN):" + +#: ../extensions/cpsection/modemconfiguration/view.py:188 +msgid "Personal Identity Number (PIN):" +msgstr "Personal Identity Number (PIN):" + +#: ../extensions/cpsection/modemconfiguration/model.py:161 +#, python-format +msgid "Plan #%s" +msgstr "Plan #%s" + +#: ../extensions/cpsection/modemconfiguration/model.py:291 +#, python-format +msgid "Provider %s" +msgstr "Provider %s" + +#: ../extensions/cpsection/network/__init__.py:21 +#: ../extensions/cpsection/network/view.py:30 +msgid "Network" +msgstr "Network" + +#: ../extensions/cpsection/network/model.py:73 +msgid "State is unknown." +msgstr "State is unknown." + +#: ../extensions/cpsection/network/model.py:101 +msgid "Error in specified radio argument use on/off." +msgstr "Error in specified radio argument use on/off." + +#: ../extensions/cpsection/network/model.py:152 +msgid "Error in specified argument use 0/1." +msgstr "Error in specified argument use 0/1." + +#: ../extensions/cpsection/network/view.py:68 +msgid "Wireless" +msgstr "Wireless" + +#: ../extensions/cpsection/network/view.py:77 +msgid "Turn off the wireless radio to save battery life" +msgstr "Turn off the wireless radio to save battery life" + +#: ../extensions/cpsection/network/view.py:90 +msgid "Radio" +msgstr "Radio" + +#: ../extensions/cpsection/network/view.py:106 +msgid "Discard network history if you have trouble connecting to the network" +msgstr "Discard network history if you have trouble connecting to the network" + +#: ../extensions/cpsection/network/view.py:115 +msgid "Discard network history" +msgstr "Discard network history" + +#: ../extensions/cpsection/network/view.py:131 +msgid "Collaboration" +msgstr "Collaboration" + +#: ../extensions/cpsection/network/view.py:139 +msgid "" +"The server is the equivalent of what room you are in; people on the same " +"server will be able to see each other, even when they aren't on the same " +"network." +msgstr "" +"The server is the equivalent of what room you are in; people on the same " +"server will be able to see each other, even when they aren't on the same " +"network." + +#: ../extensions/cpsection/network/view.py:149 +msgid "Server:" +msgstr "Server:" + +#: ../extensions/cpsection/power/__init__.py:21 +msgid "Power" +msgstr "Power" + +#: ../extensions/cpsection/power/model.py:90 +msgid "Error in automatic pm argument, use on/off." +msgstr "Error in automatic pm argument, use on/off." + +#: ../extensions/cpsection/power/view.py:45 +msgid "Power management" +msgstr "Power management" + +#: ../extensions/cpsection/power/view.py:55 ../data/sugar.schemas.in.h:5 +msgid "Automatic power management (increases battery life)" +msgstr "Automatic power management (increases battery life)" + +#: ../extensions/cpsection/updater/__init__.py:21 +msgid "Software Update" +msgstr "Software Update" + +#: ../extensions/cpsection/updater/view.py:65 +msgid "" +"Software updates correct errors, eliminate security vulnerabilities, and " +"provide new features." +msgstr "" +"Software updates correct errors, eliminate security vulnerabilities, and " +"provide new features." + +#: ../extensions/cpsection/updater/view.py:79 +msgid "Update in progress..." +msgstr "Update in progress..." + +#: ../extensions/cpsection/updater/view.py:106 +msgid "Checking for updates..." +msgstr "Checking for updates..." + +#: ../extensions/cpsection/updater/view.py:108 +msgid "Installing updates..." +msgstr "Installing updates..." + +#: ../extensions/cpsection/updater/view.py:137 +#, python-format +msgid "Checking %s..." +msgstr "Checking %s..." + +#: ../extensions/cpsection/updater/view.py:139 +msgid "Looking for updates..." +msgstr "Looking for updates..." + +#: ../extensions/cpsection/updater/view.py:141 +#, python-format +msgid "Downloading %s..." +msgstr "Downloading %s..." + +#: ../extensions/cpsection/updater/view.py:143 +#, python-format +msgid "Updating %s..." +msgstr "Updating %s..." + +#: ../extensions/cpsection/updater/view.py:153 +msgid "Your software is up-to-date" +msgstr "Your software is up-to-date" + +#: ../extensions/cpsection/updater/view.py:155 +#, python-format +msgid "You can install %s update" +msgid_plural "You can install %s updates" +msgstr[0] "You can install %s update" +msgstr[1] "You can install %s updates" + +#: ../extensions/cpsection/updater/view.py:184 +#, python-format +msgid "%s update was installed" +msgid_plural "%s updates were installed" +msgstr[0] "%s update was installed" +msgstr[1] "%s updates were installed" + +#: ../extensions/cpsection/updater/view.py:266 +msgid "Install selected" +msgstr "Install selected" + +#: ../extensions/cpsection/updater/view.py:284 +#, python-format +msgid "Download size: %s" +msgstr "Download size: %s" + +#: ../extensions/cpsection/updater/view.py:373 +#, python-format +msgid "From version %(current)s to %(new)s (Size: %(size)s)" +msgstr "From version %(current)s to %(new)s (Size: %(size)s)" + +#: ../extensions/cpsection/updater/view.py:380 +#, python-format +msgid "Version %(version)s (Size: %(size)s)" +msgstr "Version %(version)s (Size: %(size)s)" + +#. TRANS: download size is 0 +#: ../extensions/cpsection/updater/view.py:397 +msgid "None" +msgstr "None" + +#. TRANS: download size of very small updates +#: ../extensions/cpsection/updater/view.py:400 +msgid "1 KB" +msgstr "1 KB" + +#. TRANS: download size of small updates, e.g. '250 KB' +#: ../extensions/cpsection/updater/view.py:403 +#, python-format +msgid "%.0f KB" +msgstr "%.0f KB" + +#. TRANS: download size of updates, e.g. '2.3 MB' +#: ../extensions/cpsection/updater/view.py:406 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MB" + +#: ../extensions/cpsection/webaccount/__init__.py:24 +msgid "Configure your Web Services" +msgstr "Configure your Web Services" + +#: ../extensions/cpsection/webaccount/view.py:42 +#, python-format +msgid "" +"No web services are installed.\n" +"Please visit %s for more details." +msgstr "" +"No web services are installed.\n" +"Please visit %s for more details." + +#: ../extensions/deviceicon/battery.py:71 +msgid "My Battery" +msgstr "My Battery" + +#: ../extensions/deviceicon/battery.py:153 +msgid "Removed" +msgstr "Removed" + +#: ../extensions/deviceicon/battery.py:156 +msgid "Charging" +msgstr "Charging" + +#: ../extensions/deviceicon/battery.py:159 +msgid "Very little power remaining" +msgstr "Very little power remaining" + +#. TRANS: do not translate %(hour)d:%(min).2d it is a variable, +#. only translate the word "remaining" +#: ../extensions/deviceicon/battery.py:166 +#, python-format +msgid "%(hour)d:%(min).2d remaining" +msgstr "%(hour)d:%(min).2d remaining" + +#: ../extensions/deviceicon/battery.py:169 +msgid "Charged" +msgstr "Charged" + +#: ../extensions/deviceicon/frame.py:56 +msgid "Show my keyboard" +msgstr "Show my keyboard" + +#: ../extensions/deviceicon/network.py:50 +#, python-format +msgid "IP address: %s" +msgstr "IP address: %s" + +#: ../extensions/deviceicon/network.py:82 +#: ../extensions/deviceicon/network.py:298 +#: ../src/jarabe/desktop/networkviews.py:135 +#: ../src/jarabe/desktop/networkviews.py:509 +msgid "Disconnect" +msgstr "Disconnect" + +#: ../extensions/deviceicon/network.py:107 +#: ../extensions/deviceicon/network.py:290 +#: ../src/jarabe/desktop/networkviews.py:251 +#: ../src/jarabe/desktop/networkviews.py:551 +#: ../src/jarabe/desktop/networkviews.py:693 +msgid "Connecting..." +msgstr "Connecting..." + +#: ../extensions/deviceicon/network.py:112 +#: ../extensions/deviceicon/network.py:180 +#: ../src/jarabe/desktop/networkviews.py:258 +#: ../src/jarabe/desktop/networkviews.py:557 +#: ../src/jarabe/desktop/networkviews.py:699 +msgid "Connected" +msgstr "Connected" + +#: ../extensions/deviceicon/network.py:125 +msgid "No wireless connection" +msgstr "No wireless connection" + +#: ../extensions/deviceicon/network.py:139 +msgid "Channel" +msgstr "Channel" + +#: ../extensions/deviceicon/network.py:154 +msgid "Wired Network" +msgstr "Wired Network" + +#: ../extensions/deviceicon/network.py:183 +msgid "Speed" +msgstr "Speed" + +#: ../extensions/deviceicon/network.py:208 +msgid "Wireless modem" +msgstr "Wireless modem" + +#: ../extensions/deviceicon/network.py:276 +msgid "Please wait..." +msgstr "Please wait..." + +#: ../extensions/deviceicon/network.py:281 +#: ../src/jarabe/desktop/networkviews.py:129 +#: ../src/jarabe/desktop/networkviews.py:503 +#: ../src/jarabe/desktop/networkviews.py:644 +msgid "Connect" +msgstr "Connect" + +#: ../extensions/deviceicon/network.py:282 +msgid "Disconnected" +msgstr "Disconnected" + +#: ../extensions/deviceicon/network.py:289 +#: ../src/jarabe/controlpanel/toolbar.py:121 +#: ../src/jarabe/desktop/keydialog.py:101 +#: ../src/jarabe/frame/activitiestray.py:625 +#: ../src/jarabe/frame/activitiestray.py:746 +#: ../src/jarabe/frame/activitiestray.py:778 +#: ../src/jarabe/journal/expandedentry.py:159 +#: ../src/jarabe/journal/journaltoolbox.py:480 +#: ../src/jarabe/journal/palettes.py:159 +msgid "Cancel" +msgstr "Cancel" + +#: ../extensions/deviceicon/network.py:328 +msgid "Try connection again" +msgstr "Try connection again" + +#: ../extensions/deviceicon/network.py:331 +#, python-format +msgid "Error: %s" +msgstr "Error: %s" + +#: ../extensions/deviceicon/network.py:335 +#, python-format +msgid "Suggestion: %s" +msgstr "Suggestion: %s" + +#: ../extensions/deviceicon/network.py:344 +#, python-format +msgid "Connected for %s" +msgstr "Connected for %s" + +#: ../extensions/deviceicon/network.py:350 +#: ../extensions/deviceicon/network.py:351 +#, python-format +msgid "%d KB" +msgstr "%d KB" + +#: ../extensions/deviceicon/network.py:356 +msgid "Check your PIN/PUK configuration." +msgstr "Check your PIN/PUK configuration." + +#: ../extensions/deviceicon/network.py:359 +msgid "Check your Access Point Name (APN) configuration" +msgstr "Check your Access Point Name (APN) configuration" + +#: ../extensions/deviceicon/network.py:363 +msgid "Check the Number configuration." +msgstr "Check the Number configuration." + +#: ../extensions/deviceicon/network.py:365 +msgid "Check your configuration." +msgstr "Check your configuration." + +#: ../extensions/deviceicon/network.py:621 +msgid "Mesh Network" +msgstr "Mesh Network" + +#: ../extensions/deviceicon/network.py:668 +#, python-format +msgid "Mesh Network %s" +msgstr "Mesh Network %s" + +#: ../extensions/deviceicon/network.py:788 +msgid "No GSM connection available." +msgstr "No GSM connection available." + +#: ../extensions/deviceicon/network.py:789 +msgid "Create a connection in the control panel." +msgstr "Create a connection in the control panel." + +#: ../extensions/deviceicon/speech.py:52 +msgid "Speech" +msgstr "Speech" + +#: ../extensions/deviceicon/speech.py:76 +#: ../extensions/deviceicon/speech.py:150 +#: ../extensions/deviceicon/speech.py:155 +msgid "Say selected text" +msgstr "Say selected text" + +#: ../extensions/deviceicon/speech.py:83 +msgid "Stop playback" +msgstr "Stop playback" + +#: ../extensions/deviceicon/speech.py:92 +msgid "Pitch" +msgstr "Pitch" + +#: ../extensions/deviceicon/speech.py:107 +msgid "Rate" +msgstr "Rate" + +#: ../extensions/deviceicon/speech.py:145 +msgid "Pause playback" +msgstr "Pause playback" + +#: ../extensions/deviceicon/speaker.py:61 +msgid "My Speakers" +msgstr "My Speakers" + +#: ../extensions/deviceicon/speaker.py:136 +msgid "Unmute" +msgstr "Unmute" + +#: ../extensions/deviceicon/speaker.py:139 +msgid "Mute" +msgstr "Mute" + +#: ../extensions/deviceicon/touchpad.py:38 +msgid "finger" +msgstr "finger" + +#: ../extensions/deviceicon/touchpad.py:38 +msgid "stylus" +msgstr "stylus" + +#: ../extensions/deviceicon/touchpad.py:64 +msgid "My touchpad" +msgstr "My touchpad" + +#: ../extensions/deviceicon/volume.py:72 ../src/jarabe/view/palettes.py:184 +msgid "Show contents" +msgstr "Show contents" + +#: ../extensions/globalkey/screenshot.py:61 +msgid "Mesh" +msgstr "Mesh" + +#: ../extensions/globalkey/screenshot.py:63 +#: ../src/jarabe/desktop/homewindow.py:221 +#: ../src/jarabe/frame/zoomtoolbar.py:53 +msgid "Group" +msgstr "Group" + +#: ../extensions/globalkey/screenshot.py:65 +#: ../src/jarabe/desktop/homewindow.py:214 +#: ../src/jarabe/desktop/viewtoolbar.py:73 +#: ../src/jarabe/frame/zoomtoolbar.py:57 +msgid "Home" +msgstr "Home" + +#: ../extensions/globalkey/screenshot.py:71 +#: ../src/jarabe/frame/zoomtoolbar.py:62 +msgid "Activity" +msgstr "Activity" + +#: ../extensions/globalkey/screenshot.py:74 +msgid "Screenshot" +msgstr "Screenshot" + +#: ../extensions/globalkey/screenshot.py:76 +#, python-format +msgid "Screenshot of \"%s\"" +msgstr "Screenshot of \"%s\"" + +#: ../data/sugar.schemas.in.h:1 +msgid "" +"\"disabled\" to ask nick on initialization; \"system\" to reuse UNIX account " +"long name." +msgstr "" +"\"disabled\" to ask nick on initialization; \"system\" to reuse UNIX account " +"long name." + +#: ../data/sugar.schemas.in.h:2 +msgid "" +"A unix timestamp (seconds since epoch) of the last successful activity " +"update." +msgstr "" +"A unix timestamp (seconds since epoch) of the last successful activity " +"update." + +#: ../data/sugar.schemas.in.h:3 +msgid "" +"Activity update backend module, followed by a period, followed by the class " +"name." +msgstr "" +"Activity update backend module, followed by a period, followed by the class " +"name." + +#: ../data/sugar.schemas.in.h:4 +msgid "Activity update backend." +msgstr "Activity update backend." + +#: ../data/sugar.schemas.in.h:6 +msgid "Automatic update frequency." +msgstr "Automatic update frequency." + +#: ../data/sugar.schemas.in.h:7 +msgid "Backup URL" +msgstr "Backup URL" + +#: ../data/sugar.schemas.in.h:8 +msgid "Bundle IDs of protected activities" +msgstr "Bundle IDs of protected activities" + +#: ../data/sugar.schemas.in.h:9 +msgid "" +"Color for the XO icon that is used throughout the desktop. The string is " +"composed of the stroke color and fill color, format is that of rgb colors. " +"Example: #AC32FF,#9A5200" +msgstr "" +"Color for the XO icon that is used throughout the desktop. The string is " +"composed of the stroke color and fill color, format is that of rgb colors. " +"Example: #AC32FF,#9A5200" + +#: ../data/sugar.schemas.in.h:10 +msgid "Corner Delay" +msgstr "Corner Delay" + +#: ../data/sugar.schemas.in.h:11 +msgid "Default font face" +msgstr "Default font face" + +#: ../data/sugar.schemas.in.h:12 +msgid "Default font size" +msgstr "Default font size" + +#: ../data/sugar.schemas.in.h:13 +msgid "Default nick" +msgstr "Default nick" + +#: ../data/sugar.schemas.in.h:14 +msgid "Delay for the activation of the frame using the corners." +msgstr "Delay for the activation of the frame using the corners." + +#: ../data/sugar.schemas.in.h:15 +msgid "Delay for the activation of the frame using the edges." +msgstr "Delay for the activation of the frame using the edges." + +#: ../data/sugar.schemas.in.h:16 +msgid "Edge Delay" +msgstr "Edge Delay" + +#: ../data/sugar.schemas.in.h:17 +msgid "" +"Extreme power management (disables wireless radio, increases battery life)" +msgstr "" +"Extreme power management (disables wireless radio, increases battery life)" + +#: ../data/sugar.schemas.in.h:18 +msgid "Favorites Layout" +msgstr "Favorites Layout" + +#: ../data/sugar.schemas.in.h:19 +msgid "Favorites resume mode" +msgstr "Favorites resume mode" + +#: ../data/sugar.schemas.in.h:20 +msgid "Font face that is used throughout the desktop." +msgstr "Font face that is used throughout the desktop." + +#: ../data/sugar.schemas.in.h:21 +msgid "Font size that is used throughout the desktop." +msgstr "Font size that is used throughout the desktop." + +#: ../data/sugar.schemas.in.h:22 +msgid "" +"Frequency of automatic activity updates, measured in days. 0 means disabled." +msgstr "" +"Frequency of automatic activity updates, measured in days. 0 means disabled." + +#: ../data/sugar.schemas.in.h:23 +msgid "GSM network APN (DEPRECATED/UNUSED)" +msgstr "GSM network APN (DEPRECATED/UNUSED)" + +#: ../data/sugar.schemas.in.h:24 +msgid "GSM network PIN (DEPRECATED/UNUSED)" +msgstr "GSM network PIN (DEPRECATED/UNUSED)" + +#: ../data/sugar.schemas.in.h:25 +msgid "GSM network PUK (DEPRECATED/UNUSED)" +msgstr "GSM network PUK (DEPRECATED/UNUSED)" + +#: ../data/sugar.schemas.in.h:26 +msgid "GSM network access point name configuration (DEPRECATED/UNUSED)" +msgstr "GSM network access point name configuration (DEPRECATED/UNUSED)" + +#: ../data/sugar.schemas.in.h:27 +msgid "GSM network number (DEPRECATED/UNUSED)" +msgstr "GSM network number (DEPRECATED/UNUSED)" + +#: ../data/sugar.schemas.in.h:28 +msgid "GSM network password (DEPRECATED/UNUSED)" +msgstr "GSM network password (DEPRECATED/UNUSED)" + +#: ../data/sugar.schemas.in.h:29 +msgid "GSM network password configuration (DEPRECATED/UNUSED)" +msgstr "GSM network password configuration (DEPRECATED/UNUSED)" + +#: ../data/sugar.schemas.in.h:30 +msgid "" +"GSM network personal identification number configuration (DEPRECATED/UNUSED)" +msgstr "" +"GSM network personal identification number configuration (DEPRECATED/UNUSED)" + +#: ../data/sugar.schemas.in.h:31 +msgid "GSM network personal unlock key configuration (DEPRECATED/UNUSED)" +msgstr "GSM network personal unlock key configuration (DEPRECATED/UNUSED)" + +#: ../data/sugar.schemas.in.h:32 +msgid "GSM network telephone number configuration (DEPRECATED/UNUSED)" +msgstr "GSM network telephone number configuration (DEPRECATED/UNUSED)" + +#: ../data/sugar.schemas.in.h:33 +msgid "GSM network username (DEPRECATED/UNUSED)" +msgstr "GSM network username (DEPRECATED/UNUSED)" + +#: ../data/sugar.schemas.in.h:34 +msgid "GSM network username configuration (DEPRECATED/UNUSED)" +msgstr "GSM network username configuration (DEPRECATED/UNUSED)" + +#: ../data/sugar.schemas.in.h:35 +msgid "" +"If TRUE, Sugar will make us searchable for the other users of the Jabber " +"server." +msgstr "" +"If TRUE, Sugar will make us searchable for the other users of the Jabber " +"server." + +#: ../data/sugar.schemas.in.h:36 +msgid "If TRUE, Sugar will show a \"Log out\" option." +msgstr "If TRUE, Sugar will show a \"Log out\" option." + +#: ../data/sugar.schemas.in.h:37 +msgid "If TRUE, Sugar will show a \"Restart\" option." +msgstr "If TRUE, Sugar will show a \"Restart\" option." + +#: ../data/sugar.schemas.in.h:38 +msgid "" +"If TRUE, Sugar will show default Ad-hoc networks for channel 1,6 and 11. If " +"Sugar sees no \"known\" network when it starts, it does autoconnect to an Ad-" +"hoc network." +msgstr "" +"If TRUE, Sugar will show default Ad-hoc networks for channel 1,6 and 11. If " +"Sugar sees no \"known\" network when it starts, it does autoconnect to an Ad-" +"hoc network." + +#: ../data/sugar.schemas.in.h:39 +msgid "Jabber Server" +msgstr "Jabber Server" + +#: ../data/sugar.schemas.in.h:40 +msgid "Keyboard layouts" +msgstr "Keyboard layouts" + +#: ../data/sugar.schemas.in.h:41 +msgid "Keyboard model" +msgstr "Keyboard model" + +#: ../data/sugar.schemas.in.h:42 +msgid "Keyboard options" +msgstr "Keyboard options" + +#: ../data/sugar.schemas.in.h:43 +msgid "Layout of the favorites view." +msgstr "Layout of the favorites view." + +#: ../data/sugar.schemas.in.h:44 +msgid "" +"List of keyboard layouts. Each entry should be in the form layout(variant)" +msgstr "" +"List of keyboard layouts. Each entry should be in the form layout(variant)" + +#: ../data/sugar.schemas.in.h:45 +msgid "List of keyboard options." +msgstr "List of keyboard options." + +#: ../data/sugar.schemas.in.h:46 +msgid "Microformat update URL." +msgstr "Microformat update URL." + +#: ../data/sugar.schemas.in.h:47 +msgid "Pitch value for the speech sugar service" +msgstr "Pitch value for the speech sugar service" + +#: ../data/sugar.schemas.in.h:48 +msgid "Pitch value used by the speech service in Sugar" +msgstr "Pitch value used by the speech service in Sugar" + +#: ../data/sugar.schemas.in.h:49 +msgid "Power Automatic" +msgstr "Power Automatic" + +#: ../data/sugar.schemas.in.h:50 +msgid "Power Extreme" +msgstr "Power Extreme" + +#: ../data/sugar.schemas.in.h:51 +msgid "Publish to Gadget" +msgstr "Publish to Gadget" + +#: ../data/sugar.schemas.in.h:52 +msgid "Rate value for the speech sugar service" +msgstr "Rate value for the speech sugar service" + +#: ../data/sugar.schemas.in.h:53 +msgid "Rate value used by the speech service in Sugar" +msgstr "Rate value used by the speech service in Sugar" + +#: ../data/sugar.schemas.in.h:54 +msgid "Setting for muting the sound device." +msgstr "Setting for muting the sound device." + +#: ../data/sugar.schemas.in.h:55 +msgid "Show Log out" +msgstr "Show Log out" + +#: ../data/sugar.schemas.in.h:56 +msgid "Show Restart" +msgstr "Show Restart" + +#: ../data/sugar.schemas.in.h:57 +msgid "Show Sugar Ad-hoc networks" +msgstr "Show Sugar Ad-hoc networks" + +#: ../data/sugar.schemas.in.h:58 +msgid "Sound Muted" +msgstr "Sound Muted" + +#: ../data/sugar.schemas.in.h:59 +msgid "The keyboard model to be used" +msgstr "The keyboard model to be used" + +#: ../data/sugar.schemas.in.h:60 +msgid "Timestamp of last activity update." +msgstr "Timestamp of last activity update." + +#: ../data/sugar.schemas.in.h:62 +msgid "Timezone setting for the system." +msgstr "Timezone setting for the system." + +#: ../data/sugar.schemas.in.h:63 +msgid "URL of the jabber server to use." +msgstr "URL of the jabber server to use." + +#: ../data/sugar.schemas.in.h:64 +msgid "" +"URL used by the microformat update backend for activity update information." +msgstr "" +"URL used by the microformat update backend for activity update information." + +#: ../data/sugar.schemas.in.h:65 +msgid "URL where the backup is saved to." +msgstr "URL where the backup is saved to." + +#: ../data/sugar.schemas.in.h:66 +msgid "User Color" +msgstr "User Color" + +#: ../data/sugar.schemas.in.h:67 +msgid "User Name" +msgstr "User Name" + +#: ../data/sugar.schemas.in.h:68 +msgid "User name that is used throughout the desktop." +msgstr "User name that is used throughout the desktop." + +#: ../data/sugar.schemas.in.h:69 +msgid "" +"Users will not be allowed to erase these activities through the list view." +msgstr "" +"Users will not be allowed to erase these activities through the list view." + +#: ../data/sugar.schemas.in.h:70 +msgid "Volume Level" +msgstr "Volume Level" + +#: ../data/sugar.schemas.in.h:71 +msgid "Volume level for the sound device." +msgstr "Volume level for the sound device." + +#: ../data/sugar.schemas.in.h:72 +msgid "" +"When in resume mode, clicking on a favorite icon will cause the last entry " +"for that activity to be resumed." +msgstr "" +"When in resume mode, clicking on a favorite icon will cause the last entry " +"for that activity to be resumed." + +#: ../src/jarabe/controlpanel/cmd.py:28 +#, python-format +msgid "" +"sugar-control-panel: WARNING, found more than one option with the same name: " +"%s module: %r" +msgstr "" +"sugar-control-panel: WARNING, found more than one option with the same name: " +"%s module: %r" + +#: ../src/jarabe/controlpanel/cmd.py:30 +#, python-format +msgid "sugar-control-panel: key=%s not an available option" +msgstr "sugar-control-panel: key=%s not an available option" + +#: ../src/jarabe/controlpanel/cmd.py:31 +#, python-format +msgid "sugar-control-panel: %s" +msgstr "sugar-control-panel: %s" + +#. TRANS: Translators, there's a empty line at the end of this string, +#. which must appear in the translated string (msgstr) as well. +#: ../src/jarabe/controlpanel/cmd.py:38 +msgid "" +"Usage: sugar-control-panel [ option ] key [ args ... ] \n" +" Control for the sugar environment. \n" +" Options: \n" +" -h show this help message and exit \n" +" -l list all the available options \n" +" -h key show information about this key \n" +" -g key get the current value of the key \n" +" -s key set the current value for the key \n" +" -c key clear the current value for the key \n" +" " +msgstr "" +"Usage: sugar-control-panel [ option ] key [ args ... ] \n" +" Control for the sugar environment. \n" +" Options: \n" +" -h show this help message and exit \n" +" -l list all the available options \n" +" -h key show information about this key \n" +" -g key get the current value of the key \n" +" -s key set the current value for the key \n" +" -c key clear the current value for the key \n" +" " + +#: ../src/jarabe/controlpanel/cmd.py:52 +msgid "To apply your changes you have to restart Sugar.\n" +msgstr "To apply your changes you have to restart Sugar.\n" + +#: ../src/jarabe/controlpanel/gui.py:323 ../src/jarabe/journal/palettes.py:187 +#: ../src/jarabe/journal/palettes.py:350 ../src/jarabe/journal/palettes.py:410 +#: ../src/jarabe/journal/volumestoolbar.py:302 +msgid "Warning" +msgstr "Warning" + +#: ../src/jarabe/controlpanel/gui.py:324 +#: ../src/jarabe/controlpanel/sectionview.py:41 +msgid "Changes require restart" +msgstr "Changes require restart" + +#: ../src/jarabe/controlpanel/gui.py:328 +msgid "Cancel changes" +msgstr "Cancel changes" + +#: ../src/jarabe/controlpanel/gui.py:333 +msgid "Later" +msgstr "Later" + +#: ../src/jarabe/controlpanel/gui.py:337 +msgid "Restart now" +msgstr "Restart now" + +#: ../src/jarabe/controlpanel/toolbar.py:56 +#: ../src/jarabe/desktop/viewtoolbar.py:129 +#: ../src/jarabe/journal/journaltoolbox.py:89 +#, python-format +msgid "Search in %s" +msgstr "Search in %s" + +#: ../src/jarabe/controlpanel/toolbar.py:56 +msgid "Settings" +msgstr "Settings" + +#: ../src/jarabe/controlpanel/toolbar.py:65 ../src/jarabe/intro/window.py:211 +msgid "Done" +msgstr "Done" + +#: ../src/jarabe/controlpanel/toolbar.py:127 +#: ../src/jarabe/desktop/favoritesview.py:374 +#: ../src/jarabe/desktop/keydialog.py:105 +msgid "Ok" +msgstr "Ok" + +#: ../src/jarabe/desktop/activitieslist.py:282 +#, python-format +msgid "Version %s" +msgstr "Version %s" + +#: ../src/jarabe/desktop/activitieslist.py:385 +#: ../src/jarabe/journal/listview.py:475 ../src/jarabe/journal/iconview.py:299 +msgid "Clear search" +msgstr "Clear search" + +#: ../src/jarabe/desktop/activitieslist.py:469 +msgid "No matching activities" +msgstr "No matching activities" + +#: ../src/jarabe/desktop/activitieslist.py:505 +msgid "Confirm erase" +msgstr "Confirm erase" + +#: ../src/jarabe/desktop/activitieslist.py:507 +#, python-format +msgid "Confirm erase: Do you want to permanently erase %s?" +msgstr "Confirm erase: Do you want to permanently erase %s?" + +#: ../src/jarabe/desktop/activitieslist.py:511 +#: ../src/jarabe/frame/clipboardmenu.py:65 +#: ../src/jarabe/view/viewsource.py:288 +msgid "Keep" +msgstr "Keep" + +#: ../src/jarabe/desktop/activitieslist.py:514 +#: ../src/jarabe/desktop/activitieslist.py:578 +#: ../src/jarabe/journal/expandedentry.py:153 +#: ../src/jarabe/journal/journaltoolbox.py:443 +#: ../src/jarabe/journal/journaltoolbox.py:475 +#: ../src/jarabe/journal/journaltoolbox.py:689 +#: ../src/jarabe/journal/journaltoolbox.py:695 +#: ../src/jarabe/journal/palettes.py:132 ../src/jarabe/journal/palettes.py:154 +msgid "Erase" +msgstr "Erase" + +#: ../src/jarabe/desktop/activitieslist.py:594 +msgid "Remove favorite" +msgstr "Remove favorite" + +#: ../src/jarabe/desktop/activitieslist.py:598 +msgid "Make favorite" +msgstr "Make favorite" + +#. TRANS: label for the freeform layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:199 +msgid "Freeform" +msgstr "Freeform" + +#. TRANS: label for the ring layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:295 +msgid "Ring" +msgstr "Ring" + +#. TRANS: label for the spiral layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:459 +msgid "Spiral" +msgstr "Spiral" + +#. TRANS: label for the box layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:527 +msgid "Box" +msgstr "Box" + +#. TRANS: label for the box layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:570 +msgid "Triangle" +msgstr "Triangle" + +#: ../src/jarabe/desktop/favoritesview.py:365 +msgid "Registration Failed" +msgstr "Registration Failed" + +#: ../src/jarabe/desktop/favoritesview.py:368 +msgid "Registration Successful" +msgstr "Registration Successful" + +#: ../src/jarabe/desktop/favoritesview.py:369 +msgid "You are now registered with your school server." +msgstr "You are now registered with your school server." + +#: ../src/jarabe/desktop/favoritesview.py:653 +msgid "Register" +msgstr "Register" + +#: ../src/jarabe/desktop/favoritesview.py:656 +#: ../src/jarabe/desktop/favoritesview.py:672 +msgid "Register again" +msgstr "Register again" + +#: ../src/jarabe/desktop/homewindow.py:228 +#: ../src/jarabe/frame/zoomtoolbar.py:49 +msgid "Neighborhood" +msgstr "Neighborhood" + +#: ../src/jarabe/desktop/keydialog.py:94 +#, python-format +msgid "" +"A wireless encryption key is required for\n" +" the wireless network '%s'." +msgstr "" +"A wireless encryption key is required for\n" +" the wireless network '%s'." + +#: ../src/jarabe/desktop/keydialog.py:150 +msgid "Key Type:" +msgstr "Key Type:" + +#: ../src/jarabe/desktop/keydialog.py:170 +msgid "Authentication Type:" +msgstr "Authentication Type:" + +#: ../src/jarabe/desktop/keydialog.py:233 +msgid "WPA & WPA2 Personal" +msgstr "WPA & WPA2 Personal" + +#: ../src/jarabe/desktop/keydialog.py:242 +msgid "Wireless Security:" +msgstr "Wireless Security:" + +#. TRANS: Action label for resuming an activity. +#: ../src/jarabe/desktop/meshbox.py:82 +#: ../src/jarabe/journal/journaltoolbox.py:548 +#: ../src/jarabe/journal/palettes.py:77 ../src/jarabe/view/palettes.py:96 +msgid "Resume" +msgstr "Resume" + +#: ../src/jarabe/desktop/meshbox.py:89 +#: ../src/jarabe/frame/activitiestray.py:190 +msgid "Join" +msgstr "Join" + +#: ../src/jarabe/desktop/networkviews.py:497 +#, python-format +msgid "Ad-hoc Network %d" +msgstr "Ad-hoc Network %d" + +#: ../src/jarabe/desktop/networkviews.py:639 +#, python-format +msgid "Mesh Network %d" +msgstr "Mesh Network %d" + +#: ../src/jarabe/desktop/schoolserver.py:144 +msgid "Cannot connect to the server." +msgstr "Cannot connect to the server." + +#: ../src/jarabe/desktop/schoolserver.py:151 +msgid "The server could not complete the request." +msgstr "The server could not complete the request." + +#: ../src/jarabe/desktop/viewtoolbar.py:95 +msgid "List view" +msgstr "List view" + +#: ../src/jarabe/desktop/viewtoolbar.py:97 +#: ../src/jarabe/desktop/viewtoolbar.py:195 +#: ../src/jarabe/desktop/viewtoolbar.py:209 +#, python-format +#, python-format, +msgid "%d" +msgstr "%d" + +#: ../src/jarabe/desktop/viewtoolbar.py:208 +#, python-format +#, python-format, +msgid "Favorites view %d" +msgstr "Favorites view %d" + +#: ../src/jarabe/frame/activitiestray.py:195 +#: ../src/jarabe/frame/activitiestray.py:593 +msgid "Decline" +msgstr "Decline" + +#: ../src/jarabe/frame/activitiestray.py:534 +#, python-format +msgid "%dB" +msgstr "%dB" + +#: ../src/jarabe/frame/activitiestray.py:536 +#, python-format +msgid "%dKB" +msgstr "%dKB" + +#: ../src/jarabe/frame/activitiestray.py:538 +#, python-format +msgid "%dMB" +msgstr "%dMB" + +#. TRANS: file transfer, bytes transferred, e.g. 128 of 1024 +#: ../src/jarabe/frame/activitiestray.py:556 +#, python-format +msgid "%s of %s" +msgstr "%s of %s" + +#: ../src/jarabe/frame/activitiestray.py:570 +#, python-format +#, python-format, +msgid "Transfer from %s" +msgstr "Transfer from %s" + +#: ../src/jarabe/frame/activitiestray.py:585 +msgid "Accept" +msgstr "Accept" + +#: ../src/jarabe/frame/activitiestray.py:653 +#: ../src/jarabe/frame/activitiestray.py:666 +#: ../src/jarabe/frame/activitiestray.py:807 +msgid "Dismiss" +msgstr "Dismiss" + +#: ../src/jarabe/frame/activitiestray.py:680 +msgid "The other participant canceled the file transfer" +msgstr "The other participant canceled the file transfer" + +#: ../src/jarabe/frame/activitiestray.py:730 +#, python-format +#, python-format, +msgid "Transfer to %s" +msgstr "Transfer to %s" + +#: ../src/jarabe/frame/clipboardmenu.py:54 +msgctxt "Clipboard" +msgid "Remove" +msgstr "Remove" + +#: ../src/jarabe/frame/clipboardmenu.py:60 +#: ../src/jarabe/frame/clipboardmenu.py:83 +msgid "Open" +msgstr "Open" + +#: ../src/jarabe/frame/clipboardmenu.py:88 +msgid "Open with" +msgstr "Open with" + +#: ../src/jarabe/frame/clipboardobject.py:50 +#, python-format +msgid "%s clipping" +msgstr "%s clipping" + +#: ../src/jarabe/frame/zoomtoolbar.py:50 +msgid "F1" +msgstr "F1" + +#: ../src/jarabe/frame/zoomtoolbar.py:54 +msgid "F2" +msgstr "F2" + +#: ../src/jarabe/frame/zoomtoolbar.py:58 +msgid "F3" +msgstr "F3" + +#: ../src/jarabe/frame/zoomtoolbar.py:63 +msgid "F4" +msgstr "F4" + +#: ../src/jarabe/intro/window.py:106 +msgid "Name:" +msgstr "Name:" + +#: ../src/jarabe/intro/window.py:136 +msgid "Click to change color:" +msgstr "Click to change color:" + +#: ../src/jarabe/intro/window.py:200 ../src/jarabe/journal/detailview.py:95 +msgid "Back" +msgstr "Back" + +#: ../src/jarabe/intro/window.py:214 +msgid "Next" +msgstr "Next" + +#: ../src/jarabe/journal/expandedentry.py:155 +#: ../src/jarabe/journal/journaltoolbox.py:477 +#: ../src/jarabe/journal/palettes.py:156 +#, python-format +msgid "Do you want to permanently erase \"%s\"?" +msgstr "Do you want to permanently erase \"%s\"?" + +#: ../src/jarabe/journal/expandedentry.py:296 +#: ../src/jarabe/journal/listmodel.py:159 ../src/jarabe/journal/model.py:721 +#: ../src/jarabe/journal/palettes.py:70 ../src/jarabe/journal/palettes.py:597 +#: ../src/jarabe/journal/volumestoolbar.py:131 +#: ../src/jarabe/journal/iconmodel.py:110 +msgid "Untitled" +msgstr "Untitled" + +#: ../src/jarabe/journal/expandedentry.py:367 +msgid "No preview" +msgstr "No preview" + +#: ../src/jarabe/journal/expandedentry.py:382 +#, python-format +msgid "Kind: %s" +msgstr "Kind: %s" + +#: ../src/jarabe/journal/expandedentry.py:382 +#: ../src/jarabe/journal/listmodel.py:165 +#: ../src/jarabe/journal/listmodel.py:173 +msgid "Unknown" +msgstr "Unknown" + +#: ../src/jarabe/journal/expandedentry.py:383 +#, python-format +msgid "Date: %s" +msgstr "Date: %s" + +#: ../src/jarabe/journal/expandedentry.py:384 +#, python-format +msgid "Size: %s" +msgstr "Size: %s" + +#: ../src/jarabe/journal/expandedentry.py:411 +#: ../src/jarabe/journal/misc.py:109 +msgid "No date" +msgstr "No date" + +#: ../src/jarabe/journal/expandedentry.py:420 +msgid "Participants:" +msgstr "Participants:" + +#: ../src/jarabe/journal/expandedentry.py:458 +msgid "Description:" +msgstr "Description:" + +#: ../src/jarabe/journal/expandedentry.py:464 +msgid "Tags:" +msgstr "Tags:" + +#: ../src/jarabe/journal/expandedentry.py:469 +msgid "Comments:" +msgstr "Comments:" + +#: ../src/jarabe/journal/journalactivity.py:140 +#: ../src/jarabe/journal/journaltoolbox.py:89 +#: ../src/jarabe/journal/palettes.py:248 +#: ../src/jarabe/journal/volumestoolbar.py:363 +msgid "Journal" +msgstr "Journal" + +#: ../src/jarabe/journal/journaltoolbox.py:98 +msgid "Favorite entries" +msgstr "Favorite entries" + +#: ../src/jarabe/journal/journaltoolbox.py:134 +msgid "Anytime" +msgstr "Anytime" + +#: ../src/jarabe/journal/journaltoolbox.py:136 +msgid "Today" +msgstr "Today" + +#: ../src/jarabe/journal/journaltoolbox.py:138 +msgid "Since yesterday" +msgstr "Since yesterday" + +#. TRANS: Filter entries modified during the last 7 days. +#: ../src/jarabe/journal/journaltoolbox.py:140 +msgid "Past week" +msgstr "Past week" + +#. TRANS: Filter entries modified during the last 30 days. +#: ../src/jarabe/journal/journaltoolbox.py:142 +msgid "Past month" +msgstr "Past month" + +#. TRANS: Filter entries modified during the last 356 days. +#: ../src/jarabe/journal/journaltoolbox.py:144 +msgid "Past year" +msgstr "Past year" + +#: ../src/jarabe/journal/journaltoolbox.py:151 +msgid "Anyone" +msgstr "Anyone" + +#: ../src/jarabe/journal/journaltoolbox.py:153 +msgid "My friends" +msgstr "My friends" + +#: ../src/jarabe/journal/journaltoolbox.py:154 +msgid "My class" +msgstr "My class" + +#: ../src/jarabe/journal/journaltoolbox.py:327 +msgid "Anything" +msgstr "Anything" + +#: ../src/jarabe/journal/journaltoolbox.py:419 +#: ../src/jarabe/journal/palettes.py:99 +msgid "Copy to" +msgstr "Copy to" + +#: ../src/jarabe/journal/journaltoolbox.py:427 +#: ../src/jarabe/journal/palettes.py:110 ../src/jarabe/view/viewsource.py:282 +msgid "Duplicate" +msgstr "Duplicate" + +#: ../src/jarabe/journal/journaltoolbox.py:433 +msgid "Refresh" +msgstr "Refresh" + +#: ../src/jarabe/journal/journaltoolbox.py:470 +#: ../src/jarabe/journal/palettes.py:149 ../src/jarabe/journal/palettes.py:360 +#: ../src/jarabe/journal/volumestoolbar.py:310 +#, python-format +msgid "Error while copying the entry. %s" +msgstr "Error while copying the entry. %s" + +#: ../src/jarabe/journal/journaltoolbox.py:471 +#: ../src/jarabe/journal/palettes.py:150 ../src/jarabe/journal/palettes.py:361 +#: ../src/jarabe/journal/volumestoolbar.py:311 +msgid "Error" +msgstr "Error" + +#. TRANS: Action label for starting an entry. +#: ../src/jarabe/journal/journaltoolbox.py:551 +#: ../src/jarabe/journal/palettes.py:80 +msgid "Start" +msgstr "Start" + +#: ../src/jarabe/journal/journaltoolbox.py:579 +msgid "Sort by date modified" +msgstr "Sort by date modified" + +#: ../src/jarabe/journal/journaltoolbox.py:580 +msgid "Sort by date created" +msgstr "Sort by date created" + +#: ../src/jarabe/journal/journaltoolbox.py:581 +msgid "Sort by size" +msgstr "Sort by size" + +#: ../src/jarabe/journal/journaltoolbox.py:590 +msgid "Sort view" +msgstr "Sort view" + +#: ../src/jarabe/journal/journaltoolbox.py:661 +msgid "Deselect all" +msgstr "Deselect all" + +#: ../src/jarabe/journal/journaltoolbox.py:674 +msgid "Select all" +msgstr "Select all" + +#: ../src/jarabe/journal/journaltoolbox.py:700 +#, python-format +msgid "Do you want to erase %d entry?" +msgid_plural "Do you want to erase %d entries?" +msgstr[0] "Do you want to erase %d entry?" +msgstr[1] "Do you want to erase %d entries?" + +#: ../src/jarabe/journal/journaltoolbox.py:714 +#: ../src/jarabe/journal/palettes.py:364 +msgid "Copy" +msgstr "Copy" + +#. TRANS: Do not translate %(selected)d and %(total)d. +#: ../src/jarabe/journal/journaltoolbox.py:759 +#, python-format +msgid "Selected %(selected)d of %(total)d" +msgstr "Selected %(selected)d of %(total)d" + +#: ../src/jarabe/journal/listview.py:387 ../src/jarabe/journal/iconview.py:211 +msgid "Your Journal is empty" +msgstr "Your Journal is empty" + +#: ../src/jarabe/journal/listview.py:390 ../src/jarabe/journal/iconview.py:214 +msgid "Your documents folder is empty" +msgstr "Your documents folder is empty" + +#: ../src/jarabe/journal/listview.py:392 ../src/jarabe/journal/iconview.py:216 +msgid "The device is empty" +msgstr "The device is empty" + +#: ../src/jarabe/journal/listview.py:394 ../src/jarabe/journal/iconview.py:218 +msgid "No matching entries" +msgstr "No matching entries" + +#: ../src/jarabe/journal/misc.py:252 +#, python-format +msgid "Older Version Of %s Activity" +msgstr "Older Version Of %s Activity" + +#: ../src/jarabe/journal/misc.py:253 +#, python-format +msgid "Do you want to downgrade to version %s" +msgstr "Do you want to downgrade to version %s" + +#: ../src/jarabe/journal/modalalert.py:65 +msgid "Your Journal is full" +msgstr "Your Journal is full" + +#: ../src/jarabe/journal/modalalert.py:70 +msgid "Please delete some old Journal entries to make space for new ones." +msgstr "Please delete some old Journal entries to make space for new ones." + +#: ../src/jarabe/journal/modalalert.py:84 +msgid "Show Journal" +msgstr "Show Journal" + +#: ../src/jarabe/journal/objectchooser.py:170 +msgid "Choose an object" +msgstr "Choose an object" + +#: ../src/jarabe/journal/objectchooser.py:175 +#, python-format +msgid "Choose an object to open with %s activity" +msgstr "Choose an object to open with %s activity" + +#: ../src/jarabe/journal/objectchooser.py:183 +#: ../src/jarabe/view/viewsource.py:418 +msgid "Close" +msgstr "Close" + +#: ../src/jarabe/journal/palettes.py:78 +msgid "Resume with" +msgstr "Resume with" + +#: ../src/jarabe/journal/palettes.py:81 +msgid "Start with" +msgstr "Start with" + +#: ../src/jarabe/journal/palettes.py:94 ../src/jarabe/journal/palettes.py:489 +msgid "No activity to start entry" +msgstr "No activity to start entry" + +#: ../src/jarabe/journal/palettes.py:118 +msgid "Send to" +msgstr "Send to" + +#: ../src/jarabe/journal/palettes.py:127 +msgid "View Details" +msgstr "View Details" + +#: ../src/jarabe/journal/palettes.py:186 +msgid "Entries without a file cannot be sent." +msgstr "Entries without a file cannot be sent." + +#: ../src/jarabe/journal/palettes.py:260 +#: ../src/jarabe/journal/volumestoolbar.py:211 +msgid "Documents" +msgstr "Documents" + +#: ../src/jarabe/journal/palettes.py:349 ../src/jarabe/journal/palettes.py:409 +#: ../src/jarabe/journal/volumestoolbar.py:301 +msgid "Entries without a file cannot be copied." +msgstr "Entries without a file cannot be copied." + +#: ../src/jarabe/journal/palettes.py:369 +#, python-format +msgid "Do you want to copy %d entry?" +msgid_plural "Do you want to copy %d entries?" +msgstr[0] "Do you want to copy %d entry?" +msgstr[1] "Do you want to copy %d entries?" + +#: ../src/jarabe/journal/palettes.py:394 +msgid "Clipboard" +msgstr "Clipboard" + +#: ../src/jarabe/journal/palettes.py:454 +msgid "No friends present" +msgstr "No friends present" + +#: ../src/jarabe/journal/palettes.py:459 +msgid "No valid connection found" +msgstr "No valid connection found" + +#: ../src/jarabe/journal/palettes.py:487 +msgid "No activity to resume entry" +msgstr "No activity to resume entry" + +#: ../src/jarabe/journal/palettes.py:556 ../src/jarabe/view/palettes.py:110 +msgid "Stop" +msgstr "Stop" + +#: ../src/jarabe/journal/palettes.py:561 +msgid "Continue" +msgstr "Continue" + +#: ../src/jarabe/journal/palettes.py:598 +#, python-format +msgid "%(index)d of %(total)d : %(object_title)s" +msgstr "%(index)d of %(total)d : %(object_title)s" + +#: ../src/jarabe/journal/volumestoolbar.py:386 +#: ../src/jarabe/view/palettes.py:225 ../src/jarabe/view/palettes.py:292 +#, python-format +msgid "%(free_space)d MB Free" +msgstr "%(free_space)d MB Free" + +#: ../src/jarabe/model/network.py:214 +msgid "The reason for the device state change is unknown." +msgstr "The reason for the device state change is unknown." + +#: ../src/jarabe/model/network.py:216 +msgid "The state change is normal." +msgstr "The state change is normal." + +#: ../src/jarabe/model/network.py:218 +msgid "The device is now managed." +msgstr "The device is now managed." + +#: ../src/jarabe/model/network.py:220 +msgid "The device is no longer managed." +msgstr "The device is no longer managed." + +#: ../src/jarabe/model/network.py:222 +msgid "The device could not be readied for configuration." +msgstr "The device could not be readied for configuration." + +#: ../src/jarabe/model/network.py:224 +msgid "" +"IP configuration could not be reserved (no available address, timeout, etc)." +msgstr "" +"IP configuration could not be reserved (no available address, timeout, etc)." + +#: ../src/jarabe/model/network.py:227 +msgid "The IP configuration is no longer valid." +msgstr "The IP configuration is no longer valid." + +#: ../src/jarabe/model/network.py:229 +msgid "Secrets were required, but not provided." +msgstr "Secrets were required, but not provided." + +#: ../src/jarabe/model/network.py:231 +msgid "" +"The 802.1X supplicant disconnected from the access point or authentication " +"server." +msgstr "" +"The 802.1X supplicant disconnected from the access point or authentication " +"server." + +#: ../src/jarabe/model/network.py:234 +msgid "Configuration of the 802.1X supplicant failed." +msgstr "Configuration of the 802.1X supplicant failed." + +#: ../src/jarabe/model/network.py:236 +msgid "The 802.1X supplicant quit or failed unexpectedly." +msgstr "The 802.1X supplicant quit or failed unexpectedly." + +#: ../src/jarabe/model/network.py:238 +msgid "The 802.1X supplicant took too long to authenticate." +msgstr "The 802.1X supplicant took too long to authenticate." + +#: ../src/jarabe/model/network.py:240 +msgid "The PPP service failed to start within the allowed time." +msgstr "The PPP service failed to start within the allowed time." + +#: ../src/jarabe/model/network.py:242 +msgid "The PPP service disconnected unexpectedly." +msgstr "The PPP service disconnected unexpectedly." + +#: ../src/jarabe/model/network.py:244 +msgid "The PPP service quit or failed unexpectedly." +msgstr "The PPP service quit or failed unexpectedly." + +#: ../src/jarabe/model/network.py:246 +msgid "The DHCP service failed to start within the allowed time." +msgstr "The DHCP service failed to start within the allowed time." + +#: ../src/jarabe/model/network.py:248 +msgid "The DHCP service reported an unexpected error." +msgstr "The DHCP service reported an unexpected error." + +#: ../src/jarabe/model/network.py:250 +msgid "The DHCP service quit or failed unexpectedly." +msgstr "The DHCP service quit or failed unexpectedly." + +#: ../src/jarabe/model/network.py:252 +msgid "The shared connection service failed to start." +msgstr "The shared connection service failed to start." + +#: ../src/jarabe/model/network.py:254 +msgid "The shared connection service quit or failed unexpectedly." +msgstr "The shared connection service quit or failed unexpectedly." + +#: ../src/jarabe/model/network.py:257 +msgid "The AutoIP service failed to start." +msgstr "The AutoIP service failed to start." + +#: ../src/jarabe/model/network.py:259 +msgid "The AutoIP service reported an unexpected error." +msgstr "The AutoIP service reported an unexpected error." + +#: ../src/jarabe/model/network.py:261 +msgid "The AutoIP service quit or failed unexpectedly." +msgstr "The AutoIP service quit or failed unexpectedly." + +#: ../src/jarabe/model/network.py:263 +msgid "Dialing failed because the line was busy." +msgstr "Dialing failed because the line was busy." + +#: ../src/jarabe/model/network.py:265 +msgid "Dialing failed because there was no dial tone." +msgstr "Dialing failed because there was no dial tone." + +#: ../src/jarabe/model/network.py:267 +msgid "Dialing failed because there was no carrier." +msgstr "Dialing failed because there was no carrier." + +#: ../src/jarabe/model/network.py:269 +msgid "Dialing timed out." +msgstr "Dialing timed out." + +#: ../src/jarabe/model/network.py:271 +msgid "Dialing failed." +msgstr "Dialing failed." + +#: ../src/jarabe/model/network.py:273 +msgid "Modem initialization failed." +msgstr "Modem initialization failed." + +#: ../src/jarabe/model/network.py:275 +msgid "Failed to select the specified GSM APN" +msgstr "Failed to select the specified GSM APN" + +#: ../src/jarabe/model/network.py:277 +msgid "Not searching for networks." +msgstr "Not searching for networks." + +#: ../src/jarabe/model/network.py:279 +msgid "Network registration was denied." +msgstr "Network registration was denied." + +#: ../src/jarabe/model/network.py:281 +msgid "Network registration timed out." +msgstr "Network registration timed out." + +#: ../src/jarabe/model/network.py:283 +msgid "Failed to register with the requested GSM network." +msgstr "Failed to register with the requested GSM network." + +#: ../src/jarabe/model/network.py:285 +msgid "PIN check failed." +msgstr "PIN check failed." + +#: ../src/jarabe/model/network.py:287 +msgid "Necessary firmware for the device may be missing." +msgstr "Necessary firmware for the device may be missing." + +#: ../src/jarabe/model/network.py:289 +msgid "The device was removed." +msgstr "The device was removed." + +#: ../src/jarabe/model/network.py:291 +msgid "NetworkManager went to sleep." +msgstr "NetworkManager went to sleep." + +#: ../src/jarabe/model/network.py:293 +msgid "The device's active connection was removed or disappeared." +msgstr "The device's active connection was removed or disappeared." + +#: ../src/jarabe/model/network.py:296 +msgid "A user or client requested the disconnection." +msgstr "A user or client requested the disconnection." + +#: ../src/jarabe/model/network.py:298 +msgid "The device's carrier/link changed." +msgstr "The device's carrier/link changed." + +#: ../src/jarabe/model/network.py:300 +msgid "The device's existing connection was assumed." +msgstr "The device's existing connection was assumed." + +#: ../src/jarabe/model/network.py:302 +msgid "The supplicant is now available." +msgstr "The supplicant is now available." + +#: ../src/jarabe/model/network.py:304 +msgid "The modem could not be found." +msgstr "The modem could not be found." + +#: ../src/jarabe/model/network.py:306 +msgid "The Bluetooth connection failed or timed out." +msgstr "The Bluetooth connection failed or timed out." + +#: ../src/jarabe/model/network.py:308 +msgid "Unused." +msgstr "Unused." + +#: ../src/jarabe/view/buddymenu.py:72 +msgid "Remove friend" +msgstr "Remove friend" + +#: ../src/jarabe/view/buddymenu.py:75 +msgid "Make friend" +msgstr "Make friend" + +#: ../src/jarabe/view/buddymenu.py:91 +msgid "Shutdown" +msgstr "Shutdown" + +#: ../src/jarabe/view/buddymenu.py:98 +msgid "Restart" +msgstr "Restart" + +#: ../src/jarabe/view/buddymenu.py:104 +msgid "Logout" +msgstr "Logout" + +#: ../src/jarabe/view/buddymenu.py:109 +msgid "My Settings" +msgstr "My Settings" + +#: ../src/jarabe/view/buddymenu.py:149 +#, python-format +msgid "Invite to %s" +msgstr "Invite to %s" + +#: ../src/jarabe/view/launcher.py:144 +#, python-format +msgid "%s failed to start." +msgstr "%s failed to start." + +#: ../src/jarabe/view/palettes.py:51 +msgid "Starting..." +msgstr "Starting..." + +#: ../src/jarabe/view/palettes.py:61 +msgid "Activity failed to start" +msgstr "Activity failed to start" + +#. TODO: share-with, keep +#: ../src/jarabe/view/palettes.py:102 +msgid "View Source" +msgstr "View Source" + +#: ../src/jarabe/view/palettes.py:153 +msgid "Start new" +msgstr "Start new" + +#: ../src/jarabe/view/palettes.py:241 +msgctxt "Volume" +msgid "Remove" +msgstr "Remove" + +#: ../src/jarabe/view/viewsource.py:271 +msgid "Instance Source" +msgstr "Instance Source" + +#: ../src/jarabe/view/viewsource.py:320 +msgid "Source" +msgstr "Source" + +#: ../src/jarabe/view/viewsource.py:382 +msgid "Activity Bundle Source" +msgstr "Activity Bundle Source" + +#: ../src/jarabe/view/viewsource.py:401 +msgid "Sugar Toolkit Source" +msgstr "Sugar Toolkit Source" + +#: ../src/jarabe/view/viewsource.py:408 +#, python-format +#, python-format, +msgid "View source: %s" +msgstr "View source: %s" + +#: ../src/jarabe/view/viewsource.py:409 +#, python-format +msgid "View source: %r" +msgstr "View source: %r" + +#~ msgid "1" +#~ msgstr "1" + +#~ msgid "Update your activities to ensure compatibility with your new software" +#~ msgstr "Update your activities to ensure compatibility with your new software" + +#~ msgid "Check now" +#~ msgstr "Check now" + +#~ msgid "Sugar in a window" +#~ msgstr "Sugar in a window" + +#~ msgid "Software update" +#~ msgstr "Software update" + +#~ msgid "Search" +#~ msgstr "Search" + +#~ msgid "Additional directories which can contain updated translations." +#~ msgstr "Additional directories which can contain updated translations." + +#~ msgid "Directory to search for translations" +#~ msgstr "Directory to search for translations" + +#~ msgid "Error in extreme pm argument, use on/off." +#~ msgstr "Error in extreme pm argument, use on/off." diff --git b/po/kab.po a/po/kab.po new file mode 100644 index 0000000..66c4bee --- /dev/null +++ a/po/kab.po @@ -0,0 +1,2414 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-01-30 14:24+0000\n" +"PO-Revision-Date: 2017-10-15 20:28+0000\n" +"Last-Translator: Yacine-Bouklif \n" +"Language-Team: LANGUAGE \n" +"Language: kab\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.5.1.1\n" +"X-POOTLE-MTIME: 1508099328.000000\n" + +#: ../data/org.sugarlabs.gschema.xml.h:1 +msgid "Migrated to GSettings" +msgstr "Yuneg ar GSettings" + +#: ../data/org.sugarlabs.gschema.xml.h:2 +msgid "This key shows whether or not GConf values were migrated to GSettings" +msgstr "" +"Tasarutt-agi teskan-d ma yella neɣ ala azalen n GConf unagen ar GSettings" + +#: ../data/org.sugarlabs.gschema.xml.h:3 ../data/sugar.schemas.in.h:11 +msgid "Backup URL" +msgstr "Asekles n URL" + +#: ../data/org.sugarlabs.gschema.xml.h:4 ../data/sugar.schemas.in.h:12 +msgid "URL where the backup is saved to." +msgstr "Tansa URL n usekles n uḥraz." + +#: ../data/org.sugarlabs.gschema.xml.h:5 ../data/sugar.schemas.in.h:31 +msgid "Show Log out" +msgstr "Sken tuffɣa" + +#: ../data/org.sugarlabs.gschema.xml.h:6 ../data/sugar.schemas.in.h:32 +msgid "If TRUE, Sugar will show a \"Log out\" option." +msgstr "Ma IH, Sugar ad d-yesken asefran \"Ffeɣ\"." + +#: ../data/org.sugarlabs.gschema.xml.h:7 ../data/sugar.schemas.in.h:33 +msgid "Show Restart" +msgstr "Sken Ales Asenker" + +#: ../data/org.sugarlabs.gschema.xml.h:8 ../data/sugar.schemas.in.h:34 +msgid "If TRUE, Sugar will show a \"Restart\" option." +msgstr "Ma IH, Sugar ad d-yesken asefran \"Ales Asenker\"." + +#: ../data/org.sugarlabs.gschema.xml.h:9 ../data/sugar.schemas.in.h:35 +msgid "Show Shutdown" +msgstr "Sken Sens" + +#: ../data/org.sugarlabs.gschema.xml.h:10 ../data/sugar.schemas.in.h:36 +msgid "If TRUE, Sugar will show a \"Shutdown\" option." +msgstr "Ma IH, Sugar ad d-yesken asefran \"Sens\"." + +#: ../data/org.sugarlabs.gschema.xml.h:11 ../data/sugar.schemas.in.h:37 +msgid "Show Register" +msgstr "Sken ajerred" + +#: ../data/org.sugarlabs.gschema.xml.h:12 ../data/sugar.schemas.in.h:38 +msgid "If TRUE, Sugar will show a \"Register\" option in the buddy palette." +msgstr "Ma IH, Sugar ad d-yesken asefran \"Ajerred\"." + +#: ../data/org.sugarlabs.gschema.xml.h:13 ../data/sugar.schemas.in.h:63 +msgid "Bundle IDs of protected activities" +msgstr "Isulayen n iukemmes n irmuden yettwammestnen" + +#: ../data/org.sugarlabs.gschema.xml.h:14 ../data/sugar.schemas.in.h:64 +msgid "" +"Users will not be allowed to erase these activities through the list view." +msgstr "Iseqdacen ur ttwasirgen ara ad kksen irmuden-agi seg tmeẓri tabdart." + +#: ../data/org.sugarlabs.gschema.xml.h:15 ../data/sugar.schemas.in.h:79 +msgid "A limit to the number of simultaneously open activities." +msgstr "Talast n umḍan n urmud yeldin akken." + +#: ../data/org.sugarlabs.gschema.xml.h:16 ../data/sugar.schemas.in.h:80 +msgid "" +"This int is used to set a limit to the number of open activities. By default " +"(0), there is no limit." +msgstr "" +"Umḍan-agi ummid yettwaseqdec i usbadu n talast n umḍan n irmuden yeldin. " +"Azal amezwer d (0), ulac talast." + +#: ../data/org.sugarlabs.gschema.xml.h:17 ../data/sugar.schemas.in.h:1 +msgid "User Name" +msgstr "Isem n useqdac" + +#: ../data/org.sugarlabs.gschema.xml.h:18 ../data/sugar.schemas.in.h:2 +msgid "User name that is used throughout the desktop." +msgstr "Isem n useqdac yettwaseqdacen deg tnarit." + +#: ../data/org.sugarlabs.gschema.xml.h:19 ../data/sugar.schemas.in.h:3 +msgid "Default nick" +msgstr "Meffer isem amezwer" + +#: ../data/org.sugarlabs.gschema.xml.h:20 ../data/sugar.schemas.in.h:4 +msgid "" +"\"disabled\" to ask nick on initialization; \"system\" to reuse UNIX account " +"long name." +msgstr "" +"\"yensa\" i usuter deg uwennez; \"anagraw\" i useqdec n yisem aɣezfan n " +"umiḍan UNIX." + +#: ../data/org.sugarlabs.gschema.xml.h:21 ../data/sugar.schemas.in.h:5 +msgid "User Color" +msgstr "Ini n useqdac" + +#: ../data/org.sugarlabs.gschema.xml.h:22 ../data/sugar.schemas.in.h:6 +msgid "" +"Color for the XO icon that is used throughout the desktop. The string is " +"composed of the stroke color and fill color, format is that of rgb colors. " +"Example: #AC32FF,#9A5200" +msgstr "" +"Ini n tignit XO yettwaseqdacen deg tnarit. Azrir n isekkilen yegber initen n " +"ujerriḍ akked tačcart. Amasal icudd ar yiniten rgb, Amedya: #AC32FF,#9A5200" + +#: ../data/org.sugarlabs.gschema.xml.h:23 +msgid "User Gender" +msgstr "Tuzuft n useqdac" + +#: ../data/org.sugarlabs.gschema.xml.h:24 +msgid "Gender of the Sugar user, either male, female, or unassigned" +msgstr "Tuzuft n useqdac n Sugar, amalay, unti, neɣ ulac" + +#: ../data/org.sugarlabs.gschema.xml.h:25 +msgid "User Birth Timestamp" +msgstr "Azemzakudn tlalit n useqdac" + +#: ../data/org.sugarlabs.gschema.xml.h:26 +msgid "Birth timestamp (seconds since the epoch)" +msgstr "Azemzakud n tlalit (tasinin deg epoch n unagraw)" + +#: ../data/org.sugarlabs.gschema.xml.h:27 +msgid "Group Label" +msgstr "Tacreṭ n ugraw" + +#: ../data/org.sugarlabs.gschema.xml.h:28 +msgid "Label associated with age, e.g., '2nd Grade'" +msgstr "Tacreṭ icudden ar tneɣrit n tɣuri, amedya 'Aseggas wis 2'" + +#: ../data/org.sugarlabs.gschema.xml.h:29 +msgid "Background image path" +msgstr "Abrid n unekcum ar tugna n tugna n ugilal" + +#: ../data/org.sugarlabs.gschema.xml.h:30 +msgid "Path to the image to be used as a background." +msgstr "Abrid n unekcum n tugna yettwaseqdacen d agilal." + +#: ../data/org.sugarlabs.gschema.xml.h:31 +msgid "Background alpha level" +msgstr "Aswir n tefrawant n ubadu alpha i tugna n ugilal" + +#: ../data/org.sugarlabs.gschema.xml.h:32 +msgid "The opacity of the background image." +msgstr "Aswir n tebrek n tugna n ugilal." + +#: ../data/org.sugarlabs.gschema.xml.h:33 +msgid "Mimetype registry" +msgstr "Anaw MIME (azmam IANA)" + +#: ../data/org.sugarlabs.gschema.xml.h:34 +msgid "Consists of key-value pairs mimetypes and their corresponding activity" +msgstr "" +"Yettwammel s tyugiwin tasarutt-azalen n wanawen MIME akked irmuden-nsen " +"imenṭaḍen" + +#: ../data/org.sugarlabs.gschema.xml.h:35 ../data/sugar.schemas.in.h:7 +msgid "Volume Level" +msgstr "Aswir n ubleɣ" + +#: ../data/org.sugarlabs.gschema.xml.h:36 ../data/sugar.schemas.in.h:8 +msgid "Volume level for the sound device." +msgstr "Aswir n ubleɣ n yibenk ameslaw." + +#: ../data/org.sugarlabs.gschema.xml.h:37 ../data/sugar.schemas.in.h:9 +msgid "Sound Muted" +msgstr "Ameslaw yensa" + +#: ../data/org.sugarlabs.gschema.xml.h:38 ../data/sugar.schemas.in.h:10 +msgid "Setting for muting the sound device." +msgstr "Aseggem n usexsi n yibenk ameslaw." + +#: ../data/org.sugarlabs.gschema.xml.h:39 +msgid "Brightness Level" +msgstr "Aswir n ubruṛeq" + +#: ../data/org.sugarlabs.gschema.xml.h:40 +msgid "Brightness level for the computer screen." +msgstr "Aswir n tafat n ugdil n uselkim." + +#: ../data/org.sugarlabs.gschema.xml.h:41 +#: ../extensions/cpsection/datetime/view.py:66 ../data/sugar.schemas.in.h:13 +msgid "Timezone" +msgstr "Izdi usrig" + +#: ../data/org.sugarlabs.gschema.xml.h:42 ../data/sugar.schemas.in.h:14 +msgid "Timezone setting for the system." +msgstr "Tawila n izḍi usrig n unagraw." + +#: ../data/org.sugarlabs.gschema.xml.h:43 +msgid "Home views" +msgstr "Timeẓriyin tigejdanin" + +#: ../data/org.sugarlabs.gschema.xml.h:44 +msgid "" +"List of home views, including the view icon, the favorite icon and the layout" +msgstr "" +"Tubdarin n tmeẓriyin tigejdanin, igebren timeẓri tabdart, timeẓri tanurift " +"akked d tmeẓri anarag" + +#: ../data/org.sugarlabs.gschema.xml.h:45 +msgid "Launcher animation interval" +msgstr "Azilal n umray n umsenker" + +#: ../data/org.sugarlabs.gschema.xml.h:46 +msgid "" +"Delay in milliseconds between animation updates for launcher pulsing icon." +msgstr "Tansagt s tmilisinin gar usmiren n imrayen i yiwen n umseker. " + +#: ../data/org.sugarlabs.gschema.xml.h:47 ../data/sugar.schemas.in.h:19 +msgid "Edge Delay" +msgstr "Tanzagt n rrif" + +#: ../data/org.sugarlabs.gschema.xml.h:48 ../data/sugar.schemas.in.h:20 +msgid "Delay for the activation of the frame using the edges." +msgstr "Tanzagt n tilmi iseqdacen lerryuf n tmeẓri." + +#: ../data/org.sugarlabs.gschema.xml.h:49 ../data/sugar.schemas.in.h:21 +msgid "Corner Delay" +msgstr "Tanzagt n tiɣmert" + +#: ../data/org.sugarlabs.gschema.xml.h:50 ../data/sugar.schemas.in.h:22 +msgid "Delay for the activation of the frame using the corners." +msgstr "Tanzagt n urmad n tilmi iseqdacen tiɣmar n tmeẓri" + +#: ../data/org.sugarlabs.gschema.xml.h:51 +msgid "Trigger Size" +msgstr "Teɣzi n temnaḍt n urmad" + +#: ../data/org.sugarlabs.gschema.xml.h:52 +msgid "Size of the frame trigger area, in px from the corner/edge." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:53 ../data/sugar.schemas.in.h:23 +msgid "Jabber Server" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:54 ../data/sugar.schemas.in.h:24 +msgid "URL of the jabber server to use." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:55 ../data/sugar.schemas.in.h:29 +msgid "Publish to Gadget" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:56 ../data/sugar.schemas.in.h:30 +msgid "" +"If TRUE, Sugar will make us searchable for the other users of the Jabber " +"server." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:57 +msgid "Social Help Server" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:58 +msgid "URL of the social help server to use with protocol." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:59 ../data/sugar.schemas.in.h:25 +msgid "Power Automatic" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:60 +#: ../extensions/cpsection/power/view.py:55 ../data/sugar.schemas.in.h:26 +msgid "Automatic power management (increases battery life)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:61 ../data/sugar.schemas.in.h:27 +msgid "Power Extreme" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:62 ../data/sugar.schemas.in.h:28 +msgid "" +"Extreme power management (disables wireless radio, increases battery life)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:63 ../data/sugar.schemas.in.h:39 +msgid "Keyboard layouts" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:64 ../data/sugar.schemas.in.h:40 +msgid "" +"List of keyboard layouts. Each entry should be in the form layout(variant)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:65 ../data/sugar.schemas.in.h:41 +msgid "Keyboard options" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:66 ../data/sugar.schemas.in.h:42 +msgid "List of keyboard options." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:67 ../data/sugar.schemas.in.h:43 +msgid "Keyboard model" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:68 ../data/sugar.schemas.in.h:44 +msgid "The keyboard model to be used" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:69 ../data/sugar.schemas.in.h:45 +msgid "Default font face" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:70 ../data/sugar.schemas.in.h:46 +msgid "Font face that is used throughout the desktop." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:71 ../data/sugar.schemas.in.h:47 +msgid "Default font size" +msgstr "Tiddi n lexṣas" + +#: ../data/org.sugarlabs.gschema.xml.h:72 ../data/sugar.schemas.in.h:48 +msgid "Font size that is used throughout the desktop." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:73 ../data/sugar.schemas.in.h:61 +msgid "Show Sugar Ad-hoc networks" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:74 ../data/sugar.schemas.in.h:62 +msgid "" +"If TRUE, Sugar will show default Ad-hoc networks for channel 1,6 and 11. If " +"Sugar sees no \"known\" network when it starts, it does autoconnect to an Ad-" +"hoc network." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:75 +msgid "Enable Ad-hoc autoconnect" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:76 +msgid "If TRUE, Sugar will autoconnect to Ad-hoc networks." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:77 ../data/sugar.schemas.in.h:49 +msgid "GSM network username (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:78 ../data/sugar.schemas.in.h:50 +msgid "GSM network username configuration (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:79 ../data/sugar.schemas.in.h:51 +msgid "GSM network password (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:80 ../data/sugar.schemas.in.h:52 +msgid "GSM network password configuration (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:81 ../data/sugar.schemas.in.h:53 +msgid "GSM network number (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:82 ../data/sugar.schemas.in.h:54 +msgid "GSM network telephone number configuration (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:83 ../data/sugar.schemas.in.h:55 +msgid "GSM network APN (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:84 ../data/sugar.schemas.in.h:56 +msgid "GSM network access point name configuration (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:85 ../data/sugar.schemas.in.h:57 +msgid "GSM network PIN (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:86 ../data/sugar.schemas.in.h:58 +msgid "" +"GSM network personal identification number configuration (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:87 ../data/sugar.schemas.in.h:59 +msgid "GSM network PUK (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:88 ../data/sugar.schemas.in.h:60 +msgid "GSM network personal unlock key configuration (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:89 +msgid "TODO: add summary" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:90 +msgid "TODO: add description" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:91 ../data/sugar.schemas.in.h:65 +msgid "Pitch value for the speech sugar service" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:92 ../data/sugar.schemas.in.h:66 +msgid "Pitch value used by the speech service in Sugar" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:93 ../data/sugar.schemas.in.h:67 +msgid "Rate value for the speech sugar service" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:94 ../data/sugar.schemas.in.h:68 +msgid "Rate value used by the speech service in Sugar" +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:95 ../data/sugar.schemas.in.h:69 +msgid "Activity update backend." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:96 ../data/sugar.schemas.in.h:70 +msgid "" +"Activity update backend module, followed by a period, followed by the class " +"name." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:97 ../data/sugar.schemas.in.h:71 +msgid "Microformat update URL." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:98 ../data/sugar.schemas.in.h:72 +msgid "" +"URL used by the microformat update backend for activity update information." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:99 ../data/sugar.schemas.in.h:73 +msgid "Automatic update frequency." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:100 ../data/sugar.schemas.in.h:74 +msgid "" +"Frequency of automatic activity updates, measured in days. 0 means disabled." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:101 ../data/sugar.schemas.in.h:75 +msgid "Timestamp of last activity update." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:102 ../data/sugar.schemas.in.h:76 +msgid "" +"A unix timestamp (seconds since epoch) of the last successful activity " +"update." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:103 +msgid "New ASLO update.json URL." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:104 +msgid "URL used by the new ASLO updater to download activity data." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:105 ../data/sugar.schemas.in.h:77 +msgid "A description of the hardware available to the user." +msgstr "" + +#: ../data/org.sugarlabs.gschema.xml.h:106 ../data/sugar.schemas.in.h:78 +msgid "This string is displayed in the control panel, about computer section." +msgstr "" + +#: ../extensions/cpsection/aboutme/__init__.py:23 +msgid "About Me" +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:51 +msgid "You must enter a name." +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:83 +#, python-format +msgid "stroke: color=%s hue=%s" +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:86 +#, python-format +msgid "stroke: %s" +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:88 +#, python-format +msgid "fill: color=%s hue=%s" +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:90 +#, python-format +msgid "fill: %s" +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:102 +msgid "Error in specified color modifiers." +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:105 +msgid "Error in specified colors." +msgstr "" + +#: ../extensions/cpsection/aboutme/view.py:243 +msgid "Click to change your color:" +msgstr "" + +#: ../extensions/cpsection/aboutme/view.py:294 +#: ../src/jarabe/intro/window.py:203 +msgid "Select gender:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/__init__.py:21 +msgid "About my Computer" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/model.py:37 +msgid "Not available" +msgstr "Ulac" + +#: ../extensions/cpsection/aboutcomputer/view.py:76 +msgid "Identity" +msgstr "Tamagit" + +#: ../extensions/cpsection/aboutcomputer/view.py:87 +msgid "Model:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:91 +msgid "Serial Number:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:103 +msgid "Software" +msgstr "Aseɣẓan" + +#: ../extensions/cpsection/aboutcomputer/view.py:112 +msgid "Build:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:117 +msgid "Sugar:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:122 +msgid "Firmware:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:127 +msgid "Wireless Firmware:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:134 +#, python-format +msgid "%d days ago" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:136 +#: ../src/jarabe/journal/journaltoolbox.py:169 +msgid "Today" +msgstr "Ass-a" + +#: ../extensions/cpsection/aboutcomputer/view.py:139 +msgid "Last system update:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:150 +msgid "Copyright and License" +msgstr "Izerfan n umeskar d turagt" + +#. TRANS: The word "Sugar" should not be translated. +#: ../extensions/cpsection/aboutcomputer/view.py:169 +msgid "" +"Sugar is the graphical user interface that you are looking at. Sugar is free " +"software, covered by the GNU General Public License, and you are welcome to " +"change it and/or distribute copies of it under certain conditions described " +"therein." +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:181 +msgid "Full license:" +msgstr "" + +#: ../extensions/cpsection/background/__init__.py:21 +msgid "Background" +msgstr "Agilal" + +#: ../extensions/cpsection/background/view.py:48 +msgid "Select a background:" +msgstr "Fren agilal:" + +#: ../extensions/cpsection/background/view.py:57 +msgid "Clear background" +msgstr "Sfeḍ agilal" + +#: ../extensions/cpsection/datetime/__init__.py:21 +msgid "Date & Time" +msgstr "Azemz akked usrag" + +#: ../extensions/cpsection/datetime/model.py:100 +msgid "Error: timezone does not exist." +msgstr "Tuccḍa: tamnaḍt tasragant ulac-itt." + +#: ../extensions/cpsection/frame/__init__.py:21 +msgid "Frame" +msgstr "Akatar" + +#: ../extensions/cpsection/frame/view.py:26 +msgid "never" +msgstr "werǧin" + +#: ../extensions/cpsection/frame/view.py:27 +msgid "instantaneous" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:28 +#, python-format +msgid "%s seconds" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:52 +msgid "Activation Delay" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:68 +msgid "Activation Area" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:85 +msgid "Corner" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:104 +msgid "Edge" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:123 +msgid "Size" +msgstr "Tiddi (bytes/octets)" + +#: ../extensions/cpsection/frame/view.py:221 +msgid "toolbar size" +msgstr "Tiddi n tfeggagt n ifecka" + +#: ../extensions/cpsection/frame/view.py:226 +msgid "exact corner or edge" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:228 +msgid "exact corner" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:230 +msgid "exact edge" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:232 +msgid "ignored" +msgstr "yettwanef" + +#. TRANS: px as in pixels +#: ../extensions/cpsection/frame/view.py:235 +msgid "{}px" +msgstr "" + +#: ../extensions/cpsection/keyboard/__init__.py:21 +#: ../extensions/cpsection/keyboard/view.py:38 +msgid "Keyboard" +msgstr "Anasiw" + +#: ../extensions/cpsection/keyboard/view.py:240 +msgid "Keyboard Model" +msgstr "" + +#: ../extensions/cpsection/keyboard/view.py:301 +msgid "Key(s) to change layout" +msgstr "" + +#: ../extensions/cpsection/keyboard/view.py:369 +msgid "Keyboard Layout(s)" +msgstr "" + +#: ../extensions/cpsection/language/__init__.py:21 +#: ../extensions/cpsection/language/view.py:39 +msgid "Language" +msgstr "Tutlayt" + +#: ../extensions/cpsection/language/model.py:29 +msgid "Could not access ~/.i18n. Create standard settings." +msgstr "" + +#: ../extensions/cpsection/language/model.py:156 +#, python-format +msgid "Language for code=%s could not be determined." +msgstr "" + +#: ../extensions/cpsection/language/model.py:179 +#, python-format +msgid "Sorry I do not speak '%s'." +msgstr "" + +#: ../extensions/cpsection/language/view.py:75 +msgid "" +"Add languages in the order you prefer. If a translation is not available, " +"the next in the list will be used." +msgstr "" + +#: ../extensions/cpsection/language/view.py:383 +#, python-format +msgid "Error writting language configuration (%s)" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/__init__.py:21 +msgid "Modem" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:94 +msgid "" +"You will need to provide the following information to set up a mobile " +"broadband connection to a cellular (3G) network." +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:117 +msgid "Country:" +msgstr "Tamurt:" + +#: ../extensions/cpsection/modemconfiguration/view.py:118 +msgid "Provider:" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:119 +msgid "Plan:" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:160 +msgid "Username:" +msgstr "Isem n wemseqdac:" + +#: ../extensions/cpsection/modemconfiguration/view.py:167 +msgid "Password:" +msgstr "Awal n tbaḍnit:" + +#: ../extensions/cpsection/modemconfiguration/view.py:174 +msgid "Number:" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:181 +msgid "Access Point Name (APN):" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:188 +msgid "Personal Identity Number (PIN):" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/model.py:162 +#, python-format +msgid "Plan #%s" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/model.py:292 +#, python-format +msgid "Provider %s" +msgstr "" + +#: ../extensions/cpsection/network/__init__.py:21 +#: ../extensions/cpsection/network/view.py:30 +msgid "Network" +msgstr "Azeṭṭa" + +#: ../extensions/cpsection/network/model.py:88 +msgid "State is unknown." +msgstr "" + +#: ../extensions/cpsection/network/model.py:104 +msgid "Error in specified radio argument use on/off." +msgstr "" + +#: ../extensions/cpsection/network/model.py:197 +msgid "Error in specified argument use 0/1." +msgstr "" + +#: ../extensions/cpsection/network/view.py:65 +msgid "Wireless" +msgstr "" + +#: ../extensions/cpsection/network/view.py:73 +msgid "The wireless radio may be turned off to save battery life." +msgstr "" + +#: ../extensions/cpsection/network/view.py:86 +msgid "Radio" +msgstr "" + +#: ../extensions/cpsection/network/view.py:103 +msgid "" +"Discard wireless connections if you have trouble connecting to the network" +msgstr "" + +#: ../extensions/cpsection/network/view.py:113 +msgid "Discard wireless connections" +msgstr "" + +#: ../extensions/cpsection/network/view.py:129 +msgid "Collaboration" +msgstr "" + +#: ../extensions/cpsection/network/view.py:137 +msgid "" +"The server is the equivalent of what room you are in; people on the same " +"server will be able to see each other, even when they aren't on the same " +"network." +msgstr "" + +#: ../extensions/cpsection/network/view.py:147 +msgid "Server:" +msgstr "Aqeddac:" + +#: ../extensions/cpsection/network/view.py:163 +msgid "" +"Social Help is a forum that lets you connect with developers and discuss " +"Sugar Activities. Changing servers means discussions will happen in a " +"different place with different people." +msgstr "" + +#: ../extensions/cpsection/network/view.py:173 +msgid "Social Help Server:" +msgstr "" + +#: ../extensions/cpsection/power/__init__.py:24 +msgid "Power" +msgstr "" + +#: ../extensions/cpsection/power/model.py:90 +msgid "Error in automatic pm argument, use on/off." +msgstr "" + +#: ../extensions/cpsection/power/view.py:45 +msgid "Power management" +msgstr "" + +#: ../extensions/cpsection/updater/__init__.py:21 +msgid "Software Update" +msgstr "" + +#: ../extensions/cpsection/updater/view.py:70 +msgid "" +"Software updates correct errors, eliminate security vulnerabilities, and " +"provide new features." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:84 +msgid "Update in progress..." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:119 +msgid "Checking for updates..." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:121 +msgid "Installing updates..." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:150 +#, python-format +msgid "Checking %s..." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:152 +msgid "Looking for updates..." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:154 +#, python-format +msgid "Downloading %s..." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:156 +#, python-format +msgid "Updating %s..." +msgstr "Amucceḍ %s..." + +#: ../extensions/cpsection/updater/view.py:166 +msgid "Your software is up-to-date" +msgstr "" + +#: ../extensions/cpsection/updater/view.py:168 +#, python-format +msgid "You can install %s update" +msgid_plural "You can install %s updates" +msgstr[0] "" +msgstr[1] "" + +#: ../extensions/cpsection/updater/view.py:183 +msgid "Can't connect to the activity server" +msgstr "" + +#: ../extensions/cpsection/updater/view.py:186 +msgid "Verify your connection to internet and try again, or try again later" +msgstr "" + +#: ../extensions/cpsection/updater/view.py:206 +#, python-format +msgid "%s update was installed" +msgid_plural "%s updates were installed" +msgstr[0] "" +msgstr[1] "" + +#: ../extensions/cpsection/updater/view.py:288 +msgid "Install selected" +msgstr "" + +#: ../extensions/cpsection/updater/view.py:307 +#, python-format +msgid "Download size: %s" +msgstr "Tiddi n usider: %s" + +#: ../extensions/cpsection/updater/view.py:399 +#, python-format +msgid "From version %(current)s to %(new)s (Size: %(size)s)" +msgstr "" + +#: ../extensions/cpsection/updater/view.py:406 +#, python-format +msgid "Version %(version)s (Size: %(size)s)" +msgstr "" + +#. TRANS: download size is 0 +#: ../extensions/cpsection/updater/view.py:423 +msgid "None" +msgstr "Aucun" + +#. TRANS: download size of very small updates +#: ../extensions/cpsection/updater/view.py:426 +msgid "1 KB" +msgstr "" + +#. TRANS: download size of small updates, e.g. '250 KB' +#: ../extensions/cpsection/updater/view.py:429 +#, python-format +msgid "%.0f KB" +msgstr "" + +#. TRANS: download size of updates, e.g. '2.3 MB' +#: ../extensions/cpsection/updater/view.py:432 +#, python-format +msgid "%.1f MB" +msgstr "%.1f MAṬ" + +#: ../extensions/cpsection/webaccount/__init__.py:24 +msgid "Web Services" +msgstr "Imeẓla Web" + +#: ../extensions/cpsection/webaccount/view.py:65 +#, python-format +msgid "" +"No web services are installed.\n" +"Please visit %s for more details." +msgstr "" + +#: ../extensions/deviceicon/audio.py:69 +msgid "My Audio" +msgstr "Ameslaw-iw" + +#: ../extensions/deviceicon/audio.py:330 +msgid "Speaker" +msgstr "" + +#: ../extensions/deviceicon/audio.py:331 +msgid "Microphone" +msgstr "Asawaḍ" + +#: ../extensions/deviceicon/battery.py:69 +msgid "My Battery" +msgstr "" + +#: ../extensions/deviceicon/battery.py:151 +msgid "Removed" +msgstr "" + +#: ../extensions/deviceicon/battery.py:154 +msgid "Charging" +msgstr "Asali" + +#: ../extensions/deviceicon/battery.py:157 +msgid "Very little power remaining" +msgstr "" + +#. TRANS: do not translate %(hour)d:%(min).2d it is a variable, +#. only translate the word "remaining" +#: ../extensions/deviceicon/battery.py:164 +#, python-format +msgid "%(hour)d:%(min).2d remaining" +msgstr "" + +#: ../extensions/deviceicon/battery.py:167 +msgid "Charged" +msgstr "Yuli" + +#: ../extensions/deviceicon/display.py:187 +msgid "My Display" +msgstr "Agdil-iw" + +#: ../extensions/deviceicon/display.py:189 +msgid "Take a screenshot" +msgstr "Ṭṭef agdil" + +#: ../extensions/deviceicon/display.py:211 +msgid "Brightness" +msgstr "" + +#: ../extensions/deviceicon/display.py:239 +msgid "Display" +msgstr "Sken" + +#: ../extensions/deviceicon/frame.py:53 +msgid "Show my keyboard" +msgstr "Sken anasiw-iw" + +#: ../extensions/deviceicon/network.py:48 +#, python-format +msgid "IP address: %s" +msgstr "" + +#: ../extensions/deviceicon/network.py:80 +#: ../extensions/deviceicon/network.py:297 +#: ../src/jarabe/desktop/networkviews.py:134 +#: ../src/jarabe/desktop/networkviews.py:510 +msgid "Disconnect" +msgstr "Ffeɣ" + +#: ../extensions/deviceicon/network.py:106 +#: ../extensions/deviceicon/network.py:290 +#: ../src/jarabe/desktop/networkviews.py:250 +#: ../src/jarabe/desktop/networkviews.py:552 +#: ../src/jarabe/desktop/networkviews.py:696 +msgid "Connecting..." +msgstr "" + +#: ../extensions/deviceicon/network.py:110 +#: ../extensions/deviceicon/network.py:181 +#: ../src/jarabe/desktop/networkviews.py:257 +#: ../src/jarabe/desktop/networkviews.py:558 +#: ../src/jarabe/desktop/networkviews.py:702 +msgid "Connected" +msgstr "Iqqen" + +#: ../extensions/deviceicon/network.py:123 +msgid "No wireless connection" +msgstr "Tuqqna war tinelli" + +#: ../extensions/deviceicon/network.py:137 +#: ../extensions/deviceicon/network.py:140 +msgid "Channel" +msgstr "" + +#: ../extensions/deviceicon/network.py:138 +#: ../src/jarabe/journal/expandedentry.py:386 +#: ../src/jarabe/journal/listmodel.py:191 +#: ../src/jarabe/journal/listmodel.py:199 +msgid "Unknown" +msgstr "Arussin" + +#: ../extensions/deviceicon/network.py:156 +msgid "Wired Network" +msgstr "Aẓeṭṭa n tnelli" + +#: ../extensions/deviceicon/network.py:184 +msgid "Speed" +msgstr "" + +#: ../extensions/deviceicon/network.py:209 +msgid "Wireless modem" +msgstr "Atrar war tinelli" + +#: ../extensions/deviceicon/network.py:278 +msgid "Please wait..." +msgstr "Ttxil-k arǧu..." + +#: ../extensions/deviceicon/network.py:282 +#: ../src/jarabe/desktop/networkviews.py:128 +#: ../src/jarabe/desktop/networkviews.py:504 +#: ../src/jarabe/desktop/networkviews.py:647 +msgid "Connect" +msgstr "Qqen" + +#: ../extensions/deviceicon/network.py:283 +#, fuzzy +msgid "Disconnected" +msgstr "Yenser" + +#: ../extensions/deviceicon/network.py:289 +#: ../src/jarabe/controlpanel/toolbar.py:121 +#: ../src/jarabe/frame/activitiestray.py:693 +#: ../src/jarabe/frame/activitiestray.py:815 +#: ../src/jarabe/frame/activitiestray.py:848 +#: ../src/jarabe/journal/expandedentry.py:157 +#: ../src/jarabe/journal/journaltoolbox.py:587 +#: ../src/jarabe/journal/palettes.py:166 +msgid "Cancel" +msgstr "Sesfex" + +#: ../extensions/deviceicon/network.py:327 +msgid "Try connection again" +msgstr "Ɛreḍ tikelt nniḍen tuqqna" + +#: ../extensions/deviceicon/network.py:330 +#, python-format +msgid "Error: %s" +msgstr "Tuccḍa: %s" + +#: ../extensions/deviceicon/network.py:334 +#, python-format +msgid "Suggestion: %s" +msgstr "Asumer: %s" + +#: ../extensions/deviceicon/network.py:344 +#, python-format +msgid "Connected for %s" +msgstr "Iqqen ɣer %s" + +#: ../extensions/deviceicon/network.py:349 +#: ../extensions/deviceicon/network.py:350 +#, python-format +msgid "%d KB" +msgstr "%d KAṬ" + +#: ../extensions/deviceicon/network.py:355 +msgid "Check your PIN/PUK configuration." +msgstr "" + +#: ../extensions/deviceicon/network.py:358 +msgid "Check your Access Point Name (APN) configuration" +msgstr "" + +#: ../extensions/deviceicon/network.py:362 +msgid "Check the Number configuration." +msgstr "" + +#: ../extensions/deviceicon/network.py:364 +msgid "Check your configuration." +msgstr "" + +#: ../extensions/deviceicon/network.py:619 +msgid "Mesh Network" +msgstr "Azeṭṭa Mesh" + +#: ../extensions/deviceicon/network.py:665 +#, python-format +msgid "Mesh Network %s" +msgstr "" + +#: ../extensions/deviceicon/network.py:782 +msgid "No GSM connection available." +msgstr "" + +#: ../extensions/deviceicon/network.py:783 +msgid "Create a connection in My Settings." +msgstr "" + +#: ../extensions/deviceicon/speech.py:49 +msgid "Speech" +msgstr "Ameslay" + +#: ../extensions/deviceicon/speech.py:72 +#: ../extensions/deviceicon/speech.py:147 +#: ../extensions/deviceicon/speech.py:152 +msgid "Say selected text" +msgstr "" + +#: ../extensions/deviceicon/speech.py:80 +msgid "Stop playback" +msgstr "" + +#: ../extensions/deviceicon/speech.py:89 +msgid "Pitch" +msgstr "" + +#: ../extensions/deviceicon/speech.py:104 +msgid "Rate" +msgstr "Afmiḍi" + +#: ../extensions/deviceicon/speech.py:142 +msgid "Pause playback" +msgstr "" + +#: ../extensions/deviceicon/touchpad.py:36 +msgid "finger" +msgstr "" + +#: ../extensions/deviceicon/touchpad.py:36 +msgid "stylus" +msgstr "" + +#: ../extensions/deviceicon/touchpad.py:61 +msgid "My touchpad" +msgstr "" + +#: ../extensions/deviceicon/volume.py:62 ../src/jarabe/view/palettes.py:210 +msgid "Show contents" +msgstr "Sken Igburen" + +#: ../data/sugar.schemas.in.h:15 +msgid "Favorites Layout" +msgstr "" + +#: ../data/sugar.schemas.in.h:16 +msgid "Layout of the favorites view." +msgstr "" + +#: ../data/sugar.schemas.in.h:17 +msgid "Favorites resume mode" +msgstr "" + +#: ../data/sugar.schemas.in.h:18 +msgid "" +"When in resume mode, clicking on a favorite icon will cause the last entry " +"for that activity to be resumed." +msgstr "" + +#: ../src/jarabe/controlpanel/cmd.py:28 +#, python-format +msgid "" +"sugar-control-panel: WARNING, found more than one option with the same name: " +"%s module: %r" +msgstr "" + +#: ../src/jarabe/controlpanel/cmd.py:30 +#, python-format +msgid "sugar-control-panel: key=%s not an available option" +msgstr "" + +#: ../src/jarabe/controlpanel/cmd.py:31 +#, python-format +msgid "sugar-control-panel: %s" +msgstr "" + +#. TRANS: Translators, there's a empty line at the end of this string, +#. which must appear in the translated string (msgstr) as well. +#: ../src/jarabe/controlpanel/cmd.py:38 +msgid "" +"Usage: sugar-control-panel [ option ] key [ args ... ] \n" +" Control for the sugar environment. \n" +" Options: \n" +" -h show this help message and exit \n" +" -l list all the available options \n" +" -h key show information about this key \n" +" -g key get the current value of the key \n" +" -s key set the current value for the key \n" +" -c key clear the current value for the key \n" +" " +msgstr "" + +#: ../src/jarabe/controlpanel/cmd.py:52 +msgid "" +"To apply your changes you have to restart Sugar.\n" +"Hit ctrl+alt+erase on the keyboard to trigger a restart." +msgstr "" + +#: ../src/jarabe/controlpanel/gui.py:373 ../src/jarabe/journal/palettes.py:194 +#: ../src/jarabe/journal/palettes.py:364 ../src/jarabe/journal/palettes.py:424 +#: ../src/jarabe/journal/volumestoolbar.py:304 +msgid "Warning" +msgstr "Ɣur-k" + +#: ../src/jarabe/controlpanel/gui.py:374 +#: ../src/jarabe/controlpanel/sectionview.py:45 +msgid "Changes require restart" +msgstr "" + +#: ../src/jarabe/controlpanel/gui.py:379 +msgid "Cancel changes" +msgstr "" + +#: ../src/jarabe/controlpanel/gui.py:384 +msgid "Later" +msgstr "" + +#: ../src/jarabe/controlpanel/gui.py:388 +msgid "Restart now" +msgstr "" + +#: ../src/jarabe/controlpanel/gui.py:419 ../src/jarabe/view/buddymenu.py:137 +msgid "An activity is not responding." +msgstr "" + +#: ../src/jarabe/controlpanel/gui.py:420 ../src/jarabe/view/buddymenu.py:138 +msgid "You may lose unsaved work if you continue." +msgstr "" + +#: ../src/jarabe/controlpanel/toolbar.py:56 +#: ../src/jarabe/desktop/viewtoolbar.py:129 +#: ../src/jarabe/journal/journaltoolbox.py:94 +#, python-format +msgid "Search in %s" +msgstr "Nadi di %s" + +#: ../src/jarabe/controlpanel/toolbar.py:56 +msgid "Settings" +msgstr "Iγewwaṛen" + +#: ../src/jarabe/controlpanel/toolbar.py:65 ../src/jarabe/intro/window.py:349 +msgid "Done" +msgstr "Immed" + +#: ../src/jarabe/controlpanel/toolbar.py:127 +msgid "Ok" +msgstr "Ih" + +#: ../src/jarabe/desktop/activitieslist.py:340 +#, python-format +msgid "Version %s" +msgstr "Lqem %s" + +#: ../src/jarabe/desktop/activitieslist.py:424 +#: ../src/jarabe/journal/listview.py:566 ../src/jarabe/journal/iconview.py:301 +msgid "Clear search" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:510 +msgid "No matching activities" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:546 +msgid "Confirm erase" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:548 +#, python-format +msgid "Confirm erase: Do you want to permanently erase %s?" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:552 +#: ../src/jarabe/frame/clipboardmenu.py:65 +#: ../src/jarabe/view/viewsource.py:383 +msgid "Keep" +msgstr "Eǧǧ" + +#: ../src/jarabe/desktop/activitieslist.py:555 +#: ../src/jarabe/desktop/activitieslist.py:625 +#: ../src/jarabe/journal/expandedentry.py:151 +#: ../src/jarabe/journal/journaltoolbox.py:545 +#: ../src/jarabe/journal/journaltoolbox.py:582 +#: ../src/jarabe/journal/journaltoolbox.py:806 +#: ../src/jarabe/journal/journaltoolbox.py:812 +#: ../src/jarabe/journal/palettes.py:138 ../src/jarabe/journal/palettes.py:161 +msgid "Erase" +msgstr "Sfeḍ" + +#: ../src/jarabe/desktop/activitieslist.py:641 +msgid "Remove favorite" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:645 +msgid "Make favorite" +msgstr "" + +#. TRANS: label for the freeform layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:209 +msgid "Freeform" +msgstr "" + +#. TRANS: label for the ring layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:305 +msgid "Ring" +msgstr "" + +#. TRANS: label for the spiral layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:469 +msgid "Spiral" +msgstr "" + +#. TRANS: label for the box layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:537 +msgid "Box" +msgstr "" + +#. TRANS: label for the box layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:580 +msgid "Triangle" +msgstr "" + +#: ../src/jarabe/desktop/favoritesview.py:376 +msgid "Registration" +msgstr "Ajerred" + +#: ../src/jarabe/desktop/favoritesview.py:377 +msgid "Please wait, searching for your school server." +msgstr "" + +#: ../src/jarabe/desktop/favoritesview.py:387 +msgid "Registration Failed" +msgstr "" + +#: ../src/jarabe/desktop/favoritesview.py:390 +msgid "Registration Successful" +msgstr "" + +#: ../src/jarabe/desktop/favoritesview.py:391 +msgid "You are now registered with your school server." +msgstr "" + +#: ../src/jarabe/desktop/favoritesview.py:680 +msgid "Register" +msgstr "Sekles" + +#: ../src/jarabe/desktop/favoritesview.py:682 +msgid "Register again" +msgstr "" + +#: ../src/jarabe/desktop/homewindow.py:255 +#: ../src/jarabe/desktop/viewtoolbar.py:73 +#: ../src/jarabe/frame/zoomtoolbar.py:57 ../src/jarabe/model/screenshot.py:63 +#: ../src/jarabe/view/viewhelp.py:76 +msgid "Home" +msgstr "Agejdan" + +#: ../src/jarabe/desktop/homewindow.py:262 +#: ../src/jarabe/frame/zoomtoolbar.py:53 ../src/jarabe/model/screenshot.py:61 +#: ../src/jarabe/view/viewhelp.py:73 +msgid "Group" +msgstr "Agraw" + +#: ../src/jarabe/desktop/homewindow.py:269 +#: ../src/jarabe/frame/zoomtoolbar.py:49 +msgid "Neighborhood" +msgstr "Anarag-iw" + +#: ../src/jarabe/desktop/keydialog.py:92 +#, python-format +msgid "" +"A wireless encryption key is required for\n" +" the wireless network '%s'." +msgstr "" + +#: ../src/jarabe/desktop/keydialog.py:141 +msgid "Key Type:" +msgstr "Anaw n tsarutt:" + +#: ../src/jarabe/desktop/keydialog.py:161 +msgid "Authentication Type:" +msgstr "" + +#: ../src/jarabe/desktop/keydialog.py:224 +msgid "WPA & WPA2 Personal" +msgstr "" + +#: ../src/jarabe/desktop/keydialog.py:233 +msgid "Wireless Security:" +msgstr "" + +#. TRANS: Action label for resuming an activity. +#: ../src/jarabe/desktop/meshbox.py:82 +#: ../src/jarabe/journal/journaltoolbox.py:659 +#: ../src/jarabe/journal/palettes.py:83 ../src/jarabe/view/palettes.py:98 +msgid "Resume" +msgstr "" + +#: ../src/jarabe/desktop/meshbox.py:89 +#: ../src/jarabe/frame/activitiestray.py:208 +msgid "Join" +msgstr "Asemlil" + +#: ../src/jarabe/desktop/networkviews.py:499 +#, python-format +msgid "Ad-hoc Network %d" +msgstr "" + +#: ../src/jarabe/desktop/networkviews.py:643 +#, python-format +msgid "Mesh Network %d" +msgstr "" + +#: ../src/jarabe/desktop/schoolserver.py:144 +msgid "Cannot connect to the server." +msgstr "" + +#: ../src/jarabe/desktop/schoolserver.py:151 +msgid "The server could not complete the request." +msgstr "" + +#: ../src/jarabe/desktop/viewtoolbar.py:95 +msgid "List view" +msgstr "Timeẓri n tebdart" + +#: ../src/jarabe/desktop/viewtoolbar.py:97 +#: ../src/jarabe/desktop/viewtoolbar.py:196 +#: ../src/jarabe/desktop/viewtoolbar.py:210 +#, python-format +msgid "%d" +msgstr "" + +#: ../src/jarabe/frame/activitiestray.py:213 +#: ../src/jarabe/frame/activitiestray.py:657 +msgid "Decline" +msgstr "Agwi" + +#: ../src/jarabe/frame/activitiestray.py:598 +#, python-format +msgid "%dB" +msgstr "%dAṬ" + +#: ../src/jarabe/frame/activitiestray.py:600 +#, python-format +msgid "%dKB" +msgstr "%dKAṬ" + +#: ../src/jarabe/frame/activitiestray.py:602 +#, python-format +msgid "%dMB" +msgstr "%dMAṬ" + +#. TRANS: file transfer, bytes transferred, e.g. 128 of 1024 +#: ../src/jarabe/frame/activitiestray.py:620 +#, python-format +msgid "%s of %s" +msgstr "%s, si %s" + +#: ../src/jarabe/frame/activitiestray.py:634 +#, python-format +msgid "Transfer from %s" +msgstr "" + +#: ../src/jarabe/frame/activitiestray.py:648 +#: ../extensions/cpsection/backup/view.py:324 +msgid "Accept" +msgstr "Qbel" + +#: ../src/jarabe/frame/activitiestray.py:722 +#: ../src/jarabe/frame/activitiestray.py:736 +#: ../src/jarabe/frame/activitiestray.py:878 +msgid "Dismiss" +msgstr "Kkes" + +#: ../src/jarabe/frame/activitiestray.py:750 +msgid "The other participant canceled the file transfer" +msgstr "" + +#: ../src/jarabe/frame/activitiestray.py:800 +#, python-format +msgid "Transfer to %s" +msgstr "" + +#: ../src/jarabe/frame/clipboardmenu.py:54 +msgctxt "Clipboard" +msgid "Remove" +msgstr "Kkes" + +#: ../src/jarabe/frame/clipboardmenu.py:60 +#: ../src/jarabe/frame/clipboardmenu.py:83 +msgid "Open" +msgstr "Ldi" + +#: ../src/jarabe/frame/clipboardmenu.py:88 +msgid "Open with" +msgstr "Ldi s" + +#: ../src/jarabe/frame/clipboardobject.py:50 +#, python-format +msgid "%s clipping" +msgstr "" + +#: ../src/jarabe/frame/zoomtoolbar.py:50 +msgid "F1" +msgstr "" + +#: ../src/jarabe/frame/zoomtoolbar.py:54 +msgid "F2" +msgstr "" + +#: ../src/jarabe/frame/zoomtoolbar.py:58 +msgid "F3" +msgstr "" + +#: ../src/jarabe/frame/zoomtoolbar.py:62 ../src/jarabe/model/screenshot.py:69 +msgid "Activity" +msgstr "Armud" + +#: ../src/jarabe/frame/zoomtoolbar.py:63 +msgid "F4" +msgstr "" + +#: ../src/jarabe/intro/window.py:135 +msgid "Name:" +msgstr "Isem :" + +#: ../src/jarabe/intro/window.py:174 +msgid "Click to change color:" +msgstr "" + +#: ../src/jarabe/intro/window.py:337 ../src/jarabe/journal/detailview.py:95 +msgid "Back" +msgstr "Uɣal" + +#: ../src/jarabe/intro/window.py:352 +msgid "Next" +msgstr "Ar zdat" + +#: ../src/jarabe/intro/agepicker.py:38 +msgid "Select grade:" +msgstr "" + +#: ../src/jarabe/intro/agepicker.py:39 +msgid "Preschool" +msgstr "" + +#: ../src/jarabe/intro/agepicker.py:39 +msgid "Kindergarten" +msgstr "Aɣerbaz n warrac" + +#: ../src/jarabe/intro/agepicker.py:39 +msgid "1st Grade" +msgstr "" + +#: ../src/jarabe/intro/agepicker.py:40 +msgid "2nd Grade" +msgstr "" + +#: ../src/jarabe/intro/agepicker.py:40 +msgid "3rd Grade" +msgstr "" + +#: ../src/jarabe/intro/agepicker.py:40 +msgid "4th Grade" +msgstr "" + +#: ../src/jarabe/intro/agepicker.py:41 +msgid "5th Grade" +msgstr "" + +#: ../src/jarabe/intro/agepicker.py:41 +msgid "6th Grade" +msgstr "" + +#: ../src/jarabe/intro/agepicker.py:41 +msgid "7th Grade" +msgstr "" + +#: ../src/jarabe/intro/agepicker.py:42 +msgid "High School" +msgstr "" + +#: ../src/jarabe/intro/agepicker.py:42 +msgid "Adult" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:153 +#: ../src/jarabe/journal/journaltoolbox.py:584 +#: ../src/jarabe/journal/palettes.py:163 +#, python-format +msgid "Do you want to permanently erase \"%s\"?" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:296 +#: ../src/jarabe/journal/listmodel.py:185 ../src/jarabe/journal/model.py:794 +#: ../src/jarabe/journal/palettes.py:72 ../src/jarabe/journal/palettes.py:621 +#: ../src/jarabe/journal/volumestoolbar.py:134 +#: ../src/jarabe/journal/iconmodel.py:110 +msgid "Untitled" +msgstr "War azwel" + +#: ../src/jarabe/journal/expandedentry.py:366 +msgid "No preview" +msgstr "Ulac taskant" + +#: ../src/jarabe/journal/expandedentry.py:386 +#, python-format +msgid "Kind: %s" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:387 +#, python-format +msgid "Date: %s" +msgstr "Azmez: %s" + +#: ../src/jarabe/journal/expandedentry.py:388 +#, python-format +msgid "Size: %s" +msgstr "Taɣzi : %s." + +#: ../src/jarabe/journal/expandedentry.py:412 +#: ../src/jarabe/journal/misc.py:131 +msgid "No date" +msgstr "Ulac azemz" + +#: ../src/jarabe/journal/expandedentry.py:421 +msgid "Participants:" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:459 +msgid "Description:" +msgstr "Aglam" + +#: ../src/jarabe/journal/expandedentry.py:465 +msgid "Tags:" +msgstr "Ticraḍ:" + +#: ../src/jarabe/journal/expandedentry.py:470 +msgid "Comments:" +msgstr "Iwenniten:" + +#: ../src/jarabe/journal/journalactivity.py:182 +#: ../src/jarabe/journal/journaltoolbox.py:94 +#: ../src/jarabe/journal/palettes.py:260 +#: ../src/jarabe/journal/volumestoolbar.py:349 +#: ../src/jarabe/view/viewhelp.py:79 +msgid "Journal" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:103 +msgid "Favorite entries" +msgstr "" + +#. TRANS: Item on a palette that filters by entry type. +#: ../src/jarabe/journal/journaltoolbox.py:112 +#: ../src/jarabe/journal/journaltoolbox.py:403 +#: ../src/jarabe/journal/journaltoolbox.py:479 +msgid "Anything" +msgstr "Yal taɣawsa" + +#: ../src/jarabe/journal/journaltoolbox.py:118 +#: ../src/jarabe/journal/journaltoolbox.py:165 +#: ../src/jarabe/journal/journaltoolbox.py:483 +msgid "Anytime" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:172 +msgid "Since yesterday" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:175 +msgid "Past week" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:178 +msgid "Past month" +msgstr "Aggur yezrin" + +#: ../src/jarabe/journal/journaltoolbox.py:181 +msgid "Past year" +msgstr "Aseggas yezrin" + +#: ../src/jarabe/journal/journaltoolbox.py:521 +#: ../src/jarabe/journal/palettes.py:105 +msgid "Copy to" +msgstr "Nɣel ar" + +#: ../src/jarabe/journal/journaltoolbox.py:529 +#: ../src/jarabe/journal/palettes.py:116 ../src/jarabe/view/viewsource.py:379 +msgid "Duplicate" +msgstr "Sleg" + +#: ../src/jarabe/journal/journaltoolbox.py:535 +msgid "Refresh" +msgstr "Sismeḍ" + +#: ../src/jarabe/journal/journaltoolbox.py:577 +#: ../src/jarabe/journal/palettes.py:156 ../src/jarabe/journal/palettes.py:374 +#: ../src/jarabe/journal/volumestoolbar.py:312 +#, python-format +msgid "Error while copying the entry. %s" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:578 +#: ../src/jarabe/journal/palettes.py:157 ../src/jarabe/journal/palettes.py:375 +#: ../src/jarabe/journal/volumestoolbar.py:313 +msgid "Error" +msgstr "Tuccḍa" + +#. TRANS: Action label for starting an entry. +#: ../src/jarabe/journal/journaltoolbox.py:662 +#: ../src/jarabe/journal/palettes.py:86 +msgid "Start" +msgstr "Exécuté le" + +#: ../src/jarabe/journal/journaltoolbox.py:682 +#: ../src/jarabe/journal/palettes.py:100 ../src/jarabe/journal/palettes.py:513 +msgid "No activity to start entry" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:700 +msgid "Sort view" +msgstr "Smizzwer timeẓri" + +#: ../src/jarabe/journal/journaltoolbox.py:711 +msgid "Sort by date modified" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:712 +msgid "Sort by date created" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:713 +msgid "Sort by size" +msgstr "Smizzwer s" + +#: ../src/jarabe/journal/journaltoolbox.py:778 +msgid "Deselect all" +msgstr "Kkes afran i meṛṛa" + +#: ../src/jarabe/journal/journaltoolbox.py:791 +msgid "Select all" +msgstr "Fren kulec" + +#: ../src/jarabe/journal/journaltoolbox.py:817 +#, python-format +msgid "Do you want to erase %d entry?" +msgid_plural "Do you want to erase %d entries?" +msgstr[0] "" +msgstr[1] "" + +#: ../src/jarabe/journal/journaltoolbox.py:831 +#: ../src/jarabe/journal/palettes.py:378 +msgid "Copy" +msgstr "Nɣel" + +#. TRANS: Do not translate %(selected)d and %(total)d. +#: ../src/jarabe/journal/journaltoolbox.py:882 +#, python-format +msgid "Selected %(selected)d of %(total)d" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:917 +msgid "Select filter" +msgstr "" + +#: ../src/jarabe/journal/listview.py:473 ../src/jarabe/journal/iconview.py:212 +msgid "Your Journal is empty" +msgstr "" + +#: ../src/jarabe/journal/listview.py:476 ../src/jarabe/journal/iconview.py:215 +msgid "Your documents folder is empty" +msgstr "" + +#: ../src/jarabe/journal/listview.py:478 ../src/jarabe/journal/iconview.py:217 +msgid "The device is empty" +msgstr "" + +#: ../src/jarabe/journal/listview.py:480 ../src/jarabe/journal/iconview.py:220 +msgid "No matching entries" +msgstr "" + +#: ../src/jarabe/journal/misc.py:313 +#, python-format +msgid "Older Version Of %s Activity" +msgstr "" + +#: ../src/jarabe/journal/misc.py:314 +#, python-format +msgid "Do you want to downgrade to version %s" +msgstr "" + +#: ../src/jarabe/journal/modalalert.py:63 +msgid "Your Journal is full" +msgstr "" + +#: ../src/jarabe/journal/modalalert.py:68 +msgid "Please delete some old Journal entries to make space for new ones." +msgstr "" + +#: ../src/jarabe/journal/modalalert.py:82 +msgid "Show Journal" +msgstr "" + +#: ../src/jarabe/journal/objectchooser.py:171 +msgid "Choose an object" +msgstr "" + +#: ../src/jarabe/journal/objectchooser.py:176 +#, python-format +msgid "Choose an object to open with %s activity" +msgstr "" + +#: ../src/jarabe/journal/objectchooser.py:184 +#: ../src/jarabe/view/viewhelp.py:335 ../src/jarabe/view/viewsource.py:579 +msgid "Close" +msgstr "Mdel" + +#: ../src/jarabe/journal/palettes.py:84 +msgid "Resume with" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:87 +msgid "Start with" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:124 +msgid "Send to" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:133 +msgid "View Details" +msgstr "Wali talqayt" + +#: ../src/jarabe/journal/palettes.py:193 +msgid "Entries without a file cannot be sent." +msgstr "" + +#: ../src/jarabe/journal/palettes.py:272 +#: ../src/jarabe/journal/volumestoolbar.py:214 +msgid "Documents" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:363 ../src/jarabe/journal/palettes.py:423 +#: ../src/jarabe/journal/volumestoolbar.py:303 +msgid "Entries without a file cannot be copied." +msgstr "" + +#: ../src/jarabe/journal/palettes.py:383 +#, python-format +msgid "Do you want to copy %d entry?" +msgid_plural "Do you want to copy %d entries?" +msgstr[0] "" +msgstr[1] "" + +#: ../src/jarabe/journal/palettes.py:408 +msgid "Clipboard" +msgstr "Ɣef afus" + +#: ../src/jarabe/journal/palettes.py:478 +msgid "No friends present" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:483 +msgid "No valid connection found" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:511 +msgid "No activity to resume entry" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:580 ../src/jarabe/view/palettes.py:133 +msgid "Stop" +msgstr "Seḥbes" + +#: ../src/jarabe/journal/palettes.py:585 +#: ../extensions/cpsection/backup/view.py:212 +#: ../extensions/cpsection/backup/view.py:265 +msgid "Continue" +msgstr "Kemmel" + +#: ../src/jarabe/journal/palettes.py:622 +#, python-format +msgid "%(index)d of %(total)d : %(object_title)s" +msgstr "" + +#: ../src/jarabe/journal/volumestoolbar.py:375 +#: ../src/jarabe/view/palettes.py:251 ../src/jarabe/view/palettes.py:317 +#, python-format +msgid "%(free_space)d MB Free" +msgstr "" + +#: ../src/jarabe/model/desktop.py:85 +#, python-format +msgid "Favorites view %d" +msgstr "" + +#: ../src/jarabe/model/network.py:217 +msgid "The reason for the device state change is unknown." +msgstr "" + +#: ../src/jarabe/model/network.py:219 +msgid "The state change is normal." +msgstr "" + +#: ../src/jarabe/model/network.py:221 +msgid "The device is now managed." +msgstr "" + +#: ../src/jarabe/model/network.py:223 +msgid "The device is no longer managed." +msgstr "" + +#: ../src/jarabe/model/network.py:225 +msgid "The device could not be readied for configuration." +msgstr "" + +#: ../src/jarabe/model/network.py:227 +msgid "" +"IP configuration could not be reserved (no available address, timeout, etc)." +msgstr "" + +#: ../src/jarabe/model/network.py:230 +msgid "The IP configuration is no longer valid." +msgstr "" + +#: ../src/jarabe/model/network.py:232 +msgid "Secrets were required, but not provided." +msgstr "" + +#: ../src/jarabe/model/network.py:234 +msgid "" +"The 802.1X supplicant disconnected from the access point or authentication " +"server." +msgstr "" + +#: ../src/jarabe/model/network.py:237 +msgid "Configuration of the 802.1X supplicant failed." +msgstr "" + +#: ../src/jarabe/model/network.py:239 +msgid "The 802.1X supplicant quit or failed unexpectedly." +msgstr "" + +#: ../src/jarabe/model/network.py:241 +msgid "The 802.1X supplicant took too long to authenticate." +msgstr "" + +#: ../src/jarabe/model/network.py:243 +msgid "The PPP service failed to start within the allowed time." +msgstr "" + +#: ../src/jarabe/model/network.py:245 +msgid "The PPP service disconnected unexpectedly." +msgstr "" + +#: ../src/jarabe/model/network.py:247 +msgid "The PPP service quit or failed unexpectedly." +msgstr "" + +#: ../src/jarabe/model/network.py:249 +msgid "The DHCP service failed to start within the allowed time." +msgstr "" + +#: ../src/jarabe/model/network.py:251 +msgid "The DHCP service reported an unexpected error." +msgstr "" + +#: ../src/jarabe/model/network.py:253 +msgid "The DHCP service quit or failed unexpectedly." +msgstr "" + +#: ../src/jarabe/model/network.py:255 +msgid "The shared connection service failed to start." +msgstr "" + +#: ../src/jarabe/model/network.py:257 +msgid "The shared connection service quit or failed unexpectedly." +msgstr "" + +#: ../src/jarabe/model/network.py:260 +msgid "The AutoIP service failed to start." +msgstr "" + +#: ../src/jarabe/model/network.py:262 +msgid "The AutoIP service reported an unexpected error." +msgstr "" + +#: ../src/jarabe/model/network.py:264 +msgid "The AutoIP service quit or failed unexpectedly." +msgstr "" + +#: ../src/jarabe/model/network.py:266 +msgid "Dialing failed because the line was busy." +msgstr "" + +#: ../src/jarabe/model/network.py:268 +msgid "Dialing failed because there was no dial tone." +msgstr "" + +#: ../src/jarabe/model/network.py:270 +msgid "Dialing failed because there was no carrier." +msgstr "" + +#: ../src/jarabe/model/network.py:272 +msgid "Dialing timed out." +msgstr "" + +#: ../src/jarabe/model/network.py:274 +msgid "Dialing failed." +msgstr "" + +#: ../src/jarabe/model/network.py:276 +msgid "Modem initialization failed." +msgstr "" + +#: ../src/jarabe/model/network.py:278 +msgid "Failed to select the specified GSM APN" +msgstr "" + +#: ../src/jarabe/model/network.py:280 +msgid "Not searching for networks." +msgstr "" + +#: ../src/jarabe/model/network.py:282 +msgid "Network registration was denied." +msgstr "" + +#: ../src/jarabe/model/network.py:284 +msgid "Network registration timed out." +msgstr "" + +#: ../src/jarabe/model/network.py:286 +msgid "Failed to register with the requested GSM network." +msgstr "" + +#: ../src/jarabe/model/network.py:288 +msgid "PIN check failed." +msgstr "" + +#: ../src/jarabe/model/network.py:290 +msgid "Necessary firmware for the device may be missing." +msgstr "" + +#: ../src/jarabe/model/network.py:292 +msgid "The device was removed." +msgstr "" + +#: ../src/jarabe/model/network.py:294 +msgid "NetworkManager went to sleep." +msgstr "" + +#: ../src/jarabe/model/network.py:296 +msgid "The device's active connection was removed or disappeared." +msgstr "" + +#: ../src/jarabe/model/network.py:299 +msgid "A user or client requested the disconnection." +msgstr "" + +#: ../src/jarabe/model/network.py:301 +msgid "The device's carrier/link changed." +msgstr "" + +#: ../src/jarabe/model/network.py:303 +msgid "The device's existing connection was assumed." +msgstr "" + +#: ../src/jarabe/model/network.py:305 +msgid "The supplicant is now available." +msgstr "" + +#: ../src/jarabe/model/network.py:307 +msgid "The modem could not be found." +msgstr "" + +#: ../src/jarabe/model/network.py:309 +msgid "The Bluetooth connection failed or timed out." +msgstr "" + +#: ../src/jarabe/model/network.py:311 +msgid "Unused." +msgstr "" + +#: ../src/jarabe/model/screenshot.py:59 ../src/jarabe/view/viewhelp.py:70 +msgid "Mesh" +msgstr "" + +#: ../src/jarabe/model/screenshot.py:72 +msgid "Screenshot" +msgstr "Tuṭṭfa n ugdil" + +#: ../src/jarabe/model/screenshot.py:74 +#, python-format +msgid "Screenshot of \"%s\"" +msgstr "" + +#: ../src/jarabe/view/alerts.py:38 ../src/jarabe/view/alerts.py:48 +msgid "Activity launcher" +msgstr "" + +#: ../src/jarabe/view/alerts.py:39 +#, python-format +msgid "%s is already running. Please stop %s before launching it again." +msgstr "" + +#: ../src/jarabe/view/alerts.py:49 +msgid "" +"The maximum number of open activities has been reached. Please close an " +"activity before launching a new one." +msgstr "" + +#: ../src/jarabe/view/buddymenu.py:73 +msgid "Remove friend" +msgstr "" + +#: ../src/jarabe/view/buddymenu.py:76 +msgid "Make friend" +msgstr "" + +#: ../src/jarabe/view/buddymenu.py:108 +msgid "Shutdown" +msgstr "Sexsi" + +#: ../src/jarabe/view/buddymenu.py:113 +msgid "Restart" +msgstr "Ales tanekra" + +#: ../src/jarabe/view/buddymenu.py:119 +msgid "Logout" +msgstr "Tuffɣa" + +#: ../src/jarabe/view/buddymenu.py:124 +msgid "My Settings" +msgstr "Iɣewwaṛen-iw" + +#: ../src/jarabe/view/buddymenu.py:183 +#, python-format +msgid "Invite to %s" +msgstr "" + +#: ../src/jarabe/view/launcher.py:159 +#, python-format +msgid "%s failed to start." +msgstr "" + +#: ../src/jarabe/view/palettes.py:53 +msgid "Starting..." +msgstr "Tanekra..." + +#: ../src/jarabe/view/palettes.py:63 +msgid "Activity failed to start" +msgstr "" + +#. TODO: share-with, keep +#: ../src/jarabe/view/palettes.py:105 +msgid "View Source" +msgstr "Sken aɣbalu" + +#: ../src/jarabe/view/palettes.py:112 +msgid "View Help" +msgstr "Wali asebter n tallelt" + +#: ../src/jarabe/view/palettes.py:179 +msgid "Start new" +msgstr "" + +#: ../src/jarabe/view/palettes.py:266 +msgctxt "Volume" +msgid "Remove" +msgstr "Kkes" + +#: ../src/jarabe/view/viewhelp.py:304 +msgid "Help Manual" +msgstr "" + +#: ../src/jarabe/view/viewhelp.py:318 +msgid "Social Help" +msgstr "" + +#: ../src/jarabe/view/viewhelp.py:326 +#, python-format +msgid "Help: %s" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:364 +msgid "Instance Source" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:392 +#, python-format +msgid "Do you want to duplicate %s Activity?" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:394 +msgid "This may take a few minutes" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:408 +msgid "Duplicating activity..." +msgstr "" + +#: ../src/jarabe/view/viewsource.py:447 +msgid "Duplicated" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:448 +msgid "The activity has been duplicated" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:462 +msgid "Duplicated activity already exists" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:463 +msgid "Delete your copy before trying to duplicate the activity again" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:478 +msgid "Source" +msgstr "Aqbalu" + +#: ../src/jarabe/view/viewsource.py:542 +msgid "Activity Bundle Source" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:561 +msgid "Sugar Toolkit Source" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:568 +#, python-format +msgid "View source: %s" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:569 +#, python-format +msgid "View source: %r" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:809 +msgid "Please select a file in the left panel." +msgstr "" + +#: ../extensions/cpsection/backup/__init__.py:22 +msgid "Backup" +msgstr "Sekles" + +#: ../extensions/cpsection/backup/backends/volume.py:61 +#: ../extensions/cpsection/backup/backends/volume.py:171 +msgid "Please connect a device to continue" +msgstr "" + +#: ../extensions/cpsection/backup/backends/volume.py:69 +#: ../extensions/cpsection/backup/backends/volume.py:178 +msgid "Select your volume" +msgstr "" + +#: ../extensions/cpsection/backup/backends/volume.py:78 +msgid "Not enough space in volume" +msgstr "" + +#: ../extensions/cpsection/backup/backends/volume.py:122 +#, python-format +msgid "Backup from user %s" +msgstr "" + +#: ../extensions/cpsection/backup/backends/volume.py:191 +msgid "No checkpoints found in the device" +msgstr "" + +#: ../extensions/cpsection/backup/backends/volume.py:199 +msgid "Select your checkpoint" +msgstr "" + +#: ../extensions/cpsection/backup/backends/volume.py:210 +msgid "Not enough space in disk" +msgstr "" + +#: ../extensions/cpsection/backup/backends/volume.py:329 +msgid "Local Device Backup" +msgstr "" + +#: ../extensions/cpsection/backup/view.py:133 +msgid "Save the contents of your Journal" +msgstr "" + +#: ../extensions/cpsection/backup/view.py:141 +msgid "Restore the contents of your Journal" +msgstr "" + +#: ../extensions/cpsection/backup/view.py:223 +msgid "Please close all the activities, and start again" +msgstr "" + +#: ../extensions/cpsection/backup/view.py:229 +msgid "Select where you want create your backup" +msgstr "" + +#: ../extensions/cpsection/backup/view.py:231 +msgid "Select where you want retrieve your restore" +msgstr "" + +#: ../extensions/cpsection/backup/view.py:271 +msgid "Retry" +msgstr "Ɛref̣ tikelt-nniḍen" + +#: ../extensions/cpsection/backup/view.py:290 +msgid "Starting backup..." +msgstr "Asenker n uḥraz..." + +#: ../extensions/cpsection/backup/view.py:294 +msgid "Starting restore..." +msgstr "Asenker n tririt..." + +#: ../extensions/cpsection/backup/view.py:321 +msgid "" +"I want to restore the content of my Journal. In order to do this, my Journal " +"will first be emptied of all its content; then the restored content will be " +"added." +msgstr "" + +#: ../extensions/cpsection/backup/view.py:327 +msgid "Confirm" +msgstr "Sentem" + +#: ../extensions/cpsection/backup/view.py:365 +msgid "Operation started" +msgstr "Tamhelt tebda" + +#: ../extensions/cpsection/backup/view.py:377 +msgid "Backup finished successfully" +msgstr "" + +#: ../extensions/cpsection/backup/view.py:379 +msgid "Restore realized successfully." +msgstr "" + +#: ../src/jarabe/frame/notification.py:62 +msgid "Clear notifications" +msgstr "Sfeḍ ilɣa" diff --git b/po/sr@latin.po a/po/sr@latin.po new file mode 100644 index 0000000..669d03d --- /dev/null +++ a/po/sr@latin.po @@ -0,0 +1,1935 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-07-31 00:33-0400\n" +"PO-Revision-Date: 2013-06-18 20:00+0200\n" +"Last-Translator: Chris \n" +"Language-Team: LANGUAGE \n" +"Language: sr@latin\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%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" +"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"X-Generator: Pootle 2.0.5\n" + +#: ../extensions/cpsection/aboutme/__init__.py:24 +msgid "About Me" +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:48 +msgid "You must enter a name." +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:75 +#, python-format +msgid "stroke: color=%s hue=%s" +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:78 +#, python-format +msgid "stroke: %s" +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:80 +#, python-format +msgid "fill: color=%s hue=%s" +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:82 +#, python-format +msgid "fill: %s" +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:94 +msgid "Error in specified color modifiers." +msgstr "" + +#: ../extensions/cpsection/aboutme/model.py:97 +msgid "Error in specified colors." +msgstr "" + +#: ../extensions/cpsection/aboutme/view.py:212 +msgid "Click to change your color:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/__init__.py:21 +msgid "About my Computer" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/model.py:42 +msgid "Not available" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:60 +msgid "Identity" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:69 +msgid "Serial Number:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:91 +msgid "Software" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:100 +msgid "Build:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:115 +msgid "Sugar:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:130 +msgid "Firmware:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:145 +msgid "Wireless Firmware:" +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:168 +msgid "Copyright and License" +msgstr "" + +#. TRANS: The word "Sugar" should not be translated. +#: ../extensions/cpsection/aboutcomputer/view.py:187 +msgid "" +"Sugar is the graphical user interface that you are looking at. Sugar is free " +"software, covered by the GNU General Public License, and you are welcome to " +"change it and/or distribute copies of it under certain conditions described " +"therein." +msgstr "" + +#: ../extensions/cpsection/aboutcomputer/view.py:199 +msgid "Full license:" +msgstr "" + +#: ../extensions/cpsection/background/__init__.py:21 +msgid "Background" +msgstr "Pozadina" + +#: ../extensions/cpsection/background/view.py:39 +msgid "Select a background:" +msgstr "" + +#: ../extensions/cpsection/background/view.py:46 +msgid "Clear background" +msgstr "" + +#: ../extensions/cpsection/datetime/__init__.py:21 +msgid "Date & Time" +msgstr "" + +#: ../extensions/cpsection/datetime/model.py:92 +msgid "Error timezone does not exist." +msgstr "" + +#: ../extensions/cpsection/datetime/view.py:66 ../data/sugar.schemas.in.h:61 +msgid "Timezone" +msgstr "" + +#: ../extensions/cpsection/frame/__init__.py:21 +msgid "Frame" +msgstr "" + +#: ../extensions/cpsection/frame/model.py:41 +#: ../extensions/cpsection/frame/model.py:66 +msgid "Value must be an integer." +msgstr "" + +#: ../extensions/cpsection/frame/view.py:27 +msgid "never" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:28 +msgid "instantaneous" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:29 +#, python-format +msgid "%s seconds" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:54 +msgid "Activation Delay" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:78 +msgid "Corner" +msgstr "" + +#: ../extensions/cpsection/frame/view.py:114 +msgid "Edge" +msgstr "" + +#: ../extensions/cpsection/keyboard/__init__.py:21 +#: ../extensions/cpsection/keyboard/view.py:38 +msgid "Keyboard" +msgstr "" + +#: ../extensions/cpsection/keyboard/view.py:240 +msgid "Keyboard Model" +msgstr "" + +#: ../extensions/cpsection/keyboard/view.py:301 +msgid "Key(s) to change layout" +msgstr "" + +#: ../extensions/cpsection/keyboard/view.py:369 +msgid "Keyboard Layout(s)" +msgstr "" + +#: ../extensions/cpsection/language/__init__.py:21 +#: ../extensions/cpsection/language/view.py:33 +msgid "Language" +msgstr "" + +#: ../extensions/cpsection/language/model.py:30 +msgid "Could not access ~/.i18n. Create standard settings." +msgstr "" + +#: ../extensions/cpsection/language/model.py:129 +#, python-format +msgid "Language for code=%s could not be determined." +msgstr "" + +#: ../extensions/cpsection/language/model.py:152 +#, python-format +msgid "Sorry I do not speak '%s'." +msgstr "" + +#: ../extensions/cpsection/language/view.py:57 +msgid "" +"Add languages in the order you prefer. If a translation is not available, " +"the next in the list will be used." +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/__init__.py:21 +msgid "Modem Configuration" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:94 +msgid "" +"You will need to provide the following information to set up a mobile " +"broadband connection to a cellular (3G) network." +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:117 +msgid "Country:" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:118 +msgid "Provider:" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:119 +msgid "Plan:" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:160 +msgid "Username:" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:167 +msgid "Password:" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:174 +msgid "Number:" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:181 +msgid "Access Point Name (APN):" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/view.py:188 +msgid "Personal Identity Number (PIN):" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/model.py:161 +#, python-format +msgid "Plan #%s" +msgstr "" + +#: ../extensions/cpsection/modemconfiguration/model.py:291 +#, python-format +msgid "Provider %s" +msgstr "" + +#: ../extensions/cpsection/network/__init__.py:21 +#: ../extensions/cpsection/network/view.py:30 +msgid "Network" +msgstr "" + +#: ../extensions/cpsection/network/model.py:73 +msgid "State is unknown." +msgstr "" + +#: ../extensions/cpsection/network/model.py:101 +msgid "Error in specified radio argument use on/off." +msgstr "" + +#: ../extensions/cpsection/network/model.py:152 +msgid "Error in specified argument use 0/1." +msgstr "" + +#: ../extensions/cpsection/network/view.py:68 +msgid "Wireless" +msgstr "" + +#: ../extensions/cpsection/network/view.py:77 +msgid "Turn off the wireless radio to save battery life" +msgstr "" + +#: ../extensions/cpsection/network/view.py:90 +msgid "Radio" +msgstr "" + +#: ../extensions/cpsection/network/view.py:106 +msgid "Discard network history if you have trouble connecting to the network" +msgstr "" + +#: ../extensions/cpsection/network/view.py:115 +msgid "Discard network history" +msgstr "" + +#: ../extensions/cpsection/network/view.py:131 +msgid "Collaboration" +msgstr "" + +#: ../extensions/cpsection/network/view.py:139 +msgid "" +"The server is the equivalent of what room you are in; people on the same " +"server will be able to see each other, even when they aren't on the same " +"network." +msgstr "" + +#: ../extensions/cpsection/network/view.py:149 +msgid "Server:" +msgstr "" + +#: ../extensions/cpsection/power/__init__.py:21 +msgid "Power" +msgstr "" + +#: ../extensions/cpsection/power/model.py:90 +msgid "Error in automatic pm argument, use on/off." +msgstr "" + +#: ../extensions/cpsection/power/view.py:45 +msgid "Power management" +msgstr "" + +#: ../extensions/cpsection/power/view.py:55 ../data/sugar.schemas.in.h:5 +msgid "Automatic power management (increases battery life)" +msgstr "" + +#: ../extensions/cpsection/updater/__init__.py:21 +msgid "Software Update" +msgstr "" + +#: ../extensions/cpsection/updater/view.py:65 +msgid "" +"Software updates correct errors, eliminate security vulnerabilities, and " +"provide new features." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:79 +msgid "Update in progress..." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:106 +msgid "Checking for updates..." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:108 +msgid "Installing updates..." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:137 +#, python-format +msgid "Checking %s..." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:139 +msgid "Looking for updates..." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:141 +#, python-format +msgid "Downloading %s..." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:143 +#, python-format +msgid "Updating %s..." +msgstr "" + +#: ../extensions/cpsection/updater/view.py:153 +msgid "Your software is up-to-date" +msgstr "" + +#: ../extensions/cpsection/updater/view.py:155 +#, python-format +msgid "You can install %s update" +msgid_plural "You can install %s updates" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: ../extensions/cpsection/updater/view.py:184 +#, python-format +msgid "%s update was installed" +msgid_plural "%s updates were installed" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: ../extensions/cpsection/updater/view.py:266 +msgid "Install selected" +msgstr "" + +#: ../extensions/cpsection/updater/view.py:284 +#, python-format +msgid "Download size: %s" +msgstr "" + +#: ../extensions/cpsection/updater/view.py:373 +#, python-format +msgid "From version %(current)s to %(new)s (Size: %(size)s)" +msgstr "" + +#: ../extensions/cpsection/updater/view.py:380 +#, python-format +msgid "Version %(version)s (Size: %(size)s)" +msgstr "" + +#. TRANS: download size is 0 +#: ../extensions/cpsection/updater/view.py:397 +msgid "None" +msgstr "" + +#. TRANS: download size of very small updates +#: ../extensions/cpsection/updater/view.py:400 +msgid "1 KB" +msgstr "" + +#. TRANS: download size of small updates, e.g. '250 KB' +#: ../extensions/cpsection/updater/view.py:403 +#, python-format +msgid "%.0f KB" +msgstr "" + +#. TRANS: download size of updates, e.g. '2.3 MB' +#: ../extensions/cpsection/updater/view.py:406 +#, python-format +msgid "%.1f MB" +msgstr "" + +#: ../extensions/cpsection/webaccount/__init__.py:24 +msgid "Configure your Web Services" +msgstr "" + +#: ../extensions/cpsection/webaccount/view.py:42 +#, python-format +msgid "" +"No web services are installed.\n" +"Please visit %s for more details." +msgstr "" + +#: ../extensions/deviceicon/battery.py:71 +msgid "My Battery" +msgstr "" + +#: ../extensions/deviceicon/battery.py:153 +msgid "Removed" +msgstr "" + +#: ../extensions/deviceicon/battery.py:156 +msgid "Charging" +msgstr "" + +#: ../extensions/deviceicon/battery.py:159 +msgid "Very little power remaining" +msgstr "" + +#. TRANS: do not translate %(hour)d:%(min).2d it is a variable, +#. only translate the word "remaining" +#: ../extensions/deviceicon/battery.py:166 +#, python-format +msgid "%(hour)d:%(min).2d remaining" +msgstr "" + +#: ../extensions/deviceicon/battery.py:169 +msgid "Charged" +msgstr "" + +#: ../extensions/deviceicon/frame.py:56 +msgid "Show my keyboard" +msgstr "" + +#: ../extensions/deviceicon/network.py:50 +#, python-format +msgid "IP address: %s" +msgstr "" + +#: ../extensions/deviceicon/network.py:82 +#: ../extensions/deviceicon/network.py:298 +#: ../src/jarabe/desktop/networkviews.py:135 +#: ../src/jarabe/desktop/networkviews.py:509 +msgid "Disconnect" +msgstr "" + +#: ../extensions/deviceicon/network.py:107 +#: ../extensions/deviceicon/network.py:290 +#: ../src/jarabe/desktop/networkviews.py:251 +#: ../src/jarabe/desktop/networkviews.py:551 +#: ../src/jarabe/desktop/networkviews.py:693 +msgid "Connecting..." +msgstr "" + +#: ../extensions/deviceicon/network.py:112 +#: ../extensions/deviceicon/network.py:180 +#: ../src/jarabe/desktop/networkviews.py:258 +#: ../src/jarabe/desktop/networkviews.py:557 +#: ../src/jarabe/desktop/networkviews.py:699 +msgid "Connected" +msgstr "" + +#: ../extensions/deviceicon/network.py:125 +msgid "No wireless connection" +msgstr "" + +#: ../extensions/deviceicon/network.py:139 +msgid "Channel" +msgstr "" + +#: ../extensions/deviceicon/network.py:154 +msgid "Wired Network" +msgstr "" + +#: ../extensions/deviceicon/network.py:183 +msgid "Speed" +msgstr "" + +#: ../extensions/deviceicon/network.py:208 +msgid "Wireless modem" +msgstr "" + +#: ../extensions/deviceicon/network.py:276 +msgid "Please wait..." +msgstr "" + +#: ../extensions/deviceicon/network.py:281 +#: ../src/jarabe/desktop/networkviews.py:129 +#: ../src/jarabe/desktop/networkviews.py:503 +#: ../src/jarabe/desktop/networkviews.py:644 +msgid "Connect" +msgstr "" + +#: ../extensions/deviceicon/network.py:282 +msgid "Disconnected" +msgstr "" + +#: ../extensions/deviceicon/network.py:289 +#: ../src/jarabe/controlpanel/toolbar.py:121 +#: ../src/jarabe/desktop/keydialog.py:101 +#: ../src/jarabe/frame/activitiestray.py:625 +#: ../src/jarabe/frame/activitiestray.py:746 +#: ../src/jarabe/frame/activitiestray.py:778 +#: ../src/jarabe/journal/expandedentry.py:159 +#: ../src/jarabe/journal/journaltoolbox.py:480 +#: ../src/jarabe/journal/palettes.py:159 +msgid "Cancel" +msgstr "" + +#: ../extensions/deviceicon/network.py:328 +msgid "Try connection again" +msgstr "" + +#: ../extensions/deviceicon/network.py:331 +#, python-format +msgid "Error: %s" +msgstr "" + +#: ../extensions/deviceicon/network.py:335 +#, python-format +msgid "Suggestion: %s" +msgstr "" + +#: ../extensions/deviceicon/network.py:344 +#, python-format +msgid "Connected for %s" +msgstr "" + +#: ../extensions/deviceicon/network.py:350 +#: ../extensions/deviceicon/network.py:351 +#, python-format +msgid "%d KB" +msgstr "" + +#: ../extensions/deviceicon/network.py:356 +msgid "Check your PIN/PUK configuration." +msgstr "" + +#: ../extensions/deviceicon/network.py:359 +msgid "Check your Access Point Name (APN) configuration" +msgstr "" + +#: ../extensions/deviceicon/network.py:363 +msgid "Check the Number configuration." +msgstr "" + +#: ../extensions/deviceicon/network.py:365 +msgid "Check your configuration." +msgstr "" + +#: ../extensions/deviceicon/network.py:621 +msgid "Mesh Network" +msgstr "" + +#: ../extensions/deviceicon/network.py:668 +#, python-format +msgid "Mesh Network %s" +msgstr "" + +#: ../extensions/deviceicon/network.py:788 +msgid "No GSM connection available." +msgstr "" + +#: ../extensions/deviceicon/network.py:789 +msgid "Create a connection in the control panel." +msgstr "" + +#: ../extensions/deviceicon/speech.py:52 +msgid "Speech" +msgstr "" + +#: ../extensions/deviceicon/speech.py:76 +#: ../extensions/deviceicon/speech.py:150 +#: ../extensions/deviceicon/speech.py:155 +msgid "Say selected text" +msgstr "" + +#: ../extensions/deviceicon/speech.py:83 +msgid "Stop playback" +msgstr "" + +#: ../extensions/deviceicon/speech.py:92 +msgid "Pitch" +msgstr "" + +#: ../extensions/deviceicon/speech.py:107 +msgid "Rate" +msgstr "" + +#: ../extensions/deviceicon/speech.py:145 +msgid "Pause playback" +msgstr "" + +#: ../extensions/deviceicon/speaker.py:61 +msgid "My Speakers" +msgstr "" + +#: ../extensions/deviceicon/speaker.py:136 +msgid "Unmute" +msgstr "" + +#: ../extensions/deviceicon/speaker.py:139 +msgid "Mute" +msgstr "" + +#: ../extensions/deviceicon/touchpad.py:38 +msgid "finger" +msgstr "" + +#: ../extensions/deviceicon/touchpad.py:38 +msgid "stylus" +msgstr "" + +#: ../extensions/deviceicon/touchpad.py:64 +msgid "My touchpad" +msgstr "" + +#: ../extensions/deviceicon/volume.py:72 ../src/jarabe/view/palettes.py:184 +msgid "Show contents" +msgstr "" + +#: ../extensions/globalkey/screenshot.py:61 +msgid "Mesh" +msgstr "" + +#: ../extensions/globalkey/screenshot.py:63 +#: ../src/jarabe/desktop/homewindow.py:221 +#: ../src/jarabe/frame/zoomtoolbar.py:53 +msgid "Group" +msgstr "" + +#: ../extensions/globalkey/screenshot.py:65 +#: ../src/jarabe/desktop/homewindow.py:214 +#: ../src/jarabe/desktop/viewtoolbar.py:73 +#: ../src/jarabe/frame/zoomtoolbar.py:57 +msgid "Home" +msgstr "" + +#: ../extensions/globalkey/screenshot.py:71 +#: ../src/jarabe/frame/zoomtoolbar.py:62 +msgid "Activity" +msgstr "" + +#: ../extensions/globalkey/screenshot.py:74 +msgid "Screenshot" +msgstr "" + +#: ../extensions/globalkey/screenshot.py:76 +#, python-format +msgid "Screenshot of \"%s\"" +msgstr "" + +#: ../data/sugar.schemas.in.h:1 +msgid "" +"\"disabled\" to ask nick on initialization; \"system\" to reuse UNIX account " +"long name." +msgstr "" + +#: ../data/sugar.schemas.in.h:2 +msgid "" +"A unix timestamp (seconds since epoch) of the last successful activity " +"update." +msgstr "" + +#: ../data/sugar.schemas.in.h:3 +msgid "" +"Activity update backend module, followed by a period, followed by the class " +"name." +msgstr "" + +#: ../data/sugar.schemas.in.h:4 +msgid "Activity update backend." +msgstr "" + +#: ../data/sugar.schemas.in.h:6 +msgid "Automatic update frequency." +msgstr "" + +#: ../data/sugar.schemas.in.h:7 +msgid "Backup URL" +msgstr "" + +#: ../data/sugar.schemas.in.h:8 +msgid "Bundle IDs of protected activities" +msgstr "" + +#: ../data/sugar.schemas.in.h:9 +msgid "" +"Color for the XO icon that is used throughout the desktop. The string is " +"composed of the stroke color and fill color, format is that of rgb colors. " +"Example: #AC32FF,#9A5200" +msgstr "" + +#: ../data/sugar.schemas.in.h:10 +msgid "Corner Delay" +msgstr "" + +#: ../data/sugar.schemas.in.h:11 +msgid "Default font face" +msgstr "" + +#: ../data/sugar.schemas.in.h:12 +msgid "Default font size" +msgstr "" + +#: ../data/sugar.schemas.in.h:13 +msgid "Default nick" +msgstr "" + +#: ../data/sugar.schemas.in.h:14 +msgid "Delay for the activation of the frame using the corners." +msgstr "" + +#: ../data/sugar.schemas.in.h:15 +msgid "Delay for the activation of the frame using the edges." +msgstr "" + +#: ../data/sugar.schemas.in.h:16 +msgid "Edge Delay" +msgstr "" + +#: ../data/sugar.schemas.in.h:17 +msgid "" +"Extreme power management (disables wireless radio, increases battery life)" +msgstr "" + +#: ../data/sugar.schemas.in.h:18 +msgid "Favorites Layout" +msgstr "" + +#: ../data/sugar.schemas.in.h:19 +msgid "Favorites resume mode" +msgstr "" + +#: ../data/sugar.schemas.in.h:20 +msgid "Font face that is used throughout the desktop." +msgstr "" + +#: ../data/sugar.schemas.in.h:21 +msgid "Font size that is used throughout the desktop." +msgstr "" + +#: ../data/sugar.schemas.in.h:22 +msgid "" +"Frequency of automatic activity updates, measured in days. 0 means disabled." +msgstr "" + +#: ../data/sugar.schemas.in.h:23 +msgid "GSM network APN (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/sugar.schemas.in.h:24 +msgid "GSM network PIN (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/sugar.schemas.in.h:25 +msgid "GSM network PUK (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/sugar.schemas.in.h:26 +msgid "GSM network access point name configuration (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/sugar.schemas.in.h:27 +msgid "GSM network number (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/sugar.schemas.in.h:28 +msgid "GSM network password (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/sugar.schemas.in.h:29 +msgid "GSM network password configuration (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/sugar.schemas.in.h:30 +msgid "" +"GSM network personal identification number configuration (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/sugar.schemas.in.h:31 +msgid "GSM network personal unlock key configuration (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/sugar.schemas.in.h:32 +msgid "GSM network telephone number configuration (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/sugar.schemas.in.h:33 +msgid "GSM network username (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/sugar.schemas.in.h:34 +msgid "GSM network username configuration (DEPRECATED/UNUSED)" +msgstr "" + +#: ../data/sugar.schemas.in.h:35 +msgid "" +"If TRUE, Sugar will make us searchable for the other users of the Jabber " +"server." +msgstr "" + +#: ../data/sugar.schemas.in.h:36 +msgid "If TRUE, Sugar will show a \"Log out\" option." +msgstr "" + +#: ../data/sugar.schemas.in.h:37 +msgid "If TRUE, Sugar will show a \"Restart\" option." +msgstr "" + +#: ../data/sugar.schemas.in.h:38 +msgid "" +"If TRUE, Sugar will show default Ad-hoc networks for channel 1,6 and 11. If " +"Sugar sees no \"known\" network when it starts, it does autoconnect to an Ad-" +"hoc network." +msgstr "" + +#: ../data/sugar.schemas.in.h:39 +msgid "Jabber Server" +msgstr "" + +#: ../data/sugar.schemas.in.h:40 +msgid "Keyboard layouts" +msgstr "" + +#: ../data/sugar.schemas.in.h:41 +msgid "Keyboard model" +msgstr "" + +#: ../data/sugar.schemas.in.h:42 +msgid "Keyboard options" +msgstr "" + +#: ../data/sugar.schemas.in.h:43 +msgid "Layout of the favorites view." +msgstr "" + +#: ../data/sugar.schemas.in.h:44 +msgid "" +"List of keyboard layouts. Each entry should be in the form layout(variant)" +msgstr "" + +#: ../data/sugar.schemas.in.h:45 +msgid "List of keyboard options." +msgstr "" + +#: ../data/sugar.schemas.in.h:46 +msgid "Microformat update URL." +msgstr "" + +#: ../data/sugar.schemas.in.h:47 +msgid "Pitch value for the speech sugar service" +msgstr "" + +#: ../data/sugar.schemas.in.h:48 +msgid "Pitch value used by the speech service in Sugar" +msgstr "" + +#: ../data/sugar.schemas.in.h:49 +msgid "Power Automatic" +msgstr "" + +#: ../data/sugar.schemas.in.h:50 +msgid "Power Extreme" +msgstr "" + +#: ../data/sugar.schemas.in.h:51 +msgid "Publish to Gadget" +msgstr "" + +#: ../data/sugar.schemas.in.h:52 +msgid "Rate value for the speech sugar service" +msgstr "" + +#: ../data/sugar.schemas.in.h:53 +msgid "Rate value used by the speech service in Sugar" +msgstr "" + +#: ../data/sugar.schemas.in.h:54 +msgid "Setting for muting the sound device." +msgstr "" + +#: ../data/sugar.schemas.in.h:55 +msgid "Show Log out" +msgstr "" + +#: ../data/sugar.schemas.in.h:56 +msgid "Show Restart" +msgstr "" + +#: ../data/sugar.schemas.in.h:57 +msgid "Show Sugar Ad-hoc networks" +msgstr "" + +#: ../data/sugar.schemas.in.h:58 +msgid "Sound Muted" +msgstr "" + +#: ../data/sugar.schemas.in.h:59 +msgid "The keyboard model to be used" +msgstr "" + +#: ../data/sugar.schemas.in.h:60 +msgid "Timestamp of last activity update." +msgstr "" + +#: ../data/sugar.schemas.in.h:62 +msgid "Timezone setting for the system." +msgstr "" + +#: ../data/sugar.schemas.in.h:63 +msgid "URL of the jabber server to use." +msgstr "" + +#: ../data/sugar.schemas.in.h:64 +msgid "" +"URL used by the microformat update backend for activity update information." +msgstr "" + +#: ../data/sugar.schemas.in.h:65 +msgid "URL where the backup is saved to." +msgstr "" + +#: ../data/sugar.schemas.in.h:66 +msgid "User Color" +msgstr "" + +#: ../data/sugar.schemas.in.h:67 +msgid "User Name" +msgstr "" + +#: ../data/sugar.schemas.in.h:68 +msgid "User name that is used throughout the desktop." +msgstr "" + +#: ../data/sugar.schemas.in.h:69 +msgid "" +"Users will not be allowed to erase these activities through the list view." +msgstr "" + +#: ../data/sugar.schemas.in.h:70 +msgid "Volume Level" +msgstr "" + +#: ../data/sugar.schemas.in.h:71 +msgid "Volume level for the sound device." +msgstr "" + +#: ../data/sugar.schemas.in.h:72 +msgid "" +"When in resume mode, clicking on a favorite icon will cause the last entry " +"for that activity to be resumed." +msgstr "" + +#: ../src/jarabe/controlpanel/cmd.py:28 +#, python-format +msgid "" +"sugar-control-panel: WARNING, found more than one option with the same name: " +"%s module: %r" +msgstr "" + +#: ../src/jarabe/controlpanel/cmd.py:30 +#, python-format +msgid "sugar-control-panel: key=%s not an available option" +msgstr "" + +#: ../src/jarabe/controlpanel/cmd.py:31 +#, python-format +msgid "sugar-control-panel: %s" +msgstr "" + +#. TRANS: Translators, there's a empty line at the end of this string, +#. which must appear in the translated string (msgstr) as well. +#: ../src/jarabe/controlpanel/cmd.py:38 +msgid "" +"Usage: sugar-control-panel [ option ] key [ args ... ] \n" +" Control for the sugar environment. \n" +" Options: \n" +" -h show this help message and exit \n" +" -l list all the available options \n" +" -h key show information about this key \n" +" -g key get the current value of the key \n" +" -s key set the current value for the key \n" +" -c key clear the current value for the key \n" +" " +msgstr "" + +#: ../src/jarabe/controlpanel/cmd.py:52 +msgid "To apply your changes you have to restart Sugar.\n" +msgstr "" + +#: ../src/jarabe/controlpanel/gui.py:323 ../src/jarabe/journal/palettes.py:187 +#: ../src/jarabe/journal/palettes.py:350 ../src/jarabe/journal/palettes.py:410 +#: ../src/jarabe/journal/volumestoolbar.py:302 +msgid "Warning" +msgstr "" + +#: ../src/jarabe/controlpanel/gui.py:324 +#: ../src/jarabe/controlpanel/sectionview.py:41 +msgid "Changes require restart" +msgstr "" + +#: ../src/jarabe/controlpanel/gui.py:328 +msgid "Cancel changes" +msgstr "" + +#: ../src/jarabe/controlpanel/gui.py:333 +msgid "Later" +msgstr "" + +#: ../src/jarabe/controlpanel/gui.py:337 +msgid "Restart now" +msgstr "" + +#: ../src/jarabe/controlpanel/toolbar.py:56 +#: ../src/jarabe/desktop/viewtoolbar.py:129 +#: ../src/jarabe/journal/journaltoolbox.py:89 +#, python-format +msgid "Search in %s" +msgstr "" + +#: ../src/jarabe/controlpanel/toolbar.py:56 +msgid "Settings" +msgstr "" + +#: ../src/jarabe/controlpanel/toolbar.py:65 ../src/jarabe/intro/window.py:211 +msgid "Done" +msgstr "" + +#: ../src/jarabe/controlpanel/toolbar.py:127 +#: ../src/jarabe/desktop/favoritesview.py:374 +#: ../src/jarabe/desktop/keydialog.py:105 +msgid "Ok" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:282 +#, python-format +msgid "Version %s" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:385 +#: ../src/jarabe/journal/listview.py:475 ../src/jarabe/journal/iconview.py:299 +msgid "Clear search" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:469 +msgid "No matching activities" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:505 +msgid "Confirm erase" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:507 +#, python-format +msgid "Confirm erase: Do you want to permanently erase %s?" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:511 +#: ../src/jarabe/frame/clipboardmenu.py:65 +#: ../src/jarabe/view/viewsource.py:288 +msgid "Keep" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:514 +#: ../src/jarabe/desktop/activitieslist.py:578 +#: ../src/jarabe/journal/expandedentry.py:153 +#: ../src/jarabe/journal/journaltoolbox.py:443 +#: ../src/jarabe/journal/journaltoolbox.py:475 +#: ../src/jarabe/journal/journaltoolbox.py:689 +#: ../src/jarabe/journal/journaltoolbox.py:695 +#: ../src/jarabe/journal/palettes.py:132 ../src/jarabe/journal/palettes.py:154 +msgid "Erase" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:594 +msgid "Remove favorite" +msgstr "" + +#: ../src/jarabe/desktop/activitieslist.py:598 +msgid "Make favorite" +msgstr "" + +#. TRANS: label for the freeform layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:199 +msgid "Freeform" +msgstr "" + +#. TRANS: label for the ring layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:295 +msgid "Ring" +msgstr "" + +#. TRANS: label for the spiral layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:459 +msgid "Spiral" +msgstr "" + +#. TRANS: label for the box layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:527 +msgid "Box" +msgstr "" + +#. TRANS: label for the box layout in the favorites view +#: ../src/jarabe/desktop/favoriteslayout.py:570 +msgid "Triangle" +msgstr "" + +#: ../src/jarabe/desktop/favoritesview.py:365 +msgid "Registration Failed" +msgstr "" + +#: ../src/jarabe/desktop/favoritesview.py:368 +msgid "Registration Successful" +msgstr "" + +#: ../src/jarabe/desktop/favoritesview.py:369 +msgid "You are now registered with your school server." +msgstr "" + +#: ../src/jarabe/desktop/favoritesview.py:653 +msgid "Register" +msgstr "" + +#: ../src/jarabe/desktop/favoritesview.py:656 +#: ../src/jarabe/desktop/favoritesview.py:672 +msgid "Register again" +msgstr "" + +#: ../src/jarabe/desktop/homewindow.py:228 +#: ../src/jarabe/frame/zoomtoolbar.py:49 +msgid "Neighborhood" +msgstr "" + +#: ../src/jarabe/desktop/keydialog.py:94 +#, python-format +msgid "" +"A wireless encryption key is required for\n" +" the wireless network '%s'." +msgstr "" + +#: ../src/jarabe/desktop/keydialog.py:150 +msgid "Key Type:" +msgstr "" + +#: ../src/jarabe/desktop/keydialog.py:170 +msgid "Authentication Type:" +msgstr "" + +#: ../src/jarabe/desktop/keydialog.py:233 +msgid "WPA & WPA2 Personal" +msgstr "" + +#: ../src/jarabe/desktop/keydialog.py:242 +msgid "Wireless Security:" +msgstr "" + +#. TRANS: Action label for resuming an activity. +#: ../src/jarabe/desktop/meshbox.py:82 +#: ../src/jarabe/journal/journaltoolbox.py:548 +#: ../src/jarabe/journal/palettes.py:77 ../src/jarabe/view/palettes.py:96 +msgid "Resume" +msgstr "" + +#: ../src/jarabe/desktop/meshbox.py:89 +#: ../src/jarabe/frame/activitiestray.py:190 +msgid "Join" +msgstr "" + +#: ../src/jarabe/desktop/networkviews.py:497 +#, python-format +msgid "Ad-hoc Network %d" +msgstr "" + +#: ../src/jarabe/desktop/networkviews.py:639 +#, python-format +msgid "Mesh Network %d" +msgstr "" + +#: ../src/jarabe/desktop/schoolserver.py:144 +msgid "Cannot connect to the server." +msgstr "" + +#: ../src/jarabe/desktop/schoolserver.py:151 +msgid "The server could not complete the request." +msgstr "" + +#: ../src/jarabe/desktop/viewtoolbar.py:95 +msgid "List view" +msgstr "" + +#: ../src/jarabe/desktop/viewtoolbar.py:97 +#: ../src/jarabe/desktop/viewtoolbar.py:195 +#: ../src/jarabe/desktop/viewtoolbar.py:209 +#, python-format +msgid "%d" +msgstr "" + +#: ../src/jarabe/desktop/viewtoolbar.py:208 +#, python-format +msgid "Favorites view %d" +msgstr "" + +#: ../src/jarabe/frame/activitiestray.py:195 +#: ../src/jarabe/frame/activitiestray.py:593 +msgid "Decline" +msgstr "" + +#: ../src/jarabe/frame/activitiestray.py:534 +#, python-format +msgid "%dB" +msgstr "" + +#: ../src/jarabe/frame/activitiestray.py:536 +#, python-format +msgid "%dKB" +msgstr "" + +#: ../src/jarabe/frame/activitiestray.py:538 +#, python-format +msgid "%dMB" +msgstr "" + +#. TRANS: file transfer, bytes transferred, e.g. 128 of 1024 +#: ../src/jarabe/frame/activitiestray.py:556 +#, python-format +msgid "%s of %s" +msgstr "" + +#: ../src/jarabe/frame/activitiestray.py:570 +#, python-format +msgid "Transfer from %s" +msgstr "" + +#: ../src/jarabe/frame/activitiestray.py:585 +msgid "Accept" +msgstr "" + +#: ../src/jarabe/frame/activitiestray.py:653 +#: ../src/jarabe/frame/activitiestray.py:666 +#: ../src/jarabe/frame/activitiestray.py:807 +msgid "Dismiss" +msgstr "" + +#: ../src/jarabe/frame/activitiestray.py:680 +msgid "The other participant canceled the file transfer" +msgstr "" + +#: ../src/jarabe/frame/activitiestray.py:730 +#, python-format +msgid "Transfer to %s" +msgstr "" + +#: ../src/jarabe/frame/clipboardmenu.py:54 +msgctxt "Clipboard" +msgid "Remove" +msgstr "" + +#: ../src/jarabe/frame/clipboardmenu.py:60 +#: ../src/jarabe/frame/clipboardmenu.py:83 +msgid "Open" +msgstr "" + +#: ../src/jarabe/frame/clipboardmenu.py:88 +msgid "Open with" +msgstr "" + +#: ../src/jarabe/frame/clipboardobject.py:50 +#, python-format +msgid "%s clipping" +msgstr "" + +#: ../src/jarabe/frame/zoomtoolbar.py:50 +msgid "F1" +msgstr "" + +#: ../src/jarabe/frame/zoomtoolbar.py:54 +msgid "F2" +msgstr "" + +#: ../src/jarabe/frame/zoomtoolbar.py:58 +msgid "F3" +msgstr "" + +#: ../src/jarabe/frame/zoomtoolbar.py:63 +msgid "F4" +msgstr "" + +#: ../src/jarabe/intro/window.py:106 +msgid "Name:" +msgstr "" + +#: ../src/jarabe/intro/window.py:136 +msgid "Click to change color:" +msgstr "" + +#: ../src/jarabe/intro/window.py:200 ../src/jarabe/journal/detailview.py:95 +msgid "Back" +msgstr "" + +#: ../src/jarabe/intro/window.py:214 +msgid "Next" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:155 +#: ../src/jarabe/journal/journaltoolbox.py:477 +#: ../src/jarabe/journal/palettes.py:156 +#, python-format +msgid "Do you want to permanently erase \"%s\"?" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:296 +#: ../src/jarabe/journal/listmodel.py:159 ../src/jarabe/journal/model.py:721 +#: ../src/jarabe/journal/palettes.py:70 ../src/jarabe/journal/palettes.py:597 +#: ../src/jarabe/journal/volumestoolbar.py:131 +#: ../src/jarabe/journal/iconmodel.py:110 +msgid "Untitled" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:367 +msgid "No preview" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:382 +#, python-format +msgid "Kind: %s" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:382 +#: ../src/jarabe/journal/listmodel.py:165 +#: ../src/jarabe/journal/listmodel.py:173 +msgid "Unknown" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:383 +#, python-format +msgid "Date: %s" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:384 +#, python-format +msgid "Size: %s" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:411 +#: ../src/jarabe/journal/misc.py:109 +msgid "No date" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:420 +msgid "Participants:" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:458 +msgid "Description:" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:464 +msgid "Tags:" +msgstr "" + +#: ../src/jarabe/journal/expandedentry.py:469 +msgid "Comments:" +msgstr "" + +#: ../src/jarabe/journal/journalactivity.py:140 +#: ../src/jarabe/journal/journaltoolbox.py:89 +#: ../src/jarabe/journal/palettes.py:248 +#: ../src/jarabe/journal/volumestoolbar.py:363 +msgid "Journal" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:98 +msgid "Favorite entries" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:134 +msgid "Anytime" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:136 +msgid "Today" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:138 +msgid "Since yesterday" +msgstr "" + +#. TRANS: Filter entries modified during the last 7 days. +#: ../src/jarabe/journal/journaltoolbox.py:140 +msgid "Past week" +msgstr "" + +#. TRANS: Filter entries modified during the last 30 days. +#: ../src/jarabe/journal/journaltoolbox.py:142 +msgid "Past month" +msgstr "" + +#. TRANS: Filter entries modified during the last 356 days. +#: ../src/jarabe/journal/journaltoolbox.py:144 +msgid "Past year" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:151 +msgid "Anyone" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:153 +msgid "My friends" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:154 +msgid "My class" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:327 +msgid "Anything" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:419 +#: ../src/jarabe/journal/palettes.py:99 +msgid "Copy to" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:427 +#: ../src/jarabe/journal/palettes.py:110 ../src/jarabe/view/viewsource.py:282 +msgid "Duplicate" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:433 +msgid "Refresh" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:470 +#: ../src/jarabe/journal/palettes.py:149 ../src/jarabe/journal/palettes.py:360 +#: ../src/jarabe/journal/volumestoolbar.py:310 +#, python-format +msgid "Error while copying the entry. %s" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:471 +#: ../src/jarabe/journal/palettes.py:150 ../src/jarabe/journal/palettes.py:361 +#: ../src/jarabe/journal/volumestoolbar.py:311 +msgid "Error" +msgstr "" + +#. TRANS: Action label for starting an entry. +#: ../src/jarabe/journal/journaltoolbox.py:551 +#: ../src/jarabe/journal/palettes.py:80 +msgid "Start" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:579 +msgid "Sort by date modified" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:580 +msgid "Sort by date created" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:581 +msgid "Sort by size" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:590 +msgid "Sort view" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:661 +msgid "Deselect all" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:674 +msgid "Select all" +msgstr "" + +#: ../src/jarabe/journal/journaltoolbox.py:700 +#, python-format +msgid "Do you want to erase %d entry?" +msgid_plural "Do you want to erase %d entries?" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: ../src/jarabe/journal/journaltoolbox.py:714 +#: ../src/jarabe/journal/palettes.py:364 +msgid "Copy" +msgstr "" + +#. TRANS: Do not translate %(selected)d and %(total)d. +#: ../src/jarabe/journal/journaltoolbox.py:759 +#, python-format +msgid "Selected %(selected)d of %(total)d" +msgstr "" + +#: ../src/jarabe/journal/listview.py:387 ../src/jarabe/journal/iconview.py:211 +msgid "Your Journal is empty" +msgstr "" + +#: ../src/jarabe/journal/listview.py:390 ../src/jarabe/journal/iconview.py:214 +msgid "Your documents folder is empty" +msgstr "" + +#: ../src/jarabe/journal/listview.py:392 ../src/jarabe/journal/iconview.py:216 +msgid "The device is empty" +msgstr "" + +#: ../src/jarabe/journal/listview.py:394 ../src/jarabe/journal/iconview.py:218 +msgid "No matching entries" +msgstr "" + +#: ../src/jarabe/journal/misc.py:252 +#, python-format +msgid "Older Version Of %s Activity" +msgstr "" + +#: ../src/jarabe/journal/misc.py:253 +#, python-format +msgid "Do you want to downgrade to version %s" +msgstr "" + +#: ../src/jarabe/journal/modalalert.py:65 +msgid "Your Journal is full" +msgstr "" + +#: ../src/jarabe/journal/modalalert.py:70 +msgid "Please delete some old Journal entries to make space for new ones." +msgstr "" + +#: ../src/jarabe/journal/modalalert.py:84 +msgid "Show Journal" +msgstr "" + +#: ../src/jarabe/journal/objectchooser.py:170 +msgid "Choose an object" +msgstr "" + +#: ../src/jarabe/journal/objectchooser.py:175 +#, python-format +msgid "Choose an object to open with %s activity" +msgstr "" + +#: ../src/jarabe/journal/objectchooser.py:183 +#: ../src/jarabe/view/viewsource.py:418 +msgid "Close" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:78 +msgid "Resume with" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:81 +msgid "Start with" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:94 ../src/jarabe/journal/palettes.py:489 +msgid "No activity to start entry" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:118 +msgid "Send to" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:127 +msgid "View Details" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:186 +msgid "Entries without a file cannot be sent." +msgstr "" + +#: ../src/jarabe/journal/palettes.py:260 +#: ../src/jarabe/journal/volumestoolbar.py:211 +msgid "Documents" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:349 ../src/jarabe/journal/palettes.py:409 +#: ../src/jarabe/journal/volumestoolbar.py:301 +msgid "Entries without a file cannot be copied." +msgstr "" + +#: ../src/jarabe/journal/palettes.py:369 +#, python-format +msgid "Do you want to copy %d entry?" +msgid_plural "Do you want to copy %d entries?" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: ../src/jarabe/journal/palettes.py:394 +msgid "Clipboard" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:454 +msgid "No friends present" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:459 +msgid "No valid connection found" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:487 +msgid "No activity to resume entry" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:556 ../src/jarabe/view/palettes.py:110 +msgid "Stop" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:561 +msgid "Continue" +msgstr "" + +#: ../src/jarabe/journal/palettes.py:598 +#, python-format +msgid "%(index)d of %(total)d : %(object_title)s" +msgstr "" + +#: ../src/jarabe/journal/volumestoolbar.py:386 +#: ../src/jarabe/view/palettes.py:225 ../src/jarabe/view/palettes.py:292 +#, python-format +msgid "%(free_space)d MB Free" +msgstr "" + +#: ../src/jarabe/model/network.py:214 +msgid "The reason for the device state change is unknown." +msgstr "" + +#: ../src/jarabe/model/network.py:216 +msgid "The state change is normal." +msgstr "" + +#: ../src/jarabe/model/network.py:218 +msgid "The device is now managed." +msgstr "" + +#: ../src/jarabe/model/network.py:220 +msgid "The device is no longer managed." +msgstr "" + +#: ../src/jarabe/model/network.py:222 +msgid "The device could not be readied for configuration." +msgstr "" + +#: ../src/jarabe/model/network.py:224 +msgid "" +"IP configuration could not be reserved (no available address, timeout, etc)." +msgstr "" + +#: ../src/jarabe/model/network.py:227 +msgid "The IP configuration is no longer valid." +msgstr "" + +#: ../src/jarabe/model/network.py:229 +msgid "Secrets were required, but not provided." +msgstr "" + +#: ../src/jarabe/model/network.py:231 +msgid "" +"The 802.1X supplicant disconnected from the access point or authentication " +"server." +msgstr "" + +#: ../src/jarabe/model/network.py:234 +msgid "Configuration of the 802.1X supplicant failed." +msgstr "" + +#: ../src/jarabe/model/network.py:236 +msgid "The 802.1X supplicant quit or failed unexpectedly." +msgstr "" + +#: ../src/jarabe/model/network.py:238 +msgid "The 802.1X supplicant took too long to authenticate." +msgstr "" + +#: ../src/jarabe/model/network.py:240 +msgid "The PPP service failed to start within the allowed time." +msgstr "" + +#: ../src/jarabe/model/network.py:242 +msgid "The PPP service disconnected unexpectedly." +msgstr "" + +#: ../src/jarabe/model/network.py:244 +msgid "The PPP service quit or failed unexpectedly." +msgstr "" + +#: ../src/jarabe/model/network.py:246 +msgid "The DHCP service failed to start within the allowed time." +msgstr "" + +#: ../src/jarabe/model/network.py:248 +msgid "The DHCP service reported an unexpected error." +msgstr "" + +#: ../src/jarabe/model/network.py:250 +msgid "The DHCP service quit or failed unexpectedly." +msgstr "" + +#: ../src/jarabe/model/network.py:252 +msgid "The shared connection service failed to start." +msgstr "" + +#: ../src/jarabe/model/network.py:254 +msgid "The shared connection service quit or failed unexpectedly." +msgstr "" + +#: ../src/jarabe/model/network.py:257 +msgid "The AutoIP service failed to start." +msgstr "" + +#: ../src/jarabe/model/network.py:259 +msgid "The AutoIP service reported an unexpected error." +msgstr "" + +#: ../src/jarabe/model/network.py:261 +msgid "The AutoIP service quit or failed unexpectedly." +msgstr "" + +#: ../src/jarabe/model/network.py:263 +msgid "Dialing failed because the line was busy." +msgstr "" + +#: ../src/jarabe/model/network.py:265 +msgid "Dialing failed because there was no dial tone." +msgstr "" + +#: ../src/jarabe/model/network.py:267 +msgid "Dialing failed because there was no carrier." +msgstr "" + +#: ../src/jarabe/model/network.py:269 +msgid "Dialing timed out." +msgstr "" + +#: ../src/jarabe/model/network.py:271 +msgid "Dialing failed." +msgstr "" + +#: ../src/jarabe/model/network.py:273 +msgid "Modem initialization failed." +msgstr "" + +#: ../src/jarabe/model/network.py:275 +msgid "Failed to select the specified GSM APN" +msgstr "" + +#: ../src/jarabe/model/network.py:277 +msgid "Not searching for networks." +msgstr "" + +#: ../src/jarabe/model/network.py:279 +msgid "Network registration was denied." +msgstr "" + +#: ../src/jarabe/model/network.py:281 +msgid "Network registration timed out." +msgstr "" + +#: ../src/jarabe/model/network.py:283 +msgid "Failed to register with the requested GSM network." +msgstr "" + +#: ../src/jarabe/model/network.py:285 +msgid "PIN check failed." +msgstr "" + +#: ../src/jarabe/model/network.py:287 +msgid "Necessary firmware for the device may be missing." +msgstr "" + +#: ../src/jarabe/model/network.py:289 +msgid "The device was removed." +msgstr "" + +#: ../src/jarabe/model/network.py:291 +msgid "NetworkManager went to sleep." +msgstr "" + +#: ../src/jarabe/model/network.py:293 +msgid "The device's active connection was removed or disappeared." +msgstr "" + +#: ../src/jarabe/model/network.py:296 +msgid "A user or client requested the disconnection." +msgstr "" + +#: ../src/jarabe/model/network.py:298 +msgid "The device's carrier/link changed." +msgstr "" + +#: ../src/jarabe/model/network.py:300 +msgid "The device's existing connection was assumed." +msgstr "" + +#: ../src/jarabe/model/network.py:302 +msgid "The supplicant is now available." +msgstr "" + +#: ../src/jarabe/model/network.py:304 +msgid "The modem could not be found." +msgstr "" + +#: ../src/jarabe/model/network.py:306 +msgid "The Bluetooth connection failed or timed out." +msgstr "" + +#: ../src/jarabe/model/network.py:308 +msgid "Unused." +msgstr "" + +#: ../src/jarabe/view/buddymenu.py:72 +msgid "Remove friend" +msgstr "" + +#: ../src/jarabe/view/buddymenu.py:75 +msgid "Make friend" +msgstr "" + +#: ../src/jarabe/view/buddymenu.py:91 +msgid "Shutdown" +msgstr "" + +#: ../src/jarabe/view/buddymenu.py:98 +msgid "Restart" +msgstr "" + +#: ../src/jarabe/view/buddymenu.py:104 +msgid "Logout" +msgstr "" + +#: ../src/jarabe/view/buddymenu.py:109 +msgid "My Settings" +msgstr "" + +#: ../src/jarabe/view/buddymenu.py:149 +#, python-format +msgid "Invite to %s" +msgstr "" + +#: ../src/jarabe/view/launcher.py:144 +#, python-format +msgid "%s failed to start." +msgstr "" + +#: ../src/jarabe/view/palettes.py:51 +msgid "Starting..." +msgstr "" + +#: ../src/jarabe/view/palettes.py:61 +msgid "Activity failed to start" +msgstr "" + +#. TODO: share-with, keep +#: ../src/jarabe/view/palettes.py:102 +msgid "View Source" +msgstr "" + +#: ../src/jarabe/view/palettes.py:153 +msgid "Start new" +msgstr "" + +#: ../src/jarabe/view/palettes.py:241 +msgctxt "Volume" +msgid "Remove" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:271 +msgid "Instance Source" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:320 +msgid "Source" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:382 +msgid "Activity Bundle Source" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:401 +msgid "Sugar Toolkit Source" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:408 +#, python-format +msgid "View source: %s" +msgstr "" + +#: ../src/jarabe/view/viewsource.py:409 +#, python-format +msgid "View source: %r" +msgstr "" diff --git b/po/sugar.pot a/po/sugar.pot new file mode 100644 index 0000000..3b96607 --- /dev/null +++ a/po/sugar.pot @@ -0,0 +1,1998 @@ +# 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: 2019-03-13 14:29+1100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: extensions/cpsection/aboutcomputer/__init__.py:20 +msgid "About my Computer" +msgstr "" + +#: extensions/cpsection/aboutcomputer/model.py:36 +msgid "Not available" +msgstr "" + +#: extensions/cpsection/aboutcomputer/view.py:76 +msgid "Identity" +msgstr "" + +#: extensions/cpsection/aboutcomputer/view.py:87 +msgid "Model:" +msgstr "" + +#: extensions/cpsection/aboutcomputer/view.py:91 +msgid "Serial Number:" +msgstr "" + +#: extensions/cpsection/aboutcomputer/view.py:103 +msgid "Software" +msgstr "" + +#: extensions/cpsection/aboutcomputer/view.py:112 +msgid "Build:" +msgstr "" + +#: extensions/cpsection/aboutcomputer/view.py:117 +msgid "Sugar:" +msgstr "" + +#: extensions/cpsection/aboutcomputer/view.py:122 +msgid "Firmware:" +msgstr "" + +#: extensions/cpsection/aboutcomputer/view.py:127 +msgid "Wireless Firmware:" +msgstr "" + +#: extensions/cpsection/aboutcomputer/view.py:134 +#, python-format +msgid "%d days ago" +msgstr "" + +#: extensions/cpsection/aboutcomputer/view.py:136 +#: src/jarabe/journal/journaltoolbox.py:178 +msgid "Today" +msgstr "" + +#: extensions/cpsection/aboutcomputer/view.py:139 +msgid "Last system update:" +msgstr "" + +#: extensions/cpsection/aboutcomputer/view.py:150 +msgid "Copyright and License" +msgstr "" + +#. TRANS: The word "Sugar" should not be translated. +#: extensions/cpsection/aboutcomputer/view.py:169 +msgid "" +"Sugar is the graphical user interface that you are looking at. Sugar is free " +"software, covered by the GNU General Public License, and you are welcome to " +"change it and/or distribute copies of it under certain conditions described " +"therein." +msgstr "" + +#: extensions/cpsection/aboutcomputer/view.py:182 +msgid "Full license:" +msgstr "" + +#: extensions/cpsection/aboutme/__init__.py:23 +msgid "About Me" +msgstr "" + +#: extensions/cpsection/aboutme/model.py:50 +msgid "You must enter a name." +msgstr "" + +#: extensions/cpsection/aboutme/model.py:96 +msgid "Error in specified color modifiers." +msgstr "" + +#: extensions/cpsection/aboutme/model.py:99 +msgid "Error in specified colors." +msgstr "" + +#: extensions/cpsection/aboutme/view.py:244 +msgid "Click to change your color:" +msgstr "" + +#: extensions/cpsection/aboutme/view.py:295 src/jarabe/intro/window.py:195 +msgid "Select gender:" +msgstr "" + +#: extensions/cpsection/background/__init__.py:21 +msgid "Background" +msgstr "" + +#: extensions/cpsection/background/view.py:48 +msgid "Select a background:" +msgstr "" + +#: extensions/cpsection/background/view.py:57 +msgid "Clear background" +msgstr "" + +#: extensions/cpsection/backup/backends/volume.py:60 +#: extensions/cpsection/backup/backends/volume.py:170 +msgid "Please connect a device to continue" +msgstr "" + +#: extensions/cpsection/backup/backends/volume.py:68 +#: extensions/cpsection/backup/backends/volume.py:177 +msgid "Select your volume" +msgstr "" + +#: extensions/cpsection/backup/backends/volume.py:77 +msgid "Not enough space in volume" +msgstr "" + +#: extensions/cpsection/backup/backends/volume.py:121 +#, python-format +msgid "Backup from user %s" +msgstr "" + +#: extensions/cpsection/backup/backends/volume.py:190 +msgid "No checkpoints found in the device" +msgstr "" + +#: extensions/cpsection/backup/backends/volume.py:198 +msgid "Select your checkpoint" +msgstr "" + +#: extensions/cpsection/backup/backends/volume.py:209 +msgid "Not enough space in disk" +msgstr "" + +#: extensions/cpsection/backup/backends/volume.py:328 +msgid "Local Device Backup" +msgstr "" + +#: extensions/cpsection/backup/__init__.py:21 +msgid "Backup" +msgstr "" + +#: extensions/cpsection/backup/view.py:132 +msgid "Save the contents of your Journal" +msgstr "" + +#: extensions/cpsection/backup/view.py:140 +msgid "Restore the contents of your Journal" +msgstr "" + +#: extensions/cpsection/backup/view.py:211 +#: extensions/cpsection/backup/view.py:264 src/jarabe/journal/palettes.py:615 +msgid "Continue" +msgstr "" + +#: extensions/cpsection/backup/view.py:222 +msgid "Please close all the activities, and start again" +msgstr "" + +#: extensions/cpsection/backup/view.py:228 +msgid "Select where you want create your backup" +msgstr "" + +#: extensions/cpsection/backup/view.py:230 +msgid "Select where you want retrieve your restore" +msgstr "" + +#: extensions/cpsection/backup/view.py:270 +msgid "Retry" +msgstr "" + +#: extensions/cpsection/backup/view.py:289 +msgid "Starting backup..." +msgstr "" + +#: extensions/cpsection/backup/view.py:293 +msgid "Starting restore..." +msgstr "" + +#: extensions/cpsection/backup/view.py:320 +msgid "" +"I want to restore the content of my Journal. In order to do this, my Journal " +"will first be emptied of all its content; then the restored content will be " +"added." +msgstr "" + +#: extensions/cpsection/backup/view.py:323 +#: src/jarabe/frame/activitiestray.py:657 +msgid "Accept" +msgstr "" + +#: extensions/cpsection/backup/view.py:326 +msgid "Confirm" +msgstr "" + +#: extensions/cpsection/backup/view.py:364 +msgid "Operation started" +msgstr "" + +#: extensions/cpsection/backup/view.py:376 +msgid "Backup finished successfully" +msgstr "" + +#: extensions/cpsection/backup/view.py:378 +msgid "Restore realized successfully." +msgstr "" + +#: extensions/cpsection/datetime/__init__.py:21 +msgid "Date & Time" +msgstr "" + +#: extensions/cpsection/datetime/model.py:99 +msgid "Error: timezone does not exist." +msgstr "" + +#: extensions/cpsection/datetime/view.py:67 +msgid "Timezone" +msgstr "" + +#: extensions/cpsection/frame/__init__.py:21 +msgid "Frame" +msgstr "" + +#: extensions/cpsection/frame/view.py:26 +msgid "never" +msgstr "" + +#: extensions/cpsection/frame/view.py:27 +msgid "instantaneous" +msgstr "" + +#: extensions/cpsection/frame/view.py:28 +#, python-format +msgid "%s seconds" +msgstr "" + +#: extensions/cpsection/frame/view.py:52 +msgid "Activation Delay" +msgstr "" + +#: extensions/cpsection/frame/view.py:68 +msgid "Activation Area" +msgstr "" + +#: extensions/cpsection/frame/view.py:85 +msgid "Corner" +msgstr "" + +#: extensions/cpsection/frame/view.py:104 +msgid "Edge" +msgstr "" + +#: extensions/cpsection/frame/view.py:123 +msgid "Size" +msgstr "" + +#: extensions/cpsection/frame/view.py:221 +msgid "toolbar size" +msgstr "" + +#: extensions/cpsection/frame/view.py:226 +msgid "exact corner or edge" +msgstr "" + +#: extensions/cpsection/frame/view.py:228 +msgid "exact corner" +msgstr "" + +#: extensions/cpsection/frame/view.py:230 +msgid "exact edge" +msgstr "" + +#: extensions/cpsection/frame/view.py:232 +msgid "ignored" +msgstr "" + +#. TRANS: px as in pixels +#: extensions/cpsection/frame/view.py:235 +msgid "{}px" +msgstr "" + +#: extensions/cpsection/keyboard/__init__.py:21 +#: extensions/cpsection/keyboard/view.py:39 +msgid "Keyboard" +msgstr "" + +#: extensions/cpsection/keyboard/view.py:241 +msgid "Keyboard Model" +msgstr "" + +#: extensions/cpsection/keyboard/view.py:302 +msgid "Key(s) to change layout" +msgstr "" + +#: extensions/cpsection/keyboard/view.py:370 +msgid "Keyboard Layout(s)" +msgstr "" + +#: extensions/cpsection/language/__init__.py:21 +#: extensions/cpsection/language/view.py:44 +msgid "Language" +msgstr "" + +#: extensions/cpsection/language/model.py:28 +msgid "Could not access ~/.i18n. Create standard settings." +msgstr "" + +#: extensions/cpsection/language/model.py:150 +#, python-format +msgid "Language for code=%s could not be determined." +msgstr "" + +#: extensions/cpsection/language/model.py:173 +#, python-format +msgid "Sorry I do not speak '%s'." +msgstr "" + +#: extensions/cpsection/language/view.py:81 +msgid "" +"Add languages in the order you prefer. If a translation is not available, " +"the next in the list will be used." +msgstr "" + +#: extensions/cpsection/language/view.py:400 +#, python-format +msgid "Error writing language configuration (%s)" +msgstr "" + +#: extensions/cpsection/modemconfiguration/__init__.py:20 +msgid "Modem" +msgstr "" + +#: extensions/cpsection/modemconfiguration/model.py:161 +#, python-format +msgid "Plan #%s" +msgstr "" + +#: extensions/cpsection/modemconfiguration/model.py:291 +#, python-format +msgid "Provider %s" +msgstr "" + +#: extensions/cpsection/modemconfiguration/view.py:93 +msgid "" +"You will need to provide the following information to set up a mobile " +"broadband connection to a cellular (3G) network." +msgstr "" + +#: extensions/cpsection/modemconfiguration/view.py:116 +msgid "Country:" +msgstr "" + +#: extensions/cpsection/modemconfiguration/view.py:117 +msgid "Provider:" +msgstr "" + +#: extensions/cpsection/modemconfiguration/view.py:118 +msgid "Plan:" +msgstr "" + +#: extensions/cpsection/modemconfiguration/view.py:159 +#: extensions/cpsection/network/view.py:548 +msgid "Username:" +msgstr "" + +#: extensions/cpsection/modemconfiguration/view.py:166 +#: extensions/cpsection/network/view.py:554 +msgid "Password:" +msgstr "" + +#: extensions/cpsection/modemconfiguration/view.py:173 +msgid "Number:" +msgstr "" + +#: extensions/cpsection/modemconfiguration/view.py:180 +msgid "Access Point Name (APN):" +msgstr "" + +#: extensions/cpsection/modemconfiguration/view.py:187 +msgid "Personal Identity Number (PIN):" +msgstr "" + +#: extensions/cpsection/network/__init__.py:20 +#: extensions/cpsection/network/view.py:36 +msgid "Network" +msgstr "" + +#: extensions/cpsection/network/model.py:81 +msgid "State is unknown." +msgstr "" + +#: extensions/cpsection/network/model.py:96 +msgid "Error in specified radio argument. Use on/off." +msgstr "" + +#: extensions/cpsection/network/model.py:133 +msgid "Error in specified argument. Use 0/1." +msgstr "" + +#: extensions/cpsection/network/view.py:321 +msgid "Wireless" +msgstr "" + +#: extensions/cpsection/network/view.py:329 +msgid "The wireless radio may be turned off to save battery life." +msgstr "" + +#: extensions/cpsection/network/view.py:342 +msgid "Radio" +msgstr "" + +#: extensions/cpsection/network/view.py:359 +msgid "" +"Discard wireless connections if you have trouble connecting to the network" +msgstr "" + +#: extensions/cpsection/network/view.py:369 +msgid "Discard wireless connections" +msgstr "" + +#: extensions/cpsection/network/view.py:385 +msgid "Collaboration" +msgstr "" + +#: extensions/cpsection/network/view.py:393 +msgid "" +"The server is the equivalent of what room you are in; people on the same " +"server will be able to see each other, even when they aren't on the same " +"network." +msgstr "" + +#: extensions/cpsection/network/view.py:403 +msgid "Server:" +msgstr "" + +#: extensions/cpsection/network/view.py:419 +msgid "" +"Social Help is a forum that lets you connect with developers and discuss " +"Sugar Activities. Changing servers means discussions will happen in a " +"different place with different people." +msgstr "" + +#: extensions/cpsection/network/view.py:429 +msgid "Social Help Server:" +msgstr "" + +#: extensions/cpsection/network/view.py:458 +msgid "Proxy" +msgstr "" + +#: extensions/cpsection/network/view.py:470 +#: src/jarabe/journal/journaltoolbox.py:604 src/jarabe/journal/palettes.py:183 +#: src/jarabe/journal/palettes.py:404 src/jarabe/journal/volumestoolbar.py:312 +msgid "Error" +msgstr "" + +#: extensions/cpsection/network/view.py:471 +msgid "Proxy settings cannot be verified" +msgstr "" + +#: extensions/cpsection/network/view.py:507 +msgid "Method:" +msgstr "" + +#: extensions/cpsection/network/view.py:514 +msgid "Configuration URL:" +msgstr "" + +#: extensions/cpsection/network/view.py:522 +msgid "" +"Web Proxy Autodiscovery is used when a Configuration URL is not provided. " +"This is not recommended for untrusted public networks." +msgstr "" + +#: extensions/cpsection/network/view.py:534 +msgid "HTTP Proxy:" +msgstr "" + +#: extensions/cpsection/network/view.py:540 +msgid "Use authentication" +msgstr "" + +#: extensions/cpsection/network/view.py:563 +msgid "HTTPS Proxy:" +msgstr "" + +#: extensions/cpsection/network/view.py:572 +msgid "FTP Proxy:" +msgstr "" + +#: extensions/cpsection/network/view.py:581 +msgid "SOCKS Proxy:" +msgstr "" + +#: extensions/cpsection/network/view.py:588 +msgid "Ignore Hosts:" +msgstr "" + +#: extensions/cpsection/network/view.py:645 +msgid "Please Wait!" +msgstr "" + +#: extensions/cpsection/network/view.py:646 +msgid "Proxy settings are being verified." +msgstr "" + +#: extensions/cpsection/network/view.py:663 +msgid "Error!" +msgstr "" + +#: extensions/cpsection/network/view.py:664 +msgid "" +"The following setting(s) seems to be incorrect and may break your internet " +"connection" +msgstr "" + +#: extensions/cpsection/network/view.py:670 +msgid "Break my internet" +msgstr "" + +#: extensions/cpsection/network/view.py:674 +msgid "Reset" +msgstr "" + +#: extensions/cpsection/network/view.py:692 +msgid "Proxy changes require restart" +msgstr "" + +#: extensions/cpsection/power/__init__.py:24 +msgid "Power" +msgstr "" + +#: extensions/cpsection/power/model.py:89 +msgid "Error in automatic pm argument, use on/off." +msgstr "" + +#: extensions/cpsection/power/view.py:45 +msgid "Power management" +msgstr "" + +#: extensions/cpsection/power/view.py:55 +msgid "Automatic power management (increases battery life)" +msgstr "" + +#: extensions/cpsection/updater/__init__.py:21 +msgid "Software Update" +msgstr "" + +#: extensions/cpsection/updater/view.py:70 +msgid "" +"Software updates correct errors, eliminate security vulnerabilities, and " +"provide new features." +msgstr "" + +#: extensions/cpsection/updater/view.py:84 +msgid "Update in progress..." +msgstr "" + +#: extensions/cpsection/updater/view.py:119 +msgid "Checking for updates..." +msgstr "" + +#: extensions/cpsection/updater/view.py:121 +msgid "Installing updates..." +msgstr "" + +#: extensions/cpsection/updater/view.py:150 +#, python-format +msgid "Checking %s..." +msgstr "" + +#: extensions/cpsection/updater/view.py:152 +msgid "Looking for updates..." +msgstr "" + +#: extensions/cpsection/updater/view.py:154 +#, python-format +msgid "Downloading %s..." +msgstr "" + +#: extensions/cpsection/updater/view.py:156 +#, python-format +msgid "Updating %s..." +msgstr "" + +#: extensions/cpsection/updater/view.py:166 +msgid "Your software is up-to-date" +msgstr "" + +#: extensions/cpsection/updater/view.py:168 +#, python-format +msgid "You can install %s update" +msgid_plural "You can install %s updates" +msgstr[0] "" +msgstr[1] "" + +#: extensions/cpsection/updater/view.py:183 +msgid "Can't connect to the activity server" +msgstr "" + +#: extensions/cpsection/updater/view.py:186 +msgid "Verify your connection to internet and try again, or try again later" +msgstr "" + +#: extensions/cpsection/updater/view.py:206 +#, python-format +msgid "%s update was installed" +msgid_plural "%s updates were installed" +msgstr[0] "" +msgstr[1] "" + +#: extensions/cpsection/updater/view.py:288 +msgid "Install selected" +msgstr "" + +#: extensions/cpsection/updater/view.py:307 +#, python-format +msgid "Download size: %s" +msgstr "" + +#: extensions/cpsection/updater/view.py:399 +#, python-format +msgid "From version %(current)s to %(new)s (Size: %(size)s)" +msgstr "" + +#: extensions/cpsection/updater/view.py:406 +#, python-format +msgid "Version %(version)s (Size: %(size)s)" +msgstr "" + +#. TRANS: download size is 0 +#: extensions/cpsection/updater/view.py:423 +msgid "None" +msgstr "" + +#. TRANS: download size of very small updates +#: extensions/cpsection/updater/view.py:426 +msgid "1 KiB" +msgstr "" + +#. TRANS: download size of small updates, e.g. '250 KiB' +#: extensions/cpsection/updater/view.py:429 +#, python-format +msgid "%.0f KiB" +msgstr "" + +#. TRANS: download size of updates, e.g. '2.3 MiB' +#: extensions/cpsection/updater/view.py:432 +#, python-format +msgid "%.1f MiB" +msgstr "" + +#: extensions/cpsection/webaccount/__init__.py:24 +msgid "Web Services" +msgstr "" + +#: extensions/cpsection/webaccount/view.py:65 +#, python-format +msgid "" +"No web services are installed.\n" +"Please visit %s for more details." +msgstr "" + +#: extensions/deviceicon/audio.py:68 +msgid "My Audio" +msgstr "" + +#: extensions/deviceicon/audio.py:330 +msgid "Speaker" +msgstr "" + +#: extensions/deviceicon/audio.py:331 +msgid "Microphone" +msgstr "" + +#: extensions/deviceicon/battery.py:78 +msgid "My Battery" +msgstr "" + +#: extensions/deviceicon/battery.py:161 +msgid "Removed" +msgstr "" + +#: extensions/deviceicon/battery.py:164 +msgid "Charging" +msgstr "" + +#: extensions/deviceicon/battery.py:167 +msgid "Very little power remaining" +msgstr "" + +#. TRANS: do not translate %(hour)d:%(min).2d it is a variable, +#. only translate the word "remaining" +#: extensions/deviceicon/battery.py:174 +#, python-format +msgid "%(hour)d:%(min).2d remaining" +msgstr "" + +#: extensions/deviceicon/battery.py:177 +msgid "Charged" +msgstr "" + +#: extensions/deviceicon/display.py:185 +msgid "My Display" +msgstr "" + +#: extensions/deviceicon/display.py:187 +msgid "Take a screenshot" +msgstr "" + +#: extensions/deviceicon/display.py:209 +msgid "Brightness" +msgstr "" + +#: extensions/deviceicon/display.py:237 +msgid "Display" +msgstr "" + +#: extensions/deviceicon/frame.py:53 +msgid "Show my keyboard" +msgstr "" + +#: extensions/deviceicon/network.py:47 +#, python-format +msgid "IP address: %s" +msgstr "" + +#: extensions/deviceicon/network.py:96 extensions/deviceicon/network.py:311 +#: src/jarabe/desktop/networkviews.py:135 +#: src/jarabe/desktop/networkviews.py:538 +msgid "Disconnect" +msgstr "" + +#: extensions/deviceicon/network.py:122 extensions/deviceicon/network.py:304 +#: src/jarabe/desktop/networkviews.py:275 +#: src/jarabe/desktop/networkviews.py:580 +#: src/jarabe/desktop/networkviews.py:725 +msgid "Connecting..." +msgstr "" + +#: extensions/deviceicon/network.py:126 extensions/deviceicon/network.py:196 +#: src/jarabe/desktop/networkviews.py:282 +#: src/jarabe/desktop/networkviews.py:586 +#: src/jarabe/desktop/networkviews.py:731 +msgid "Connected" +msgstr "" + +#: extensions/deviceicon/network.py:139 +msgid "No wireless connection" +msgstr "" + +#: extensions/deviceicon/network.py:153 extensions/deviceicon/network.py:156 +msgid "Channel" +msgstr "" + +#: extensions/deviceicon/network.py:154 src/jarabe/journal/expandedentry.py:408 +#: src/jarabe/journal/listmodel.py:189 src/jarabe/journal/listmodel.py:197 +msgid "Unknown" +msgstr "" + +#: extensions/deviceicon/network.py:171 +msgid "Wired Network" +msgstr "" + +#: extensions/deviceicon/network.py:199 +msgid "Speed" +msgstr "" + +#: extensions/deviceicon/network.py:223 +msgid "Wireless modem" +msgstr "" + +#: extensions/deviceicon/network.py:292 +msgid "Please wait..." +msgstr "" + +#: extensions/deviceicon/network.py:296 src/jarabe/desktop/networkviews.py:129 +#: src/jarabe/desktop/networkviews.py:532 +#: src/jarabe/desktop/networkviews.py:676 +msgid "Connect" +msgstr "" + +#: extensions/deviceicon/network.py:297 +msgid "Disconnected" +msgstr "" + +#: extensions/deviceicon/network.py:303 src/jarabe/controlpanel/toolbar.py:122 +#: src/jarabe/frame/activitiestray.py:702 +#: src/jarabe/frame/activitiestray.py:824 +#: src/jarabe/frame/activitiestray.py:857 +#: src/jarabe/journal/expandedentry.py:160 +#: src/jarabe/journal/journaltoolbox.py:613 src/jarabe/journal/palettes.py:192 +msgid "Cancel" +msgstr "" + +#: extensions/deviceicon/network.py:341 +msgid "Try connection again" +msgstr "" + +#: extensions/deviceicon/network.py:344 +#, python-format +msgid "Error: %s" +msgstr "" + +#: extensions/deviceicon/network.py:348 +#, python-format +msgid "Suggestion: %s" +msgstr "" + +#: extensions/deviceicon/network.py:358 +#, python-format +msgid "Connected for %s" +msgstr "" + +#: extensions/deviceicon/network.py:361 extensions/deviceicon/network.py:362 +#: src/jarabe/frame/activitiestray.py:607 +#, python-format +msgid "%d KiB" +msgstr "" + +#: extensions/deviceicon/network.py:367 +msgid "Check your PIN/PUK configuration." +msgstr "" + +#: extensions/deviceicon/network.py:370 +msgid "Check your Access Point Name (APN) configuration" +msgstr "" + +#: extensions/deviceicon/network.py:374 +msgid "Check the Number configuration." +msgstr "" + +#: extensions/deviceicon/network.py:376 +msgid "Check your configuration." +msgstr "" + +#: extensions/deviceicon/network.py:633 +msgid "Mesh Network" +msgstr "" + +#: extensions/deviceicon/network.py:679 +#, python-format +msgid "Mesh Network %s" +msgstr "" + +#: extensions/deviceicon/network.py:799 +msgid "No GSM connection available." +msgstr "" + +#: extensions/deviceicon/network.py:800 +msgid "Create a connection in My Settings." +msgstr "" + +#: extensions/deviceicon/speech.py:48 +msgid "Speech" +msgstr "" + +#: extensions/deviceicon/speech.py:71 extensions/deviceicon/speech.py:146 +#: extensions/deviceicon/speech.py:151 +msgid "Say selected text" +msgstr "" + +#: extensions/deviceicon/speech.py:79 +msgid "Stop playback" +msgstr "" + +#: extensions/deviceicon/speech.py:88 +msgid "Pitch" +msgstr "" + +#: extensions/deviceicon/speech.py:103 +msgid "Rate" +msgstr "" + +#: extensions/deviceicon/speech.py:141 +msgid "Pause playback" +msgstr "" + +#: extensions/deviceicon/touchpad.py:35 +msgid "finger" +msgstr "" + +#: extensions/deviceicon/touchpad.py:35 +msgid "stylus" +msgstr "" + +#: extensions/deviceicon/touchpad.py:60 +msgid "My touchpad" +msgstr "" + +#: extensions/deviceicon/volume.py:61 src/jarabe/view/palettes.py:222 +msgid "Show contents" +msgstr "" + +#: src/jarabe/controlpanel/cmd.py:27 +#, python-format +msgid "" +"sugar-control-panel: WARNING, found more than one option with the same name: " +"%(key)s module: %(module)r" +msgstr "" + +#: src/jarabe/controlpanel/cmd.py:30 +#, python-format +msgid "sugar-control-panel: key=%s not an available option" +msgstr "" + +#. TRANS: Translators, there's a empty line at the end of this string, +#. which must appear in the translated string (msgstr) as well. +#: src/jarabe/controlpanel/cmd.py:38 +msgid "" +"Usage: sugar-control-panel [ option ] key [ args ... ] \n" +" Control for the sugar environment. \n" +" Options: \n" +" -h show this help message and exit \n" +" -l list all the available options \n" +" -h key show information about this key \n" +" -g key get the current value of the key \n" +" -s key set the current value for the key \n" +" -c key clear the current value for the key \n" +" " +msgstr "" + +#: src/jarabe/controlpanel/cmd.py:52 +msgid "" +"To apply your changes you have to restart Sugar.\n" +"Hit ctrl+alt+erase on the keyboard to trigger a restart." +msgstr "" + +#: src/jarabe/controlpanel/gui.py:397 src/jarabe/journal/palettes.py:224 +#: src/jarabe/journal/palettes.py:393 src/jarabe/journal/palettes.py:453 +#: src/jarabe/journal/volumestoolbar.py:303 +msgid "Warning" +msgstr "" + +#: src/jarabe/controlpanel/gui.py:403 +msgid "Cancel changes" +msgstr "" + +#: src/jarabe/controlpanel/gui.py:408 +msgid "Later" +msgstr "" + +#: src/jarabe/controlpanel/gui.py:412 +msgid "Restart now" +msgstr "" + +#: src/jarabe/controlpanel/gui.py:441 src/jarabe/view/buddymenu.py:138 +msgid "An activity is not responding." +msgstr "" + +#: src/jarabe/controlpanel/gui.py:442 src/jarabe/view/buddymenu.py:139 +msgid "You may lose unsaved work if you continue." +msgstr "" + +#: src/jarabe/controlpanel/sectionview.py:50 +msgid "Changes require restart" +msgstr "" + +#: src/jarabe/controlpanel/toolbar.py:57 src/jarabe/desktop/viewtoolbar.py:129 +#: src/jarabe/journal/journaltoolbox.py:95 +#, python-format +msgid "Search in %s" +msgstr "" + +#: src/jarabe/controlpanel/toolbar.py:57 +msgid "Settings" +msgstr "" + +#: src/jarabe/controlpanel/toolbar.py:66 src/jarabe/intro/window.py:349 +msgid "Done" +msgstr "" + +#: src/jarabe/controlpanel/toolbar.py:128 +msgid "Ok" +msgstr "" + +#: src/jarabe/desktop/activitieslist.py:413 +#, python-format +msgid "Version %s" +msgstr "" + +#: src/jarabe/desktop/activitieslist.py:498 src/jarabe/journal/iconview.py:300 +#: src/jarabe/journal/listview.py:610 +msgid "Clear search" +msgstr "" + +#: src/jarabe/desktop/activitieslist.py:585 +msgid "No matching activities" +msgstr "" + +#: src/jarabe/desktop/activitieslist.py:621 +msgid "Confirm erase" +msgstr "" + +#: src/jarabe/desktop/activitieslist.py:623 +#, python-format +msgid "Confirm erase: Do you want to permanently erase %s?" +msgstr "" + +#: src/jarabe/desktop/activitieslist.py:627 +#: src/jarabe/frame/clipboardmenu.py:64 src/jarabe/view/viewsource.py:386 +msgid "Keep" +msgstr "" + +#: src/jarabe/desktop/activitieslist.py:630 +#: src/jarabe/desktop/activitieslist.py:700 +#: src/jarabe/journal/expandedentry.py:154 +#: src/jarabe/journal/journaltoolbox.py:571 +#: src/jarabe/journal/journaltoolbox.py:608 +#: src/jarabe/journal/journaltoolbox.py:838 +#: src/jarabe/journal/journaltoolbox.py:844 src/jarabe/journal/palettes.py:155 +#: src/jarabe/journal/palettes.py:187 +msgid "Erase" +msgstr "" + +#: src/jarabe/desktop/activitieslist.py:716 +msgid "Remove favorite" +msgstr "" + +#: src/jarabe/desktop/activitieslist.py:720 +msgid "Make favorite" +msgstr "" + +#. TRANS: label for the freeform layout in the favorites view +#: src/jarabe/desktop/favoriteslayout.py:211 +msgid "Freeform" +msgstr "" + +#. TRANS: label for the ring layout in the favorites view +#: src/jarabe/desktop/favoriteslayout.py:305 +msgid "Ring" +msgstr "" + +#. TRANS: label for the spiral layout in the favorites view +#: src/jarabe/desktop/favoriteslayout.py:471 +msgid "Spiral" +msgstr "" + +#. TRANS: label for the box layout in the favorites view +#: src/jarabe/desktop/favoriteslayout.py:539 +msgid "Box" +msgstr "" + +#. TRANS: label for the box layout in the favorites view +#: src/jarabe/desktop/favoriteslayout.py:585 +msgid "Triangle" +msgstr "" + +#: src/jarabe/desktop/favoritesview.py:381 +msgid "Registration" +msgstr "" + +#: src/jarabe/desktop/favoritesview.py:382 +msgid "Please wait, searching for your school server." +msgstr "" + +#: src/jarabe/desktop/favoritesview.py:392 +msgid "Registration Failed" +msgstr "" + +#: src/jarabe/desktop/favoritesview.py:395 +msgid "Registration Successful" +msgstr "" + +#: src/jarabe/desktop/favoritesview.py:396 +msgid "You are now registered with your school server." +msgstr "" + +#: src/jarabe/desktop/favoritesview.py:688 +msgid "Register" +msgstr "" + +#: src/jarabe/desktop/favoritesview.py:690 +msgid "Register again" +msgstr "" + +#: src/jarabe/desktop/homewindow.py:277 src/jarabe/desktop/viewtoolbar.py:73 +#: src/jarabe/frame/zoomtoolbar.py:56 src/jarabe/model/screenshot.py:62 +#: src/jarabe/view/viewhelp.py:89 +msgid "Home" +msgstr "" + +#: src/jarabe/desktop/homewindow.py:283 src/jarabe/frame/zoomtoolbar.py:52 +#: src/jarabe/model/screenshot.py:60 src/jarabe/view/viewhelp.py:86 +msgid "Group" +msgstr "" + +#: src/jarabe/desktop/homewindow.py:289 src/jarabe/frame/zoomtoolbar.py:48 +msgid "Neighborhood" +msgstr "" + +#: src/jarabe/desktop/keydialog.py:93 +#, python-format +msgid "" +"A wireless encryption key is required for\n" +" the wireless network '%s'." +msgstr "" + +#: src/jarabe/desktop/keydialog.py:109 +msgid "Show Password" +msgstr "" + +#: src/jarabe/desktop/keydialog.py:153 +msgid "Key Type:" +msgstr "" + +#: src/jarabe/desktop/keydialog.py:173 +msgid "Authentication Type:" +msgstr "" + +#: src/jarabe/desktop/keydialog.py:237 +msgid "WPA & WPA2 Personal" +msgstr "" + +#: src/jarabe/desktop/keydialog.py:246 +msgid "Wireless Security:" +msgstr "" + +#. TRANS: Action label for resuming an activity. +#: src/jarabe/desktop/meshbox.py:82 src/jarabe/journal/journaltoolbox.py:685 +#: src/jarabe/journal/palettes.py:87 src/jarabe/view/palettes.py:100 +msgid "Resume" +msgstr "" + +#: src/jarabe/desktop/meshbox.py:89 src/jarabe/frame/activitiestray.py:208 +msgid "Join" +msgstr "" + +#: src/jarabe/desktop/networkviews.py:142 +msgid "Forget" +msgstr "" + +#: src/jarabe/desktop/networkviews.py:527 +#, python-format +msgid "Ad-hoc Network %d" +msgstr "" + +#: src/jarabe/desktop/networkviews.py:672 +#, python-format +msgid "Mesh Network %d" +msgstr "" + +#: src/jarabe/desktop/schoolserver.py:143 +msgid "Cannot connect to the server." +msgstr "" + +#: src/jarabe/desktop/schoolserver.py:150 +msgid "The server could not complete the request." +msgstr "" + +#: src/jarabe/desktop/viewtoolbar.py:95 +msgid "List view" +msgstr "" + +#: src/jarabe/desktop/viewtoolbar.py:97 src/jarabe/desktop/viewtoolbar.py:196 +#: src/jarabe/desktop/viewtoolbar.py:210 +#, python-format +msgid "%d" +msgstr "" + +#: src/jarabe/frame/activitiestray.py:213 +#: src/jarabe/frame/activitiestray.py:666 +msgid "Decline" +msgstr "" + +#: src/jarabe/frame/activitiestray.py:605 +#, python-format +msgid "%d B" +msgstr "" + +#: src/jarabe/frame/activitiestray.py:609 +#, python-format +msgid "%d MiB" +msgstr "" + +#. TRANS: file transfer, bytes transferred, e.g. 128 of 1024 +#: src/jarabe/frame/activitiestray.py:628 +#, python-format +msgid "%(transferred)s of %(total)s" +msgstr "" + +#: src/jarabe/frame/activitiestray.py:643 +#, python-format +msgid "Transfer from %s" +msgstr "" + +#: src/jarabe/frame/activitiestray.py:731 +#: src/jarabe/frame/activitiestray.py:745 +#: src/jarabe/frame/activitiestray.py:887 +msgid "Dismiss" +msgstr "" + +#: src/jarabe/frame/activitiestray.py:759 +msgid "The other participant canceled the file transfer" +msgstr "" + +#: src/jarabe/frame/activitiestray.py:809 +#, python-format +msgid "Transfer to %s" +msgstr "" + +#: src/jarabe/frame/clipboardmenu.py:59 src/jarabe/frame/clipboardmenu.py:82 +#: src/jarabe/journal/palettes.py:104 +msgid "Open" +msgstr "" + +#: src/jarabe/frame/clipboardmenu.py:87 +msgid "Open with" +msgstr "" + +#: src/jarabe/frame/clipboardobject.py:49 +#, python-format +msgid "%s clipping" +msgstr "" + +#: src/jarabe/frame/notification.py:62 +msgid "Clear notifications" +msgstr "" + +#: src/jarabe/frame/zoomtoolbar.py:49 +msgid "F1" +msgstr "" + +#: src/jarabe/frame/zoomtoolbar.py:53 +msgid "F2" +msgstr "" + +#: src/jarabe/frame/zoomtoolbar.py:57 +msgid "F3" +msgstr "" + +#: src/jarabe/frame/zoomtoolbar.py:61 src/jarabe/model/screenshot.py:68 +msgid "Activity" +msgstr "" + +#: src/jarabe/frame/zoomtoolbar.py:62 +msgid "F4" +msgstr "" + +#: src/jarabe/intro/agepicker.py:38 +msgid "Select grade:" +msgstr "" + +#: src/jarabe/intro/agepicker.py:39 +msgid "Preschool" +msgstr "" + +#: src/jarabe/intro/agepicker.py:39 +msgid "Kindergarten" +msgstr "" + +#: src/jarabe/intro/agepicker.py:39 +msgid "1st Grade" +msgstr "" + +#: src/jarabe/intro/agepicker.py:40 +msgid "2nd Grade" +msgstr "" + +#: src/jarabe/intro/agepicker.py:40 +msgid "3rd Grade" +msgstr "" + +#: src/jarabe/intro/agepicker.py:40 +msgid "4th Grade" +msgstr "" + +#: src/jarabe/intro/agepicker.py:41 +msgid "5th Grade" +msgstr "" + +#: src/jarabe/intro/agepicker.py:41 +msgid "6th Grade" +msgstr "" + +#: src/jarabe/intro/agepicker.py:41 +msgid "7th Grade" +msgstr "" + +#: src/jarabe/intro/agepicker.py:42 +msgid "High School" +msgstr "" + +#: src/jarabe/intro/agepicker.py:42 +msgid "Adult" +msgstr "" + +#: src/jarabe/intro/window.py:125 +msgid "Name:" +msgstr "" + +#: src/jarabe/intro/window.py:165 +msgid "Click to change color:" +msgstr "" + +#: src/jarabe/intro/window.py:337 src/jarabe/journal/detailview.py:95 +#: src/jarabe/view/viewhelp.py:305 +msgid "Back" +msgstr "" + +#: src/jarabe/intro/window.py:352 +msgid "Next" +msgstr "" + +#: src/jarabe/journal/expandedentry.py:156 +#: src/jarabe/journal/journaltoolbox.py:610 src/jarabe/journal/palettes.py:189 +#, python-format +msgid "Do you want to permanently erase \"%s\"?" +msgstr "" + +#: src/jarabe/journal/expandedentry.py:332 src/jarabe/journal/iconmodel.py:109 +#: src/jarabe/journal/listmodel.py:183 src/jarabe/journal/model.py:797 +#: src/jarabe/journal/palettes.py:76 src/jarabe/journal/palettes.py:644 +#: src/jarabe/journal/volumestoolbar.py:133 +msgid "Untitled" +msgstr "" + +#: src/jarabe/journal/expandedentry.py:388 +msgid "No preview" +msgstr "" + +#: src/jarabe/journal/expandedentry.py:408 +#, python-format +msgid "Kind: %s" +msgstr "" + +#: src/jarabe/journal/expandedentry.py:409 +#, python-format +msgid "Date: %s" +msgstr "" + +#: src/jarabe/journal/expandedentry.py:410 +#, python-format +msgid "Size: %s" +msgstr "" + +#: src/jarabe/journal/expandedentry.py:434 src/jarabe/journal/misc.py:139 +msgid "No date" +msgstr "" + +#: src/jarabe/journal/expandedentry.py:443 +msgid "Participants:" +msgstr "" + +#: src/jarabe/journal/expandedentry.py:481 +#: src/jarabe/journal/projectview.py:110 +msgid "Description:" +msgstr "" + +#: src/jarabe/journal/expandedentry.py:487 +msgid "Tags:" +msgstr "" + +#: src/jarabe/journal/expandedentry.py:492 +msgid "Comments:" +msgstr "" + +#: src/jarabe/journal/iconview.py:211 src/jarabe/journal/listview.py:512 +msgid "Your Journal is empty" +msgstr "" + +#: src/jarabe/journal/iconview.py:214 src/jarabe/journal/listview.py:515 +msgid "Your documents folder is empty" +msgstr "" + +#: src/jarabe/journal/iconview.py:216 src/jarabe/journal/listview.py:517 +msgid "The device is empty" +msgstr "" + +#: src/jarabe/journal/iconview.py:219 src/jarabe/journal/listview.py:519 +msgid "No matching entries" +msgstr "" + +#: src/jarabe/journal/journalactivity.py:197 +#: src/jarabe/journal/journaltoolbox.py:95 +#: src/jarabe/journal/journalwindow.py:32 src/jarabe/journal/palettes.py:289 +#: src/jarabe/journal/volumestoolbar.py:350 src/jarabe/view/viewhelp.py:92 +msgid "Journal" +msgstr "" + +#: src/jarabe/journal/journalactivity.py:285 +msgid "Add new project" +msgstr "" + +#: src/jarabe/journal/journalactivity.py:364 +#, python-format +msgid "Choose an activity to start '%s' with" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:104 +msgid "Favorite entries" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:111 +msgid "Projects" +msgstr "" + +#. TRANS: Item on a palette that filters by entry type. +#: src/jarabe/journal/journaltoolbox.py:121 +#: src/jarabe/journal/journaltoolbox.py:415 +#: src/jarabe/journal/journaltoolbox.py:500 +msgid "Anything" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:127 +#: src/jarabe/journal/journaltoolbox.py:174 +#: src/jarabe/journal/journaltoolbox.py:504 +msgid "Anytime" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:181 +msgid "Since yesterday" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:184 +msgid "Past week" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:187 +msgid "Past month" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:190 +msgid "Past year" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:547 src/jarabe/journal/palettes.py:116 +msgid "Copy to" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:555 src/jarabe/journal/palettes.py:133 +#: src/jarabe/view/viewsource.py:382 +msgid "Duplicate" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:561 +msgid "Refresh" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:603 src/jarabe/journal/palettes.py:182 +#: src/jarabe/journal/palettes.py:403 src/jarabe/journal/volumestoolbar.py:311 +#, python-format +msgid "Error while copying the entry. %s" +msgstr "" + +#. TRANS: Action label for starting an entry. +#: src/jarabe/journal/journaltoolbox.py:688 src/jarabe/journal/palettes.py:90 +msgid "Start" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:708 src/jarabe/journal/palettes.py:111 +#: src/jarabe/journal/palettes.py:542 +msgid "No activity to start entry" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:726 +msgid "Sort view" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:737 +msgid "Sort by date modified" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:738 +msgid "Sort by date created" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:739 +msgid "Sort by size" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:810 +msgid "Deselect all" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:823 +msgid "Select all" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:849 +#, python-format +msgid "Do you want to erase %d entry?" +msgid_plural "Do you want to erase %d entries?" +msgstr[0] "" +msgstr[1] "" + +#: src/jarabe/journal/journaltoolbox.py:863 src/jarabe/journal/palettes.py:407 +msgid "Copy" +msgstr "" + +#. TRANS: Do not translate %(selected)d and %(total)d. +#: src/jarabe/journal/journaltoolbox.py:914 +#, python-format +msgid "Selected %(selected)d of %(total)d" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:949 +msgid "Select filter" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:1105 +msgid "Add New" +msgstr "" + +#: src/jarabe/journal/journaltoolbox.py:1112 +msgid "Add new entry" +msgstr "" + +#: src/jarabe/journal/listview.py:507 +msgid "Your project is empty" +msgstr "" + +#: src/jarabe/journal/listview.py:521 +msgid "No Projects" +msgstr "" + +#: src/jarabe/journal/misc.py:321 +#, python-format +msgid "Older Version Of %s Activity" +msgstr "" + +#: src/jarabe/journal/misc.py:322 +#, python-format +msgid "Do you want to downgrade to version %s?" +msgstr "" + +#: src/jarabe/journal/modalalert.py:62 +msgid "Your Journal is full" +msgstr "" + +#: src/jarabe/journal/modalalert.py:67 +msgid "Please delete some old Journal entries to make space for new ones." +msgstr "" + +#: src/jarabe/journal/modalalert.py:81 +msgid "Show Journal" +msgstr "" + +#: src/jarabe/journal/objectchooser.py:170 +msgid "Choose an object" +msgstr "" + +#: src/jarabe/journal/objectchooser.py:175 +#, python-format +msgid "Choose an object to open with %s activity" +msgstr "" + +#: src/jarabe/journal/objectchooser.py:183 src/jarabe/view/viewhelp.py:324 +#: src/jarabe/view/viewsource.py:582 +msgid "Close" +msgstr "" + +#: src/jarabe/journal/palettes.py:88 +msgid "Resume with" +msgstr "" + +#: src/jarabe/journal/palettes.py:91 +msgid "Start with" +msgstr "" + +#: src/jarabe/journal/palettes.py:127 +msgid "Send to project..." +msgstr "" + +#: src/jarabe/journal/palettes.py:141 +msgid "Send to" +msgstr "" + +#: src/jarabe/journal/palettes.py:150 +msgid "View Details" +msgstr "" + +#: src/jarabe/journal/palettes.py:223 +msgid "Entries without a file cannot be sent." +msgstr "" + +#: src/jarabe/journal/palettes.py:301 src/jarabe/journal/volumestoolbar.py:213 +msgid "Documents" +msgstr "" + +#: src/jarabe/journal/palettes.py:392 src/jarabe/journal/palettes.py:452 +#: src/jarabe/journal/volumestoolbar.py:302 +msgid "Entries without a file cannot be copied." +msgstr "" + +#: src/jarabe/journal/palettes.py:412 +#, python-format +msgid "Do you want to copy %d entry?" +msgid_plural "Do you want to copy %d entries?" +msgstr[0] "" +msgstr[1] "" + +#: src/jarabe/journal/palettes.py:437 +msgid "Clipboard" +msgstr "" + +#: src/jarabe/journal/palettes.py:507 +msgid "No friends present" +msgstr "" + +#: src/jarabe/journal/palettes.py:512 +msgid "No valid connection found" +msgstr "" + +#: src/jarabe/journal/palettes.py:540 +msgid "No activity to resume entry" +msgstr "" + +#: src/jarabe/journal/palettes.py:610 src/jarabe/view/palettes.py:135 +msgid "Stop" +msgstr "" + +#: src/jarabe/journal/palettes.py:645 +#, python-format +msgid "%(index)d of %(total)d : %(object_title)s" +msgstr "" + +#: src/jarabe/journal/volumestoolbar.py:376 src/jarabe/view/palettes.py:263 +#: src/jarabe/view/palettes.py:330 +#, python-format +msgid "%(free_space)d MiB Free" +msgstr "" + +#: src/jarabe/model/desktop.py:84 +#, python-format +msgid "Favorites view %d" +msgstr "" + +#: src/jarabe/model/network.py:216 +msgid "The reason for the device state change is unknown." +msgstr "" + +#: src/jarabe/model/network.py:218 +msgid "The state change is normal." +msgstr "" + +#: src/jarabe/model/network.py:220 +msgid "The device is now managed." +msgstr "" + +#: src/jarabe/model/network.py:222 +msgid "The device is no longer managed." +msgstr "" + +#: src/jarabe/model/network.py:224 +msgid "The device could not be readied for configuration." +msgstr "" + +#: src/jarabe/model/network.py:226 +msgid "" +"IP configuration could not be reserved (no available address, timeout, etc)." +msgstr "" + +#: src/jarabe/model/network.py:229 +msgid "The IP configuration is no longer valid." +msgstr "" + +#: src/jarabe/model/network.py:231 +msgid "Secrets were required, but not provided." +msgstr "" + +#: src/jarabe/model/network.py:233 +msgid "" +"The 802.1X supplicant disconnected from the access point or authentication " +"server." +msgstr "" + +#: src/jarabe/model/network.py:236 +msgid "Configuration of the 802.1X supplicant failed." +msgstr "" + +#: src/jarabe/model/network.py:238 +msgid "The 802.1X supplicant quit or failed unexpectedly." +msgstr "" + +#: src/jarabe/model/network.py:240 +msgid "The 802.1X supplicant took too long to authenticate." +msgstr "" + +#: src/jarabe/model/network.py:242 +msgid "The PPP service failed to start within the allowed time." +msgstr "" + +#: src/jarabe/model/network.py:244 +msgid "The PPP service disconnected unexpectedly." +msgstr "" + +#: src/jarabe/model/network.py:246 +msgid "The PPP service quit or failed unexpectedly." +msgstr "" + +#: src/jarabe/model/network.py:248 +msgid "The DHCP service failed to start within the allowed time." +msgstr "" + +#: src/jarabe/model/network.py:250 +msgid "The DHCP service reported an unexpected error." +msgstr "" + +#: src/jarabe/model/network.py:252 +msgid "The DHCP service quit or failed unexpectedly." +msgstr "" + +#: src/jarabe/model/network.py:254 +msgid "The shared connection service failed to start." +msgstr "" + +#: src/jarabe/model/network.py:256 +msgid "The shared connection service quit or failed unexpectedly." +msgstr "" + +#: src/jarabe/model/network.py:259 +msgid "The AutoIP service failed to start." +msgstr "" + +#: src/jarabe/model/network.py:261 +msgid "The AutoIP service reported an unexpected error." +msgstr "" + +#: src/jarabe/model/network.py:263 +msgid "The AutoIP service quit or failed unexpectedly." +msgstr "" + +#: src/jarabe/model/network.py:265 +msgid "Dialing failed because the line was busy." +msgstr "" + +#: src/jarabe/model/network.py:267 +msgid "Dialing failed because there was no dial tone." +msgstr "" + +#: src/jarabe/model/network.py:269 +msgid "Dialing failed because there was no carrier." +msgstr "" + +#: src/jarabe/model/network.py:271 +msgid "Dialing timed out." +msgstr "" + +#: src/jarabe/model/network.py:273 +msgid "Dialing failed." +msgstr "" + +#: src/jarabe/model/network.py:275 +msgid "Modem initialization failed." +msgstr "" + +#: src/jarabe/model/network.py:277 +msgid "Failed to select the specified GSM APN" +msgstr "" + +#: src/jarabe/model/network.py:279 +msgid "Not searching for networks." +msgstr "" + +#: src/jarabe/model/network.py:281 +msgid "Network registration was denied." +msgstr "" + +#: src/jarabe/model/network.py:283 +msgid "Network registration timed out." +msgstr "" + +#: src/jarabe/model/network.py:285 +msgid "Failed to register with the requested GSM network." +msgstr "" + +#: src/jarabe/model/network.py:287 +msgid "PIN check failed." +msgstr "" + +#: src/jarabe/model/network.py:289 +msgid "Necessary firmware for the device may be missing." +msgstr "" + +#: src/jarabe/model/network.py:291 +msgid "The device was removed." +msgstr "" + +#: src/jarabe/model/network.py:293 +msgid "NetworkManager went to sleep." +msgstr "" + +#: src/jarabe/model/network.py:295 +msgid "The device's active connection was removed or disappeared." +msgstr "" + +#: src/jarabe/model/network.py:298 +msgid "A user or client requested the disconnection." +msgstr "" + +#: src/jarabe/model/network.py:300 +msgid "The device's carrier/link changed." +msgstr "" + +#: src/jarabe/model/network.py:302 +msgid "The device's existing connection was assumed." +msgstr "" + +#: src/jarabe/model/network.py:304 +msgid "The supplicant is now available." +msgstr "" + +#: src/jarabe/model/network.py:306 +msgid "The modem could not be found." +msgstr "" + +#: src/jarabe/model/network.py:308 +msgid "The Bluetooth connection failed or timed out." +msgstr "" + +#: src/jarabe/model/network.py:310 +msgid "Unused." +msgstr "" + +#: src/jarabe/model/screenshot.py:58 src/jarabe/view/viewhelp.py:83 +msgid "Mesh" +msgstr "" + +#: src/jarabe/model/screenshot.py:71 +msgid "Screenshot" +msgstr "" + +#: src/jarabe/model/screenshot.py:73 +#, python-format +msgid "Screenshot of \"%s\"" +msgstr "" + +#: src/jarabe/view/alerts.py:37 src/jarabe/view/alerts.py:47 +msgid "Activity launcher" +msgstr "" + +#: src/jarabe/view/alerts.py:38 +#, python-format +msgid "" +"%(activity)s is already running. Please stop %(activity)s before launching " +"it again." +msgstr "" + +#: src/jarabe/view/alerts.py:48 +msgid "" +"The maximum number of open activities has been reached. Please close an " +"activity before launching a new one." +msgstr "" + +#: src/jarabe/view/buddymenu.py:74 +msgid "Remove friend" +msgstr "" + +#: src/jarabe/view/buddymenu.py:77 +msgid "Make friend" +msgstr "" + +#: src/jarabe/view/buddymenu.py:109 +msgid "Shutdown" +msgstr "" + +#: src/jarabe/view/buddymenu.py:114 +msgid "Restart" +msgstr "" + +#: src/jarabe/view/buddymenu.py:120 +msgid "Logout" +msgstr "" + +#: src/jarabe/view/buddymenu.py:125 +msgid "My Settings" +msgstr "" + +#: src/jarabe/view/buddymenu.py:188 +#, python-format +msgid "Invite to %s" +msgstr "" + +#: src/jarabe/view/launcher.py:158 +#, python-format +msgid "%s failed to start." +msgstr "" + +#: src/jarabe/view/palettes.py:55 +msgid "Starting..." +msgstr "" + +#: src/jarabe/view/palettes.py:65 +msgid "Activity failed to start" +msgstr "" + +#: src/jarabe/view/palettes.py:107 +msgid "View Source" +msgstr "" + +#: src/jarabe/view/palettes.py:114 +msgid "View Help" +msgstr "" + +#: src/jarabe/view/palettes.py:190 +msgid "Start new" +msgstr "" + +#: src/jarabe/view/viewhelp.py:282 +msgid "Help Manual" +msgstr "" + +#: src/jarabe/view/viewhelp.py:296 +msgid "Social Help" +msgstr "" + +#: src/jarabe/view/viewhelp.py:310 +msgid "Forward" +msgstr "" + +#: src/jarabe/view/viewhelp.py:315 +#, python-format +msgid "Help: %s" +msgstr "" + +#: src/jarabe/view/viewsource.py:367 +msgid "Instance Source" +msgstr "" + +#: src/jarabe/view/viewsource.py:395 +#, python-format +msgid "Do you want to duplicate %s Activity?" +msgstr "" + +#: src/jarabe/view/viewsource.py:397 +msgid "This may take a few minutes" +msgstr "" + +#: src/jarabe/view/viewsource.py:411 +msgid "Duplicating activity..." +msgstr "" + +#: src/jarabe/view/viewsource.py:450 +msgid "Duplicated" +msgstr "" + +#: src/jarabe/view/viewsource.py:451 +msgid "The activity has been duplicated" +msgstr "" + +#: src/jarabe/view/viewsource.py:465 +msgid "Duplicated activity already exists" +msgstr "" + +#: src/jarabe/view/viewsource.py:466 +msgid "Delete your copy before trying to duplicate the activity again" +msgstr "" + +#: src/jarabe/view/viewsource.py:481 +msgid "Source" +msgstr "" + +#: src/jarabe/view/viewsource.py:545 +msgid "Activity Bundle Source" +msgstr "" + +#: src/jarabe/view/viewsource.py:564 +msgid "Sugar Toolkit Source" +msgstr "" + +#: src/jarabe/view/viewsource.py:571 +#, python-format +msgid "View source: %s" +msgstr "" + +#: src/jarabe/view/viewsource.py:572 +#, python-format +msgid "View source: %r" +msgstr "" + +#: src/jarabe/view/viewsource.py:813 +msgid "Please select a file in the left panel." +msgstr "" diff --git b/src/jarabe/.gitignore a/src/jarabe/.gitignore new file mode 100644 index 0000000..4acd06b --- /dev/null +++ a/src/jarabe/.gitignore @@ -0,0 +1 @@ +config.py diff --git b/src/jarabe/desktop/favoriteslayout.py a/src/jarabe/desktop/favoriteslayout.py index 2d3e998..aaaf513 100644 --- b/src/jarabe/desktop/favoriteslayout.py +++ a/src/jarabe/desktop/favoriteslayout.py @@ -247,7 +247,7 @@ class RandomLayout(SpreadLayout): x = min(x, allocation.width - child_requisition.width) y = min(y, allocation.height - child_requisition.height) elif hasattr(child, 'get_bundle_id'): - name_hash = hashlib.md5(child.get_bundle_id().decode()) + name_hash = hashlib.md5(child.get_bundle_id().encode('utf-8')) x = int(name_hash.hexdigest()[:5], 16) % \ (allocation.width - child_requisition.width) y = int(name_hash.hexdigest()[-5:], 16) % \ diff --git b/src/jarabe/desktop/meshbox.py a/src/jarabe/desktop/meshbox.py index da0a775..0127492 100644 --- b/src/jarabe/desktop/meshbox.py +++ a/src/jarabe/desktop/meshbox.py @@ -486,7 +486,7 @@ class MeshBox(ViewContainer): # if we have mesh hardware, ignore OLPC mesh networks that appear as # normal wifi networks if len(self._mesh) > 0 and ap.mode == network.NM_802_11_MODE_ADHOC \ - and ap.ssid == 'olpc-mesh': + and ap.ssid == b'olpc-mesh': logging.debug('ignoring OLPC mesh IBSS') ap.disconnect() return diff --git b/src/jarabe/desktop/networkviews.py a/src/jarabe/desktop/networkviews.py index d63cf01..1bf6cc3 100644 --- b/src/jarabe/desktop/networkviews.py +++ a/src/jarabe/desktop/networkviews.py @@ -454,7 +454,7 @@ class WirelessNetworkView(EventPulsingIcon): def is_olpc_mesh(self): return self._mode == network.NM_802_11_MODE_ADHOC \ - and self._ssid == 'olpc-mesh' + and self._ssid == b'olpc-mesh' def remove_all_aps(self): for ap in list(self._access_points.values()): diff --git b/src/jarabe/journal/journalentrybundle.py a/src/jarabe/journal/journalentrybundle.py index 0656b6a..233c899 100644 --- b/src/jarabe/journal/journalentrybundle.py +++ a/src/jarabe/journal/journalentrybundle.py @@ -87,7 +87,7 @@ class JournalEntryBundle(Bundle): preview_path = os.path.join(bundle_dir, 'preview', uid) if not os.path.exists(preview_path): return '' - f = open(preview_path, 'r') + f = open(preview_path, 'rb') try: preview_data = f.read() finally: diff --git b/src/jarabe/model/buddy.py a/src/jarabe/model/buddy.py index 6683a52..179d67e 100644 --- b/src/jarabe/model/buddy.py +++ a/src/jarabe/model/buddy.py @@ -57,6 +57,9 @@ class BaseBuddyModel(GObject.GObject): return self._key def set_key(self, key): + if isinstance(key, bytes): + key = key.decode('utf-8') + self._key = key key = GObject.Property(type=object, getter=get_key, setter=set_key) @@ -160,9 +163,8 @@ class OwnerBuddyModel(BaseBuddyModel): if CONNECTION_INTERFACE_BUDDY_INFO in connection: properties = {} if self.props.key is not None: - if isinstance(self.props.key, str): - self.props.key = self.props.key.encode() - properties['key'] = dbus.ByteArray(self.props.key) + properties['key'] = dbus.ByteArray( + self.props.key.encode('utf-8')) if self.props.color is not None: properties['color'] = self.props.color.to_string() diff --git b/src/jarabe/model/network.py a/src/jarabe/model/network.py index a26b62d..edb6758 100644 --- b/src/jarabe/model/network.py +++ a/src/jarabe/model/network.py @@ -429,7 +429,7 @@ class OlpcMesh(object): def get_dict(self): ret = { - 'ssid': dbus.ByteArray('olpc-mesh'), + 'ssid': dbus.ByteArray(b'olpc-mesh'), 'channel': self.channel, } @@ -647,7 +647,7 @@ class AccessPoint(GObject.GObject): self._initialized = False self._bus = dbus.SystemBus() - self.ssid = '' + self.ssid = b'' self.strength = 0 self.flags = 0 self.wpa_flags = 0 @@ -970,7 +970,7 @@ def _migrate_old_wifi_connections(): try: settings = Settings() settings.connection.id = section - ssid = config.get(section, 'ssid') + ssid = config.get(section, 'ssid').encode() settings.wireless.ssid = dbus.ByteArray(ssid) config_uuid = config.get(section, 'uuid') settings.connection.uuid = config_uuid diff --git b/src/jarabe/view/Makefile.am a/src/jarabe/view/Makefile.am index da7fe1d..3aea66f 100644 --- b/src/jarabe/view/Makefile.am +++ a/src/jarabe/view/Makefile.am @@ -15,5 +15,4 @@ sugar_PYTHON = \ tabbinghandler.py \ viewsource.py \ viewhelp.py \ - viewhelp_webkit1.py \ viewhelp_webkit2.py diff --git b/src/jarabe/view/viewhelp.py a/src/jarabe/view/viewhelp.py index baf8af0..0cd9498 100644 --- b/src/jarabe/view/viewhelp.py +++ a/src/jarabe/view/viewhelp.py @@ -33,17 +33,7 @@ from sugar3.graphics.toolbutton import ToolButton from sugar3.graphics.radiotoolbutton import RadioToolButton from sugar3.bundle.activitybundle import get_bundle_instance from jarabe.model import shell - - -try: - olpc_build = open('/boot/olpc_build', 'r').readline() -except: - olpc_build = '' - -if olpc_build.startswith('13'): - from jarabe.view.viewhelp_webkit1 import Browser -else: - from jarabe.view.viewhelp_webkit2 import Browser +from jarabe.view.viewhelp_webkit2 import Browser _logger = logging.getLogger('ViewHelp') diff --git b/tests/data/activity-1.xo a/tests/data/activity-1.xo new file mode 100644 index 0000000..f7ae005 Binary files /dev/null and a/tests/data/activity-1.xo differ diff --git b/tests/data/activity.svg a/tests/data/activity.svg new file mode 100644 index 0000000..8da7c63 --- /dev/null +++ a/tests/data/activity.svg @@ -0,0 +1,26 @@ + + +]> + + + + + + + + + + + + + + diff --git b/tests/data/microformat.html a/tests/data/microformat.html new file mode 100644 index 0000000..6fea175 --- /dev/null +++ a/tests/data/microformat.html @@ -0,0 +1,19 @@ +activities + +
+ +Abacus +43 +
+ +
+ +Abacus +41.1 +
+ +
+ +Browse +149 +
diff --git b/tests/data/sample-1.xol a/tests/data/sample-1.xol new file mode 100644 index 0000000..52f384d Binary files /dev/null and a/tests/data/sample-1.xol differ diff --git b/tests/data/test.txt a/tests/data/test.txt new file mode 100644 index 0000000..ce01362 --- /dev/null +++ a/tests/data/test.txt @@ -0,0 +1 @@ +hello diff --git b/tests/extensions/cpsection/__init__.py a/tests/extensions/cpsection/__init__.py new file mode 100644 index 0000000..3ad9513 --- /dev/null +++ a/tests/extensions/cpsection/__init__.py @@ -0,0 +1,2 @@ +from pkgutil import extend_path +__path__ = extend_path(__path__, __name__) diff --git b/tests/extensions/cpsection/webaccount/__init__.py a/tests/extensions/cpsection/webaccount/__init__.py new file mode 100644 index 0000000..3ad9513 --- /dev/null +++ a/tests/extensions/cpsection/webaccount/__init__.py @@ -0,0 +1,2 @@ +from pkgutil import extend_path +__path__ = extend_path(__path__, __name__) diff --git b/tests/extensions/cpsection/webaccount/services/__init__.py a/tests/extensions/cpsection/webaccount/services/__init__.py new file mode 100644 index 0000000..3ad9513 --- /dev/null +++ a/tests/extensions/cpsection/webaccount/services/__init__.py @@ -0,0 +1,2 @@ +from pkgutil import extend_path +__path__ = extend_path(__path__, __name__) diff --git b/tests/extensions/cpsection/webaccount/services/mock/__init__.py a/tests/extensions/cpsection/webaccount/services/mock/__init__.py new file mode 100644 index 0000000..3ad9513 --- /dev/null +++ a/tests/extensions/cpsection/webaccount/services/mock/__init__.py @@ -0,0 +1,2 @@ +from pkgutil import extend_path +__path__ = extend_path(__path__, __name__) diff --git b/tests/extensions/cpsection/webaccount/services/mock/service.py a/tests/extensions/cpsection/webaccount/services/mock/service.py new file mode 100644 index 0000000..bd29dab --- /dev/null +++ a/tests/extensions/cpsection/webaccount/services/mock/service.py @@ -0,0 +1,45 @@ +# Copyright (C) 2013, Walter Bender - Raul Gutierrez Segales +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +from gi.repository import Gtk + +from jarabe.webservice import accountsmanager + +from cpsection.webaccount.web_service import WebService + +_SERVICE_NAME = 'mock' + + +class WebService(WebService): + + def __init__(self): + self._account = accountsmanager.get_account(_SERVICE_NAME) + + def get_icon_name(self): + return _SERVICE_NAME + + def config_service_cb(self, widget, event, container): + label = Gtk.Label(_SERVICE_NAME) + + for c in container.get_children(): + container.remove(c) + + container.add(label) + container.show_all() + + +def get_service(): + return WebService() diff --git b/tests/extensions/cpsection/webaccount/web_service.py a/tests/extensions/cpsection/webaccount/web_service.py new file mode 100644 index 0000000..998acb1 --- /dev/null +++ a/tests/extensions/cpsection/webaccount/web_service.py @@ -0,0 +1,22 @@ +# Copyright (C) 2013, Walter Bender - Raul Gutierrez Segales +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +class WebService(): + def get_icon_name(self): + raise "Not implemented" + + def config_service_cb(self, widget, event, container): + raise "Not implemented" diff --git b/tests/extensions/webservice/__init__.py a/tests/extensions/webservice/__init__.py new file mode 100644 index 0000000..3ad9513 --- /dev/null +++ a/tests/extensions/webservice/__init__.py @@ -0,0 +1,2 @@ +from pkgutil import extend_path +__path__ = extend_path(__path__, __name__) diff --git b/tests/extensions/webservice/mock/__init__.py a/tests/extensions/webservice/mock/__init__.py new file mode 100644 index 0000000..3ad9513 --- /dev/null +++ a/tests/extensions/webservice/mock/__init__.py @@ -0,0 +1,2 @@ +from pkgutil import extend_path +__path__ = extend_path(__path__, __name__) diff --git b/tests/extensions/webservice/mock/account.py a/tests/extensions/webservice/mock/account.py new file mode 100644 index 0000000..3f4520d --- /dev/null +++ a/tests/extensions/webservice/mock/account.py @@ -0,0 +1,72 @@ +# Copyright (c) 2013 Walter Bender + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +import os + +from sugar3.graphics.menuitem import MenuItem +from jarabe.webservice import account + +ACCOUNT_NAME = 'mock' + + +class MockAccount(account.Account): + def __init__(self): + return + + def get_description(self): + return ACCOUNT_NAME + + def get_shared_journal_entry(self): + return MockSharedJournalEntry() + + def get_token_state(self): + return int(os.environ["MOCK_ACCOUNT_STATE"]) + + +class MockSharedJournalEntry(account.SharedJournalEntry): + def __init__(self): + return + + def get_share_menu(self, metadata): + share_menu = ShareMenu(metadata) + return share_menu + + def get_refresh_menu(self): + refresh_menu = RefreshMenu() + return refresh_menu + + +class ShareMenu(MenuItem): + def __init__(self, metadata): + MenuItem.__init__(self, text_label=ACCOUNT_NAME) + self.show() + + +class RefreshMenu(MenuItem): + def __init__(self): + MenuItem.__init__(self, text_label=ACCOUNT_NAME) + self.show() + + def set_metadata(self, metadata): + return + + +def get_account(): + return MockAccount() diff --git b/tests/extensions/webservice/mock/icons/mock.svg a/tests/extensions/webservice/mock/icons/mock.svg new file mode 100644 index 0000000..7a9434c --- /dev/null +++ a/tests/extensions/webservice/mock/icons/mock.svg @@ -0,0 +1,25 @@ + + +]> + + + + M + diff --git b/tests/extensions/webservice/mock/mock/__init__.py a/tests/extensions/webservice/mock/mock/__init__.py new file mode 100644 index 0000000..3ad9513 --- /dev/null +++ a/tests/extensions/webservice/mock/mock/__init__.py @@ -0,0 +1,2 @@ +from pkgutil import extend_path +__path__ = extend_path(__path__, __name__) diff --git b/tests/extensions/webservice/mock/mock/mock.py a/tests/extensions/webservice/mock/mock/mock.py new file mode 100644 index 0000000..e69de29 diff --git b/tests/test_activitieslist.py a/tests/test_activitieslist.py new file mode 100644 index 0000000..722424f --- /dev/null +++ a/tests/test_activitieslist.py @@ -0,0 +1,27 @@ +# Copyright (C) 2013, Daniel Narvaez +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from sugar3.test import unittest +from sugar3.test import uitree + + +class TestActivitiesList(unittest.UITestCase): + def test_activity_list_palette(self): + with self.run_view("activitieslist"): + root = uitree.get_root() + + for name in ["Make favorite", "Erase", "Start new"]: + node = root.find_child(name=name, role_name="label") + self.assertIsNotNone(node) diff --git b/tests/test_backup.py a/tests/test_backup.py new file mode 100644 index 0000000..0fe832c --- /dev/null +++ a/tests/test_backup.py @@ -0,0 +1,47 @@ +# Copyright (C) 2014, Gonzalo Odiard +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import unittest +import sys + +from jarabe import config + +# we need import from the extensions path +sys.path.append(config.ext_path) + +from cpsection.backup.backupmanager import BackupManager +from cpsection.backup.backends.backend_tools import Backend + + +class TestBackup(unittest.TestCase): + + def setUp(self): + self.manager = BackupManager() + self._backends = self.manager.get_backends() + + def test_get_backend(self): + self.assertTrue(len(self._backends) > 0) + + def test_backend_backup_restore(self): + for backend in self._backends: + # verify the backend have the methods needed + self.assertIsInstance(backend.get_name(), str) + + self.assertIsInstance(backend.get_backup(), Backend) + + self.assertIsInstance(backend.get_restore(), Backend) + + def test_need_stop_activities(self): + self.assertFalse(self.manager.need_stop_activities()) diff --git b/tests/test_bundleregistry.py a/tests/test_bundleregistry.py new file mode 100644 index 0000000..743d40c --- /dev/null +++ a/tests/test_bundleregistry.py @@ -0,0 +1,60 @@ +# Copyright (C) 2013, One Laptop per Child +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import shutil +import tempfile +import unittest +import os + +from jarabe.model import bundleregistry +from sugar3.bundle.helpers import bundle_from_archive + +tests_dir = os.getcwd() +data_dir = os.path.join(tests_dir, "data") +base_dir = os.path.dirname(tests_dir) + +os.environ["SUGAR_MIME_DEFAULTS"] = \ + os.path.join(base_dir, "data", "mime.defaults") + + +class TestBundleRegistry(unittest.TestCase): + def setUp(self): + activities_path = tempfile.mkdtemp() + library_path = tempfile.mkdtemp() + os.environ['SUGAR_ACTIVITIES_PATH'] = activities_path + os.environ['SUGAR_LIBRARY_PATH'] = library_path + + def tearDown(self): + activities_path = os.environ.pop('SUGAR_ACTIVITIES_PATH', None) + if activities_path: + shutil.rmtree(activities_path) + + library_path = os.environ.pop('SUGAR_LIBRARY_PATH', None) + if library_path: + shutil.rmtree(library_path) + + def test_install_content(self): + registry = bundleregistry.get_registry() + bundle = bundle_from_archive(os.path.join(data_dir, 'sample-1.xol')) + registry.install(bundle) + installed_bundle = registry.get_bundle("org.sugarlabs.samplecontent") + self.assertIsNotNone(installed_bundle) + + def test_install_activity(self): + registry = bundleregistry.get_registry() + bundle = bundle_from_archive(os.path.join(data_dir, 'activity-1.xo')) + registry.install(bundle) + installed_bundle = registry.get_bundle("org.sugarlabs.MyActivity") + self.assertIsNotNone(installed_bundle) diff --git b/tests/test_desktop_config.py a/tests/test_desktop_config.py new file mode 100644 index 0000000..d561262 --- /dev/null +++ a/tests/test_desktop_config.py @@ -0,0 +1,77 @@ +# Copyright (C) 2013, Walter Bender +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from sugar3.test import unittest + +from gi.repository import Gio +from gi.repository import GLib + +from jarabe.model import desktop + +_DESKTOP_CONF_DIR = 'org.sugarlabs.desktop' +_HOMEVIEWS_KEY = 'homeviews' + +_VIEW_ICONS = [{'layout': 'box-layout', 'view-icon': 'view-radial', + 'favorite-icon': 'emblem-locked'}] +_MOCK_LIST = [{'layout': 'box-layout', 'view-icon': 'view-radial', + 'favorite-icon': 'emblem-locked'}, + {'layout': 'ring-layout', 'view-icon': 'view-box', + 'favorite-icon': 'emblem-favorite'}] + + +class TestDesktopConfig(unittest.UITestCase): + + def setUp(self): + self.target = [] + + settings = Gio.Settings.new(_DESKTOP_CONF_DIR) + self._save_homeviews = settings.get_value(_HOMEVIEWS_KEY) + + self.model = desktop.get_model() + self.model.connect('desktop-view-icons-changed', + self.__desktop_view_icons_changed_cb) + + def __desktop_view_icons_changed_cb(self, model): + number_of_views = desktop.get_number_of_views() + self.assertTrue(number_of_views == len(self.target)) + + view_icons = desktop.get_view_icons() + self.assertTrue(len(view_icons) == len(self.target)) + + right_view_icons = [view['view-icon'] for view in self.target] + for i in range(len(view_icons)): + self.assertTrue(view_icons[i] in right_view_icons) + + favorite_icons = desktop.get_favorite_icons() + self.assertTrue(len(favorite_icons) >= len(self.target)) + + def test_unset_views(self): + self.target = _VIEW_ICONS + with self.run_view("gtk_main"): + settings = Gio.Settings.new(_DESKTOP_CONF_DIR) + variant = GLib.Variant('aa{ss}', self.target) + settings.set_value(_HOMEVIEWS_KEY, variant) + + def test_set_views(self): + self.target = _MOCK_LIST + with self.run_view("gtk_main"): + settings = Gio.Settings.new(_DESKTOP_CONF_DIR) + variant = GLib.Variant('aa{ss}', self.target) + settings.set_value(_HOMEVIEWS_KEY, variant) + + def tearDown(self): + self.target = self._save_homeviews.unpack() + settings = Gio.Settings.new(_DESKTOP_CONF_DIR) + settings.set_value(_HOMEVIEWS_KEY, self._save_homeviews) diff --git b/tests/test_downloader.py a/tests/test_downloader.py new file mode 100644 index 0000000..7e661ce --- /dev/null +++ a/tests/test_downloader.py @@ -0,0 +1,89 @@ +# Copyright (C) 2013, One Laptop per Child +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os +import unittest +import threading +import http.server +import socketserver + +from gi.repository import Gtk + +from sugar3 import env +from jarabe.util.downloader import Downloader + +profile_data_dir = os.path.join(env.get_profile_path(), 'data') +if not os.path.isdir(profile_data_dir): + os.makedirs(profile_data_dir) + +tests_dir = os.getcwd() +data_dir = os.path.join(tests_dir, "data") + + +class TestDownloader(unittest.TestCase): + def setUp(self): + handler = http.server.SimpleHTTPRequestHandler + self._server = socketserver.TCPServer(("", 0), handler) + self._port = self._server.server_address[1] + self._server_thread = threading.Thread(target=self._run_http_server) + self._server_thread.daemon = True + self._server_thread.start() + + def tearDown(self): + self._server.shutdown() + self._server_thread.join() + + def _run_http_server(self): + self._server.serve_forever() + + def download_complete_cb(self, downloader, result): + self._complete = True + self._result = result + + def test_download_to_temp(self): + downloader = Downloader("http://0.0.0.0:%d/data/test.txt" % self._port) + self._complete = False + downloader.connect('complete', self.download_complete_cb) + downloader.download_to_temp() + + while not self._complete: + Gtk.main_iteration() + + self.assertIsNone(self._result) + path = downloader.get_local_file_path() + text = open(path, "r").read() + self.assertEqual("hello\n", text) + + def test_download(self): + downloader = Downloader("http://0.0.0.0:%d/data/test.txt" % self._port) + self._complete = False + downloader.connect('complete', self.download_complete_cb) + downloader.download() + + while not self._complete: + Gtk.main_iteration() + + self.assertEqual("hello\n", self._result.get_data()) + + def test_get_size(self): + downloader = Downloader("http://0.0.0.0:%d/data/test.txt" % self._port) + self._complete = False + downloader.connect('complete', self.download_complete_cb) + downloader.get_size() + + while not self._complete: + Gtk.main_iteration() + + self.assertEqual(6, self._result) diff --git b/tests/test_journaltoolbox.py a/tests/test_journaltoolbox.py new file mode 100644 index 0000000..3631638 --- /dev/null +++ a/tests/test_journaltoolbox.py @@ -0,0 +1,31 @@ +# Copyright (C) 2012, Daniel Narvaez +# Copyright (C) 2013, Walter Bender +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from sugar3.test import unittest +from sugar3.test import uitree + +ACCOUNT_NAME = 'mock' + + +class TestDetailToolBox(unittest.UITestCase): + + def test_detail_toolbox(self): + with self.run_view("journal_detailstoolbox"): + root = uitree.get_root() + + for name in ['Clipboard', ACCOUNT_NAME]: + node = root.find_child(name=name, role_name='menu item') + self.assertIsNotNone(node) diff --git b/tests/test_microformat.py a/tests/test_microformat.py new file mode 100644 index 0000000..4ce3ebe --- /dev/null +++ a/tests/test_microformat.py @@ -0,0 +1,52 @@ +# Copyright (C) 2013, One Laptop per Child +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import unittest +import os + +from sugar3.bundle.bundleversion import NormalizedVersion + +from jarabe.model.update.microformat import _UpdateHTMLParser +from jarabe.model.update.microformat import MetadataLookup + +tests_dir = os.getcwd() +data_dir = os.path.join(tests_dir, "data") + + +class TestMicroformat(unittest.TestCase): + def test_html_parser(self): + parser = _UpdateHTMLParser("http://www.sugarlabs.org") + fd = open(os.path.join(data_dir, "microformat.html"), "r") + parser.feed(fd.read()) + parser.close() + + results = parser.results + self.assertIn('org.sugarlabs.AbacusActivity', list(results.keys())) + self.assertIn('org.laptop.WebActivity', list(results.keys())) + + # test that we picked the newest version + version, url = results['org.sugarlabs.AbacusActivity'] + self.assertEqual(NormalizedVersion("43"), version) + self.assertEqual("http://download.sugarlabs.org/abacus-43.xo", url) + + # test resolve relative url + version, url = results['org.laptop.WebActivity'] + self.assertEqual("http://www.sugarlabs.org/browse-149.xo", url) + + def test_zip_name_lookup(self): + fd = open(os.path.join(data_dir, "activity-1.xo")) + lookup = MetadataLookup(None) + name = lookup._name_from_fd(fd) + self.assertEqual("My Activity", name) diff --git b/tests/test_modemconfiguration.py a/tests/test_modemconfiguration.py new file mode 100644 index 0000000..b8b61e5 --- /dev/null +++ a/tests/test_modemconfiguration.py @@ -0,0 +1,188 @@ +# -*- encoding: utf-8 -*- +# Copyright (C) 2013, Miguel González +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import unittest +from xml.etree.cElementTree import ElementTree + +from mock import patch + +from cpsection.modemconfiguration.model import CountryCodeParser, \ + ServiceProvidersParser, ServiceProviders, PROVIDERS_PATH +from cpsection.modemconfiguration.model import CONF_SP_COUNTRY, \ + CONF_SP_PROVIDER, CONF_SP_PLAN + + +class CountryCodeParserTest(unittest.TestCase): + def test_get_country(self): + self.assertEqual(CountryCodeParser().get('ad'), 'Andorra') + self.assertEqual(CountryCodeParser().get('es'), 'Spain') + self.assertEqual(CountryCodeParser().get('zw'), 'Zimbabwe') + + def test_raise_if_not_found(self): + with self.assertRaises(KeyError): + CountryCodeParser().get('xx') + + +class ServiceProvidersParserTest(unittest.TestCase): + def setUp(self): + self.tree = ElementTree(file=PROVIDERS_PATH) + self.countries_from_xml = self.tree.findall('country') + self.db = ServiceProvidersParser() + self.countries_from_class = self.db.get_countries() + + def test_get_countries(self): + for country in self.countries_from_class: + self.assertEqual(country.tag, 'country') + + def test_get_country_idx_by_code(self): + for idx, country in enumerate(self.countries_from_class): + country_code = country.attrib['code'] + country_idx = self.db.get_country_idx_by_code(country_code) + self.assertEqual(idx, country_idx) + + def test_get_country_name_by_idx(self): + for idx, country in enumerate(self.countries_from_class): + country_code = country.attrib['code'] + self.assertEqual( + CountryCodeParser().get(country_code), + self.db.get_country_name_by_idx(idx) + ) + + def test_get_providers(self): + for country_idx, country in enumerate(self.countries_from_class): + providers = self.db.get_providers(country_idx) + for provider in providers: + self.assertEqual(provider.tag, 'provider') + self.assertIsNotNone(provider.find('.//gsm')) + + def test_get_plans(self): + for country_idx, country in enumerate(self.countries_from_class): + providers = self.db.get_providers(country_idx) + for provider_idx, provider in enumerate(providers): + plans = self.db.get_plans(country_idx, provider_idx) + for plan in plans: + self.assertEqual(plan.tag, 'apn') + + def get_providers(self, country_xml): + """Given a country element find all provider with a gsm tag.""" + idx = 0 + for provider in country_xml.findall('provider'): + if provider.find('.//gsm'): + yield idx, provider + idx = idx + 1 + + def get_plans(self, provider_xml): + """Given a provider element find all apn elements.""" + for idx, plan in enumerate(provider_xml.findall('.//apn')): + yield idx, plan + + def test_get_some_specific_values(self): + for country in self.countries_from_xml: + country_code = country.attrib['code'] + country_idx = self.db.get_country_idx_by_code(country_code) + + for provider_idx, provider in self.get_providers(country): + plans_from_class = self.db.get_plans(country_idx, + provider_idx) + + for plan_idx, plan in self.get_plans(provider): + plan_from_class = plans_from_class[plan_idx] + self.assertEqual(plan.attrib['value'], + plan_from_class.attrib['value']) + + +class ServiceProvidersTest(unittest.TestCase): + def setUp(self): + self.db = ServiceProviders() + self.countries = self.db.get_countries() + + def test_go_trough_all_combo_options(self): + # Traverse countries + for country in self.countries: + # Check if country is stored + self.db.set_country(country.idx) + new_country = self.db.get_country() + self.assertEqual(country.code, new_country.code) + + # Traverse providers for country + providers = self.db.get_providers() + for provider in providers: + # Check if provider is stored + self.db.set_provider(provider.idx) + new_provider = self.db.get_provider() + self.assertEqual(provider.name, new_provider.name) + + # Traverse plans for provider + plans = self.db.get_plans() + for plan in plans: + # Check if plan is stored + self.db.set_plan(plan.idx) + new_plan = self.db.get_plan() + self.assertEqual(plan.name, new_plan.name) + + # Check if selection is permanently stored + db2 = ServiceProviders() + country2 = db2.get_country() + provider2 = db2.get_provider() + plan2 = db2.get_plan() + self.assertEqual(country2.idx, country.idx) + self.assertEqual(provider2.idx, provider.idx) + self.assertEqual(plan2.idx, plan.idx) + + +class FakeConfClient(object): + + def __init__(self, **kwargs): + self.store = { + CONF_SP_COUNTRY: None, + CONF_SP_PROVIDER: None, + CONF_SP_PLAN: None, + } + self.store.update(kwargs) + + def get_string(self, key): + return self.store[key] + + def set_string(self, key, value): + self.store[key] = value + return + + def get_int(self, key): + return self.store[key] + + def set_int(self, key, value): + self.store[key] = value + return + + +class ServiceProvidersGuessCountryTest(unittest.TestCase): + def setUp(self): + # patch Gio.Settings to use a fake client + conf_patcher = patch('gi.repository.Gio.Settings') + conf_mock = conf_patcher.start() + conf_mock.return_value = FakeConfClient(CONF_SP_COUNTRY=None) + self.addCleanup(conf_patcher.stop) + + def test_guess_country(self): + LOCALE = ('hi_IN', 'UTF-8') + default_country_code = LOCALE[0][3:5].lower() + + with patch('locale.getdefaultlocale') as locale_mock: + locale_mock.return_value = LOCALE + + db = ServiceProviders() + country = db.get_country() + self.assertEqual(country.code, default_country_code) diff --git b/tests/test_user_profile.py a/tests/test_user_profile.py new file mode 100644 index 0000000..f9950de --- /dev/null +++ a/tests/test_user_profile.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2014, 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 +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import unittest + +from cpsection.aboutme import model +from jarabe.intro.agepicker import AGES +from jarabe.intro.genderpicker import GENDERS + +TEST_NICKS = ['Ajay Garg', 'Aleksey Lim', + 'Bernie H. Innocenti', 'Daniel Narvaez', + 'Emil Dudev', 'Gonzalo Odiard', + 'Ignacio Rodríguez', 'Jorge Alberto Gómez López', + 'Sai Vineet', 'Sam Parkinson', + 'Sascha Silbe', 'Walter Bender'] + +TEST_COLORS = [['#FF8F00', '#FF2B34'], + ['#00A0FF', '#008009'], + ['#BCCEFF', '#F8E800'], + ['#FF2B34', '#7F00BF'], + ['#FF2B34', '#5E008C'], + ['#BCCDFF', '#AC32FF'], + ['#00EA11', '#9A5200'], + ['#A700FF', '#FF8F00'], + ['#00EA11', '#7F00BF'], + ['#8BFF7A', '#F8E800'], + ['#00A0FF', '#5E008C'], + ['#7F00BF', '#AC32FF']] + + +class TestUserProfile(unittest.TestCase): + def test_user_gender_age(self): + for gender in GENDERS: + for age in AGES: + model.set_gender(gender) + model.set_age(age) + self.assertEqual(model.get_age(), age) + self.assertEqual(model.get_gender(), gender) + + def test_user_nick(self): + for nick in TEST_NICKS: + model.set_nick(nick) + self.assertEqual(model.get_nick(), nick) + + def test_user_color(self): + for new_color in TEST_COLORS: + new_color = "%s,%s" % (new_color[0], new_color[1]) + model.set_color_xo(new_color) + self.assertEqual(model.get_color(), new_color) diff --git b/tests/test_webaccount.py a/tests/test_webaccount.py new file mode 100644 index 0000000..7c4681a --- /dev/null +++ a/tests/test_webaccount.py @@ -0,0 +1,31 @@ +# Copyright (C) 2012, Daniel Narvaez +# Copyright (C) 2013, Walter Bender +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from sugar3.test import unittest +from sugar3.test import uitree + +ACCOUNT_NAME = 'mock' + + +class TestWebAccount(unittest.UITestCase): + + def test_webaccount(self): + with self.run_view("webaccount"): + root = uitree.get_root() + + for name in [ACCOUNT_NAME]: + node = root.find_child(name=name, role_name='label') + self.assertIsNotNone(node) diff --git b/tests/test_webservice.py a/tests/test_webservice.py new file mode 100644 index 0000000..56de599 --- /dev/null +++ a/tests/test_webservice.py @@ -0,0 +1,114 @@ +# Copyright (C) 2013, Walter Bender +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os +import sys +import unittest + +from gi.repository import Gtk + +from jarabe import config +from jarabe.webservice.account import Account +from jarabe.webservice import accountsmanager + +ACCOUNT_NAME = 'mock' + +tests_dir = os.getcwd() +extension_dir = os.path.join(tests_dir, 'extensions') +web_extension_dir = os.path.join(extension_dir, 'webservice') + + +class TestWebAccounts(unittest.TestCase): + def setUp(self): + os.environ["MOCK_ACCOUNT_STATE"] = str(Account.STATE_NONE) + self.save_ext_path = config.ext_path + config.ext_path = extension_dir + sys.path.append(config.ext_path) + + def test_get_description(self): + accounts = accountsmanager.get_all_accounts() + found_mock_account = False + for account in accounts: + if account.get_description() == ACCOUNT_NAME: + found_mock_account = True + break + self.assertTrue(found_mock_account) + + def test_icon_theme(self): + icon_theme = Gtk.IconTheme.get_default() + icon_search_path = icon_theme.get_search_path() + icon_path = os.path.join(web_extension_dir, ACCOUNT_NAME, 'icons') + self.assertTrue(icon_path in icon_search_path) + + def test_get_webaccount_services(self): + services = accountsmanager.get_webaccount_services() + self.assertTrue(len(services) > 0) + + def test_get_all_accounts(self): + accounts = accountsmanager.get_all_accounts() + self.assertTrue(len(accounts) > 0) + + def test_get_account(self): + account = accountsmanager.get_account('mock') + self.assertIsNotNone(account) + + def test_get_service(self): + account = accountsmanager.get_service('mock') + self.assertIsNotNone(account) + + def test_get_configured_accounts(self): + os.environ["MOCK_ACCOUNT_STATE"] = str(Account.STATE_VALID) + accounts = accountsmanager.get_configured_accounts() + count = len(accounts) + self.assertTrue(count > 0) + + self.assertTrue(accountsmanager.has_configured_accounts()) + + os.environ["MOCK_ACCOUNT_STATE"] = str(Account.STATE_NONE) + accounts = accountsmanager.get_configured_accounts() + self.assertTrue(len(accounts) == count - 1) + + os.environ["MOCK_ACCOUNT_STATE"] = str(Account.STATE_EXPIRED) + accounts = accountsmanager.get_configured_accounts() + self.assertTrue(len(accounts) == count) + + def test_get_active_accounts(self): + os.environ["MOCK_ACCOUNT_STATE"] = str(Account.STATE_VALID) + accounts = accountsmanager.get_active_accounts() + count = len(accounts) + self.assertTrue(count > 0) + + os.environ["MOCK_ACCOUNT_STATE"] = str(Account.STATE_EXPIRED) + accounts = accountsmanager.get_active_accounts() + self.assertTrue(len(accounts) == count - 1) + + def test_share_menu(self): + accounts = accountsmanager.get_all_accounts() + for account in accounts: + shared_journal_entry = account.get_shared_journal_entry() + share_menu = shared_journal_entry.get_share_menu( + {'account': 'mock'}) + self.assertIsNotNone(share_menu) + + def test_refresh_menu(self): + accounts = accountsmanager.get_all_accounts() + for account in accounts: + shared_journal_entry = account.get_shared_journal_entry() + refresh_menu = shared_journal_entry.get_refresh_menu() + self.assertIsNotNone(refresh_menu) + + def tearDown(self): + sys.path.remove(config.ext_path) + config.ext_path = self.save_ext_path diff --git b/tests/views/activitieslist.py a/tests/views/activitieslist.py new file mode 100644 index 0000000..e954b47 --- /dev/null +++ a/tests/views/activitieslist.py @@ -0,0 +1,59 @@ +# Copyright (C) 2013, Daniel Narvaez +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os + +from gi.repository import Gtk +from dbus.mainloop.glib import DBusGMainLoop +DBusGMainLoop(set_as_default=True) + +from jarabe.desktop.activitieslist import ActivityListPalette + + +tests_dir = os.getcwd() +base_dir = os.path.dirname(tests_dir) +data_dir = os.path.join(tests_dir, "data") + + +class MockActivityInfo: + def get_bundle_id(self): + return "mock" + + def get_activity_version(self): + return 1 + + def get_is_favorite(self): + return False + + def get_icon(self): + return os.path.join(data_dir, "activity.svg") + + def get_name(self): + return "mock" + + def get_path(self): + return "mock" + + def is_user_activity(self): + return True + + +os.environ["SUGAR_MIME_DEFAULTS"] = \ + os.path.join(base_dir, "data", "mime.defaults") + +palette = ActivityListPalette(MockActivityInfo()) +palette.popup() + +Gtk.main() diff --git b/tests/views/gtk_main.py a/tests/views/gtk_main.py new file mode 100644 index 0000000..2dc088d --- /dev/null +++ a/tests/views/gtk_main.py @@ -0,0 +1,18 @@ +# Copyright (C) 2013, Walter Bender +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from gi.repository import Gtk + +Gtk.main() diff --git b/tests/views/journal_detailstoolbox.py a/tests/views/journal_detailstoolbox.py new file mode 100644 index 0000000..77e4fee --- /dev/null +++ a/tests/views/journal_detailstoolbox.py @@ -0,0 +1,54 @@ +# Copyright (C) 2013, Walter Bender +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os +import sys + +from gi.repository import Gtk +from dbus.mainloop.glib import DBusGMainLoop +DBusGMainLoop(set_as_default=True) + +from jarabe import config +from jarabe.journal.journaltoolbox import DetailToolbox +from jarabe.journal.journalwindow import JournalWindow +from jarabe.webservice.account import Account + +ACCOUNT_NAME = 'mock' + + +class JournalMock(JournalWindow): + def get_mount_point(self): + return '/' + + +tests_dir = os.getcwd() +extension_dir = os.path.join(tests_dir, 'extensions') + +os.environ["MOCK_ACCOUNT_STATE"] = str(Account.STATE_VALID) +config.ext_path = extension_dir +sys.path.append(config.ext_path) + +window = Gtk.Window() + +toolbox = DetailToolbox(JournalMock()) +toolbox.show() + +window.add(toolbox) +window.show() + +toolbox.set_metadata({'mountpoint': '/', 'uid': '', 'title': 'mock'}) +toolbox._copy.palette.popup(immediate=True) + +Gtk.main() diff --git b/tests/views/webaccount.py a/tests/views/webaccount.py new file mode 100644 index 0000000..f40ebb6 --- /dev/null +++ a/tests/views/webaccount.py @@ -0,0 +1,46 @@ +# Copyright (C) 2013, Walter Bender +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os +import sys + +from gi.repository import Gtk + +from jarabe import config +from jarabe.webservice.account import Account +from jarabe.webservice import accountsmanager + +ACCOUNT_NAME = 'mock' + +tests_dir = os.getcwd() +extension_dir = os.path.join(tests_dir, 'extensions') + +os.environ["MOCK_ACCOUNT_STATE"] = str(Account.STATE_VALID) +config.ext_path = extension_dir +sys.path.append(config.ext_path) + +window = Gtk.Window() +box = Gtk.HBox() +box.show() +window.add(box) + +services = accountsmanager.get_webaccount_services() +for service in services: + if service.get_icon_name() == ACCOUNT_NAME: + service.config_service_cb(None, None, box) + +window.show() + +Gtk.main()