From 41ab0ec5d79ea1c9af57d762c2e49bf2d22460ad Mon Sep 17 00:00:00 2001 From: Antoine Choppin Date: Tue, 14 Jun 2016 22:11:26 +0900 Subject: [PATCH 01/11] Fix APT wrapper (tentative) and add Japanese translation --- kano_updater/apt_wrapper.py | 17 +- po/PYPOTFILES | 18 +- po/de.po | 523 +++++++++++++++++++++++++++--------- po/ja.po | 454 +++++++++++++++++++++++++++++++ 4 files changed, 866 insertions(+), 146 deletions(-) create mode 100644 po/ja.po diff --git a/kano_updater/apt_wrapper.py b/kano_updater/apt_wrapper.py index 69b1431b..f081d16b 100644 --- a/kano_updater/apt_wrapper.py +++ b/kano_updater/apt_wrapper.py @@ -8,6 +8,7 @@ import apt import aptsources.sourceslist import apt_pkg +import gettext from kano.logging import logger from kano.utils import run_cmd_log @@ -19,6 +20,10 @@ import kano_updater.priority as Priority from kano_updater.special_packages import independent_install_list + +def apt_gettext(msg): + return gettext.dgettext('python-apt', msg) + class AptWrapper(object): def __init__(self): apt.apt_pkg.init_config() @@ -61,8 +66,8 @@ def update(self, progress, sources_list=None): progress.fail(_(err_msg)) progress.start(cache_init) - ops = [_('Reading package lists'), _('Building dependency tree'), - _('Reading state information'), _('Building data structures')] + ops = [apt_gettext('Reading package lists'), apt_gettext('Building dependency tree'), + apt_gettext('Reading state information'), apt_gettext('Building data structures')] op_progress = AptOpProgress(progress, ops) self._cache.open(op_progress) @@ -117,8 +122,8 @@ def upgrade(self, packages, progress=None, priority=Priority.NONE): download = "{}-downloading".format(phase_name) install = "{}-installing".format(phase_name) progress.split( - Phase(download, "Downloading packages"), - Phase(install, "Installing packages") + Phase(download, _("Downloading packages")), + Phase(install, _("Installing packages")) ) progress.start(download) @@ -144,8 +149,8 @@ def upgrade_all(self, progress=None, priority=Priority.NONE): download = "{}-downloading".format(phase_name) install = "{}-installing".format(phase_name) progress.split( - Phase(download, "Downloading packages"), - Phase(install, "Installing packages") + Phase(download, _("Downloading packages")), + Phase(install, _("Installing packages")) ) progress.start(download) diff --git a/po/PYPOTFILES b/po/PYPOTFILES index cdf55609..80d110e3 100644 --- a/po/PYPOTFILES +++ b/po/PYPOTFILES @@ -1,14 +1,14 @@ ../bin/kano-updater ../kano_updater/apt_wrapper.py -../kano_updater/ui/relaunch_window.py -../kano_updater/ui/available_window.py -../kano_updater/ui/views/relaunch.py -../kano_updater/ui/install_window.py ../kano_updater/auxiliary_tasks.py -../kano_updater/commands/install.py -../kano_updater/commands/download.py ../kano_updater/commands/check.py +../kano_updater/commands/download.py +../kano_updater/commands/install.py +../kano_updater/ui/available_window.py +../kano_updater/ui/install_window.py +../kano_updater/ui/relaunch_window.py +../kano_updater/ui/stage_text.py +../kano_updater/ui/views/finish.py +../kano_updater/ui/views/install.py +../kano_updater/ui/views/relaunch.py ../kano_updater/utils.py -../kano_updater_gui/text.py -../kano_updater_gui/header.py -../kano_updater_gui/stage.py diff --git a/po/de.po b/po/de.po index d4d5245a..20bf364a 100644 --- a/po/de.po +++ b/po/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: kano-updater\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-02-23 14:02+0100\n" +"POT-Creation-Date: 2016-06-14 21:34+0900\n" "PO-Revision-Date: 2015-02-13 17:16+0100\n" "Last-Translator: \n" "Language-Team: German \n" @@ -18,31 +18,165 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: ../bin/check-for-updates:46 -msgid "New Update" -msgstr "Neues Update" +#: ../bin/kano-updater:153 +msgid "Administrator priviledges are required to perform this operation" +msgstr "" -#: ../bin/check-for-updates:64 -msgid "Time to update!" -msgstr "Zeit für ein Update!" +#: ../bin/kano-updater:154 ../bin/kano-updater:169 +msgid "ERROR" +msgstr "FEHLER" -#: ../bin/check-for-updates:64 -msgid "Take a break! Updating takes about 15 minutes" -msgstr "Mach mal Pause! Das Update dauert etwa 15 Minuten" +#: ../bin/kano-updater:167 +msgid "An instance of Kano Updater is already running" +msgstr "" -#: ../bin/check-for-updates:67 ../bin/kano-updater:111 -msgid "Update now" -msgstr "Jetzt updaten" +#: ../bin/kano-updater:263 +msgid "Time check passed, doing update check!" +msgstr "" -#: ../bin/check-for-updates:69 ../bin/kano-updater:112 -msgid "Later" -msgstr "Später" +#: ../bin/kano-updater:265 +msgid "Not enough time passed for a new update check!" +msgstr "" + +#: ../bin/kano-updater:290 +msgid "Urgent updates available." +msgstr "" + +#: ../bin/kano-updater:295 +msgid "Updates available." +msgstr "" + +#: ../bin/kano-updater:312 +msgid "No updates found." +msgstr "" + +#: ../kano_updater/apt_wrapper.py:54 +msgid "Updating apt sources" +msgstr "" + +#: ../kano_updater/apt_wrapper.py:55 +msgid "Initialising apt cache" +msgstr "" + +#: ../kano_updater/apt_wrapper.py:125 ../kano_updater/apt_wrapper.py:152 +msgid "Downloading packages" +msgstr "" -#: ../bin/kano-updater:70 -msgid "You need to run kano-updater from a GUI session!" -msgstr "Du musst kano-updater aus der GUI heraus starten!" +#: ../kano_updater/apt_wrapper.py:126 ../kano_updater/apt_wrapper.py:153 +msgid "Installing packages" +msgstr "" + +#: ../kano_updater/apt_wrapper.py:230 +msgid "Cleaning dpkg journal" +msgstr "" -#: ../bin/kano-updater:93 +#: ../kano_updater/apt_wrapper.py:232 +msgid "Fixing broken packages" +msgstr "" + +#: ../kano_updater/auxiliary_tasks.py:21 +msgid "Updating home folders from template" +msgstr "" + +#: ../kano_updater/auxiliary_tasks.py:23 +msgid "Refreshing Kano Apps" +msgstr "" + +#: ../kano_updater/auxiliary_tasks.py:25 +msgid "Refreshing the desktop" +msgstr "" + +#: ../kano_updater/auxiliary_tasks.py:27 +msgid "Expanding filesystem partitions" +msgstr "" + +#: ../kano_updater/auxiliary_tasks.py:29 +msgid "Removing unnecessary kano-content entries" +msgstr "" + +#: ../kano_updater/auxiliary_tasks.py:31 +msgid "Syncing" +msgstr "" + +#: ../kano_updater/commands/check.py:44 +msgid "No need to check for updates" +msgstr "" + +#: ../kano_updater/commands/check.py:57 +msgid "Must have internet to check for updates" +msgstr "" + +#: ../kano_updater/commands/check.py:65 ../kano_updater/commands/download.py:82 +msgid "Could not connect to the download server" +msgstr "" + +#: ../kano_updater/commands/download.py:37 +msgid "Checking for updates" +msgstr "" + +#: ../kano_updater/commands/download.py:43 +#: ../kano_updater/commands/install.py:82 +msgid "Downloading updates" +msgstr "" + +#: ../kano_updater/commands/download.py:52 +#: ../kano_updater/ui/install_window.py:132 +msgid "No updates to download" +msgstr "" + +#: ../kano_updater/commands/download.py:58 +msgid "Updates have been downloaded already" +msgstr "" + +#: ../kano_updater/commands/download.py:64 +msgid "The download is already running" +msgstr "" + +#: ../kano_updater/commands/download.py:70 +msgid "Updates are already being installed" +msgstr "" + +#: ../kano_updater/commands/download.py:76 +msgid "Must have internet to download the updates" +msgstr "" + +#: ../kano_updater/commands/install.py:49 +msgid "Only {}MB free, at least 1GB is needed." +msgstr "" + +#: ../kano_updater/commands/install.py:88 +msgid "Installing updates" +msgstr "" + +#: ../kano_updater/commands/install.py:189 +msgid "Installing Hotfix" +msgstr "" + +#: ../kano_updater/commands/install.py:216 +msgid "Starting Update" +msgstr "" + +#: ../kano_updater/commands/install.py:222 +msgid "Updating Itself" +msgstr "" + +#: ../kano_updater/commands/install.py:228 +msgid "Running The Preupdate Scripts" +msgstr "" + +#: ../kano_updater/commands/install.py:234 +msgid "Updating Pip Packages" +msgstr "" + +#: ../kano_updater/commands/install.py:240 +msgid "Updating Deb Packages" +msgstr "" + +#: ../kano_updater/commands/install.py:246 +msgid "Running The Postupdate Scripts" +msgstr "" + +#: ../kano_updater/commands/install.py:273 msgid "" "Unfortunately, your version of Kano OS is too old to be updated through the " "updater." @@ -50,133 +184,111 @@ msgstr "" "Leider ist Dein Kano OS zu alt, um es mit dem Updater auf den neuesten Stand " "zu bringen." -#: ../bin/kano-updater:95 +#: ../kano_updater/commands/install.py:275 msgid "You will need to download the image of the OS and reflash your SD card." msgstr "" "Bitte lade das neueste Image von Kano OS herunter und installiere es mit " "einer SD-Karte." -#: ../bin/kano-updater:99 ../bin/kano-updater:115 ../bin/kano-updater:197 -#: ../bin/kano-updater:212 ../lxpanel-plugin/kano_updater.c:33 -#: ../lxpanel-plugin/kano_updater.c:243 ../lxpanel-plugin/kano_updater.c:338 -msgid "Kano Updater" -msgstr "Kano Updater" - -#: ../bin/kano-updater:109 -msgid "Let's update!" -msgstr "Ein Update!" +#: ../kano_updater/commands/install.py:297 +msgid "The updater has been updated, relaunching." +msgstr "" -#: ../bin/kano-updater:110 -msgid "Your Kano is about to get better" -msgstr "Dein Kano wird jetzt verbessert" +#: ../kano_updater/commands/install.py:307 +msgid "The pre-update tasks failed." +msgstr "" -#: ../bin/kano-updater:195 ../kano_updater/utils.py:328 -msgid "Error!" -msgstr "Fehler!" +#: ../kano_updater/commands/install.py:324 +msgid "The post-update tasks failed." +msgstr "" -#: ../bin/kano-updater:195 -msgid "Internet connection lost!" -msgstr "Keine Internet-Verbindung!" +#: ../kano_updater/ui/available_window.py:67 +msgid "Later" +msgstr "Später" -#: ../bin/kano-updater:210 -msgid "Error with downloading packages!" -msgstr "Konnte Pakete nicht herunterladen!" +#: ../kano_updater/ui/available_window.py:96 +msgid "The action needs to be implemented" +msgstr "" -#: ../bin/kano-updater-gui:97 -msgid "Updater" -msgstr "Updater" +#: ../kano_updater/ui/available_window.py:104 +#: ../kano_updater/ui/available_window.py:126 +#: ../kano_updater/ui/available_window.py:144 +msgid "New Update" +msgstr "Neues Update" -#: ../kano_updater/utils.py:65 -msgid "" -"We had a problem with the Update. Make sure you are connected to the " -"Internet, and give it another go.\n" -"\n" -"If you still have problems, we can help at http://help.kano.me" +#: ../kano_updater/ui/available_window.py:105 +msgid "Get new powers" msgstr "" -"Beim Update gab es ein Problem. Bitte prüfe die Internet-Verbindung und " -"versuche es noch einmal.\n" -"\n" -"Falls Du nicht weiterkommst, können wir Dir bei http://help.kano.me helfen." -#: ../kano_updater/utils.py:69 -msgid "Update error" -msgstr "Update-Fehler" +#: ../kano_updater/ui/available_window.py:106 +msgid "Download the latest Kano OS" +msgstr "" -#: ../kano_updater/utils.py:329 -msgid "kano-updater must be executed with root privileges" -msgstr "kano-updater benötigt Root-Rechte" +#: ../kano_updater/ui/available_window.py:107 +msgid "Download" +msgstr "" -#: ../kano_updater_gui/text.py:12 -msgid "1. Downloading…" -msgstr "1. Vorbereitung…" +#: ../kano_updater/ui/available_window.py:127 +msgid "Almost there..." +msgstr "" -#: ../kano_updater_gui/text.py:13 +#: ../kano_updater/ui/available_window.py:128 msgid "" -"2. Updating\n" -"the updater…" +"Downloaded and ready to go! In a matter\n" +"of minutes your Kano will be fresher than ever" msgstr "" -"2. Updates für\n" -"den Updater…" -#: ../kano_updater_gui/text.py:14 -msgid "" -"3. Upgrading\n" -"Python…" +#: ../kano_updater/ui/available_window.py:130 +msgid "Install" msgstr "" -"3. Updates für\n" -"Python…" -#: ../kano_updater_gui/text.py:15 -msgid "" -"4. Optimizing\n" -"your Kano…" +#: ../kano_updater/ui/available_window.py:145 +msgid "Best time to update is now!" msgstr "" -"4. Verbesserungen\n" -"für Deinen Kano…" -#: ../kano_updater_gui/text.py:16 +#: ../kano_updater/ui/available_window.py:146 msgid "" -"5. Upgrading\n" -"your system…" +"Latest updates and content are ready to go! We\n" +"will make sure to Shutdown once we finish installing!" msgstr "" -"5. Updates für\n" -"Dein System…" -#: ../kano_updater_gui/text.py:17 -msgid "" -"6. Finishing\n" -"up…" -msgstr "6. Aufräumen…" +#: ../kano_updater/ui/available_window.py:148 +msgid "Update Now" +msgstr "Jetzt updaten" -#: ../kano_updater_gui/text.py:23 -msgid "Downloading…" -msgstr "Vorbereitung…" +#: ../kano_updater/ui/install_window.py:37 +msgid "Updater" +msgstr "Updater" -#: ../kano_updater_gui/text.py:24 -msgid "Updating the updater…" -msgstr "Updates für den Updater…" +#: ../kano_updater/ui/install_window.py:78 +msgid "The install quit unexpectedly" +msgstr "" -#: ../kano_updater_gui/text.py:25 -msgid "Upgrading Python…" -msgstr "Updates für Python…" +#: ../kano_updater/ui/install_window.py:79 +msgid "Please try again later" +msgstr "" -#: ../kano_updater_gui/text.py:26 -msgid "Optimizing your Kano…" -msgstr "Verbesserungen für Deinen Kano…" +#: ../kano_updater/ui/install_window.py:110 +msgid "No updates available" +msgstr "" -#: ../kano_updater_gui/text.py:27 -msgid "Upgrading your Operating System…" -msgstr "Updates für Dein Betriebssystem…" +#: ../kano_updater/ui/install_window.py:111 +msgid "Your system is already up to date" +msgstr "" -#: ../kano_updater_gui/text.py:28 -msgid "Finishing up…" -msgstr "Aufräumen…" +#: ../kano_updater/ui/install_window.py:130 +msgid "Update completed" +msgstr "" + +#: ../kano_updater/ui/install_window.py:161 +msgid "Error updating" +msgstr "" -#: ../kano_updater_gui/text.py:29 -msgid "System updated!" -msgstr "System auf neuestem Stand!" +#: ../kano_updater/ui/relaunch_window.py:32 +msgid "Updater Splash" +msgstr "" -#: ../kano_updater_gui/text.py:33 +#: ../kano_updater/ui/stage_text.py:32 msgid "" "In 1978, the fastest computer in the world was the Cray 1 — it cost $7 " "million and weighed as much as an average elephant! Your Kano is about 4 " @@ -196,7 +308,7 @@ msgstr "" "es mit der Welt. Oder komm zu http://world.kano.me und suche das " "weiße Kaninchen." -#: ../kano_updater_gui/text.py:45 +#: ../kano_updater/ui/stage_text.py:44 msgid "" "Computers can learn new ideas quickly. Right now, we're updating the Updater " "tool. Once this step is finished, the Updater will relaunch. How do " @@ -217,7 +329,7 @@ msgstr "" "und es sind über 10 Million drin. Die Schalter in Deinem Gehirn sind Zellen " "und heißen Neuronen. Jetzt gerade reden sie miteinander." -#: ../kano_updater_gui/text.py:58 +#: ../kano_updater/ui/stage_text.py:57 msgid "" "Python is one of the world's most popular programming languages. A " "programming language takes words that humans can understand, and translates " @@ -239,7 +351,7 @@ msgstr "" "Minecraft bauen, \"Gangnam Style\" von Youtube ziehen und Millionen US-" "Dollar an der New Yorker Börse bewegen." -#: ../kano_updater_gui/text.py:72 +#: ../kano_updater/ui/stage_text.py:71 msgid "" "The name \"Kano\" comes from Kanō Jigorō. He was a Japanese schoolteacher, " "inventor of the art of judo. His motto: Maximum efficiency, minimum effort. " @@ -262,7 +374,7 @@ msgstr "" "world.kano.me/projects. Und auf blog.kano.me lernst Du die " "Leute hinter Kano kennen." -#: ../kano_updater_gui/text.py:84 +#: ../kano_updater/ui/stage_text.py:83 msgid "" "Kano OS is an operating system, which means it connects all the programs " "together. This OS is based on Linux, whose code is open — that means that " @@ -281,7 +393,7 @@ msgstr "" "ISS die Robotersysteme steuert, damit die Astronauten ihr Essen nicht " "verlieren!" -#: ../kano_updater_gui/text.py:95 +#: ../kano_updater/ui/stage_text.py:94 msgid "" "We're almost done! With your Kano computer, you'll make awesome games, code " "your own music, stream videos around your house, tell stories, and much " @@ -294,7 +406,7 @@ msgstr "" "steht Dir zur Verfügung. Wenn Du coole neue Projekte von uns kriegen willst, " "schau doch mal rein unter" -#: ../kano_updater_gui/text.py:102 +#: ../kano_updater/ui/stage_text.py:101 msgid "" "Your Kano will now reboot!\n" "\n" @@ -304,26 +416,175 @@ msgstr "" "\n" "Bis gleich…" -#: ../kano_updater_gui/header.py:113 -msgid "Do not disconnect your Kano" -msgstr "Schalte Deinen Kano nicht ab" +#: ../kano_updater/ui/views/finish.py:23 +msgid "Update complete!" +msgstr "" + +#: ../kano_updater/ui/views/finish.py:34 +msgid "" +"Your Kano is up to date and \n" +"will automatically {} in 10 seconds" +msgstr "" + +#: ../kano_updater/ui/views/finish.py:39 +msgid "Press ENTER to {} now" +msgstr "" -#: ../kano_updater_gui/header.py:115 -msgid "Please stand by" -msgstr "Bitte warten" +#: ../kano_updater/ui/views/install.py:53 +msgid "Do you want to play a cool game instead? PRESS [J] TO LAUNCH!" +msgstr "" -#: ../lxpanel-plugin/kano_updater.c:249 -msgid "Update your system" -msgstr "Updates für Dein System" +#: ../kano_updater/ui/views/relaunch.py:24 +msgid "Relaunching the Updater" +msgstr "" -#: ../lxpanel-plugin/kano_updater.c:255 +#: ../kano_updater/ui/views/relaunch.py:27 +msgid "The Updater updated itself and is now starting again." +msgstr "" + +#: ../kano_updater/utils.py:296 +msgid "" +"We had a problem with the Update. Make sure you are connected to the " +"Internet, and give it another go.\n" +"\n" +"If you still have problems, we can help at http://help.kano.me" +msgstr "" +"Beim Update gab es ein Problem. Bitte prüfe die Internet-Verbindung und " +"versuche es noch einmal.\n" +"\n" +"Falls Du nicht weiterkommst, können wir Dir bei http://help.kano.me helfen." + +#: ../kano_updater/utils.py:301 +msgid "Update error" +msgstr "Update-Fehler" + +#: ../kano_updater/utils.py:564 +msgid "Error!" +msgstr "Fehler!" + +#: ../kano_updater/utils.py:565 +msgid "kano-updater must be executed with root privileges" +msgstr "kano-updater benötigt Root-Rechte" + +#: ../lxpanel-plugin/kano_updater.c:53 ../lxpanel-plugin/kano_updater.c:445 +#: ../lxpanel-plugin/kano_updater.c:537 +msgid "Kano Updater" +msgstr "Kano Updater" + +#: ../lxpanel-plugin/kano_updater.c:448 +msgid "Download updates" +msgstr "" + +#: ../lxpanel-plugin/kano_updater.c:451 +msgid "Download in progress ..." +msgstr "" + +#: ../lxpanel-plugin/kano_updater.c:454 +msgid "Install updates" +msgstr "" + +#: ../lxpanel-plugin/kano_updater.c:457 +msgid "Installation in progress ..." +msgstr "" + +#: ../lxpanel-plugin/kano_updater.c:460 msgid "No updates found" msgstr "Keine Updates gefunden" -#: ../lxpanel-plugin/kano_updater.c:260 +#: ../lxpanel-plugin/kano_updater.c:462 msgid "Check again" msgstr "Nochmal prüfen" -#: ../lxpanel-plugin/kano_updater.c:339 +#: ../lxpanel-plugin/kano_updater.c:538 msgid "A reminder to keep your Kano OS up-to-date." msgstr "Hält Kano OS auf dem neuesten Stand." + +#~ msgid "Time to update!" +#~ msgstr "Zeit für ein Update!" + +#~ msgid "Take a break! Updating takes about 15 minutes" +#~ msgstr "Mach mal Pause! Das Update dauert etwa 15 Minuten" + +#~ msgid "Update now" +#~ msgstr "Jetzt updaten" + +#~ msgid "You need to run kano-updater from a GUI session!" +#~ msgstr "Du musst kano-updater aus der GUI heraus starten!" + +#~ msgid "Let's update!" +#~ msgstr "Ein Update!" + +#~ msgid "Your Kano is about to get better" +#~ msgstr "Dein Kano wird jetzt verbessert" + +#~ msgid "Internet connection lost!" +#~ msgstr "Keine Internet-Verbindung!" + +#~ msgid "Error with downloading packages!" +#~ msgstr "Konnte Pakete nicht herunterladen!" + +#~ msgid "1. Downloading…" +#~ msgstr "1. Vorbereitung…" + +#~ msgid "" +#~ "2. Updating\n" +#~ "the updater…" +#~ msgstr "" +#~ "2. Updates für\n" +#~ "den Updater…" + +#~ msgid "" +#~ "3. Upgrading\n" +#~ "Python…" +#~ msgstr "" +#~ "3. Updates für\n" +#~ "Python…" + +#~ msgid "" +#~ "4. Optimizing\n" +#~ "your Kano…" +#~ msgstr "" +#~ "4. Verbesserungen\n" +#~ "für Deinen Kano…" + +#~ msgid "" +#~ "5. Upgrading\n" +#~ "your system…" +#~ msgstr "" +#~ "5. Updates für\n" +#~ "Dein System…" + +#~ msgid "" +#~ "6. Finishing\n" +#~ "up…" +#~ msgstr "6. Aufräumen…" + +#~ msgid "Downloading…" +#~ msgstr "Vorbereitung…" + +#~ msgid "Updating the updater…" +#~ msgstr "Updates für den Updater…" + +#~ msgid "Upgrading Python…" +#~ msgstr "Updates für Python…" + +#~ msgid "Optimizing your Kano…" +#~ msgstr "Verbesserungen für Deinen Kano…" + +#~ msgid "Upgrading your Operating System…" +#~ msgstr "Updates für Dein Betriebssystem…" + +#~ msgid "Finishing up…" +#~ msgstr "Aufräumen…" + +#~ msgid "System updated!" +#~ msgstr "System auf neuestem Stand!" + +#~ msgid "Do not disconnect your Kano" +#~ msgstr "Schalte Deinen Kano nicht ab" + +#~ msgid "Please stand by" +#~ msgstr "Bitte warten" + +#~ msgid "Update your system" +#~ msgstr "Updates für Dein System" diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 00000000..1228cd47 --- /dev/null +++ b/po/ja.po @@ -0,0 +1,454 @@ +# Japanese translations for kano-updater package. +# Copyright (C) 2016 Kano Computing Ltd. +# This file is distributed under the same license as the kano-updater package. +# Choppin Antoine , 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: kano-updater\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-06-14 21:34+0900\n" +"PO-Revision-Date: 2016-06-03 22:59+0900\n" +"Last-Translator: Choppin Antoine \n" +"Language-Team: Japanese\n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ../bin/kano-updater:153 +msgid "Administrator priviledges are required to perform this operation" +msgstr "この操作を行うには、管理者権限が必要です" + +#: ../bin/kano-updater:154 ../bin/kano-updater:169 +msgid "ERROR" +msgstr "エラー" + +#: ../bin/kano-updater:167 +msgid "An instance of Kano Updater is already running" +msgstr "Kanoアップデーターが既に稼働中" + +#: ../bin/kano-updater:263 +msgid "Time check passed, doing update check!" +msgstr "確認時間が過ぎました。アップデートを確認します。" + +#: ../bin/kano-updater:265 +msgid "Not enough time passed for a new update check!" +msgstr "時間があまり経っていないのでアップデートの確認は不要です。" + +#: ../bin/kano-updater:290 +msgid "Urgent updates available." +msgstr "緊急なアップデートが取得可能です。" + +#: ../bin/kano-updater:295 +msgid "Updates available." +msgstr "アップデートが取得可能です。" + +#: ../bin/kano-updater:312 +msgid "No updates found." +msgstr "アップデートは見つかりません。" + +#: ../kano_updater/apt_wrapper.py:54 +msgid "Updating apt sources" +msgstr "APTソースをアップデート中" + +#: ../kano_updater/apt_wrapper.py:55 +msgid "Initialising apt cache" +msgstr "APTキャッシュを初期化中" + +#: ../kano_updater/apt_wrapper.py:125 ../kano_updater/apt_wrapper.py:152 +msgid "Downloading packages" +msgstr "パッケージをダウンロード中" + +#: ../kano_updater/apt_wrapper.py:126 ../kano_updater/apt_wrapper.py:153 +msgid "Installing packages" +msgstr "パッケージをインストール中" + +#: ../kano_updater/apt_wrapper.py:230 +msgid "Cleaning dpkg journal" +msgstr "DPKGジャーナル掃除中" + +#: ../kano_updater/apt_wrapper.py:232 +msgid "Fixing broken packages" +msgstr "壊れたパッケージを修理中" + +#: ../kano_updater/auxiliary_tasks.py:21 +msgid "Updating home folders from template" +msgstr "ホームフォルダーをテンプレートからアップデート中" + +#: ../kano_updater/auxiliary_tasks.py:23 +msgid "Refreshing Kano Apps" +msgstr "Kanoアプリを更新中" + +#: ../kano_updater/auxiliary_tasks.py:25 +msgid "Refreshing the desktop" +msgstr "デスクトップを更新中" + +#: ../kano_updater/auxiliary_tasks.py:27 +msgid "Expanding filesystem partitions" +msgstr "ファイルシステムのパーテーションを拡張中" + +#: ../kano_updater/auxiliary_tasks.py:29 +msgid "Removing unnecessary kano-content entries" +msgstr "Kanoコンテンツの不要な項目を削除中" + +#: ../kano_updater/auxiliary_tasks.py:31 +msgid "Syncing" +msgstr "同期中" + +#: ../kano_updater/commands/check.py:44 +msgid "No need to check for updates" +msgstr "アップデートの確認は不要です" + +#: ../kano_updater/commands/check.py:57 +msgid "Must have internet to check for updates" +msgstr "アップデートを確認するにはインターネットが必要です" + +#: ../kano_updater/commands/check.py:65 ../kano_updater/commands/download.py:82 +msgid "Could not connect to the download server" +msgstr "ダウンロードサーバーに接続が失敗しました" + +#: ../kano_updater/commands/download.py:37 +msgid "Checking for updates" +msgstr "アップデートを確認中" + +#: ../kano_updater/commands/download.py:43 +#: ../kano_updater/commands/install.py:82 +msgid "Downloading updates" +msgstr "アップデートをダウンロード中" + +#: ../kano_updater/commands/download.py:52 +#: ../kano_updater/ui/install_window.py:132 +msgid "No updates to download" +msgstr "ダウンロードするアップデートがありません" + +#: ../kano_updater/commands/download.py:58 +msgid "Updates have been downloaded already" +msgstr "アップデートは既にダウンロードされました" + +#: ../kano_updater/commands/download.py:64 +msgid "The download is already running" +msgstr "ダウンロードは既に走っています" + +#: ../kano_updater/commands/download.py:70 +msgid "Updates are already being installed" +msgstr "アップデートは既にインストール中です" + +#: ../kano_updater/commands/download.py:76 +msgid "Must have internet to download the updates" +msgstr "アップデートをダウンロードするにはインターネットが必要です" + +#: ../kano_updater/commands/install.py:49 +msgid "Only {}MB free, at least 1GB is needed." +msgstr "1GB必要ですが、空き容量は{}MBしかありません。" + +#: ../kano_updater/commands/install.py:88 +msgid "Installing updates" +msgstr "アップデートをインストール中" + +#: ../kano_updater/commands/install.py:189 +msgid "Installing Hotfix" +msgstr "ホットフィックスをインストール中" + +#: ../kano_updater/commands/install.py:216 +msgid "Starting Update" +msgstr "アップデートを開始します" + +#: ../kano_updater/commands/install.py:222 +msgid "Updating Itself" +msgstr "自己アップデート中" + +#: ../kano_updater/commands/install.py:228 +msgid "Running The Preupdate Scripts" +msgstr "アップデートの前処理を実行中" + +#: ../kano_updater/commands/install.py:234 +msgid "Updating Pip Packages" +msgstr "Pipパッケージをアップデート中" + +#: ../kano_updater/commands/install.py:240 +msgid "Updating Deb Packages" +msgstr "Debパッケージをアップデート中" + +#: ../kano_updater/commands/install.py:246 +msgid "Running The Postupdate Scripts" +msgstr "アップデートの後処理を実行中" + +#: ../kano_updater/commands/install.py:273 +msgid "" +"Unfortunately, your version of Kano OS is too old to be updated through the " +"updater." +msgstr "" +"まことに申し訳ありませんが、アップデーターでアップデートするにはKano OSが" +"古すぎます。" + +#: ../kano_updater/commands/install.py:275 +msgid "You will need to download the image of the OS and reflash your SD card." +msgstr "OSイメージをダウンロードし、SDカードを焼き直す必要があります。" + +#: ../kano_updater/commands/install.py:297 +msgid "The updater has been updated, relaunching." +msgstr "アップデーターがアップデートされました。再起動します。" + +#: ../kano_updater/commands/install.py:307 +msgid "The pre-update tasks failed." +msgstr "アップデートの前処理が失敗しました。" + +#: ../kano_updater/commands/install.py:324 +msgid "The post-update tasks failed." +msgstr "アップデートの後処理が失敗しました。" + +#: ../kano_updater/ui/available_window.py:67 +msgid "Later" +msgstr "後で" + +#: ../kano_updater/ui/available_window.py:96 +msgid "The action needs to be implemented" +msgstr "アクションを実装する必要があります" + +#: ../kano_updater/ui/available_window.py:104 +#: ../kano_updater/ui/available_window.py:126 +#: ../kano_updater/ui/available_window.py:144 +msgid "New Update" +msgstr "新しいアップデート" + +#: ../kano_updater/ui/available_window.py:105 +msgid "Get new powers" +msgstr "新しい力を取得する" + +#: ../kano_updater/ui/available_window.py:106 +msgid "Download the latest Kano OS" +msgstr "最新のKano OSをダウンロードする" + +#: ../kano_updater/ui/available_window.py:107 +msgid "Download" +msgstr "ダウンロード" + +#: ../kano_updater/ui/available_window.py:127 +msgid "Almost there..." +msgstr "もう少しで終わりです…" + +#: ../kano_updater/ui/available_window.py:128 +msgid "" +"Downloaded and ready to go! In a matter\n" +"of minutes your Kano will be fresher than ever" +msgstr "" +"ダウンロードが終わると準備完了!数分経ったら\n" +"君のKanoが今までに見たことない若返りします。" + +#: ../kano_updater/ui/available_window.py:130 +msgid "Install" +msgstr "インストール" + +#: ../kano_updater/ui/available_window.py:145 +msgid "Best time to update is now!" +msgstr "アップデートする一番良い時期は、今!" + +#: ../kano_updater/ui/available_window.py:146 +msgid "" +"Latest updates and content are ready to go! We\n" +"will make sure to Shutdown once we finish installing!" +msgstr "" +"最新のアップデートとコンテンツが準備されます!\n" +"インストール終了後に再起動します!" + +#: ../kano_updater/ui/available_window.py:148 +msgid "Update Now" +msgstr "今アップデートする" + +#: ../kano_updater/ui/install_window.py:37 +msgid "Updater" +msgstr "アップデーター" + +#: ../kano_updater/ui/install_window.py:78 +msgid "The install quit unexpectedly" +msgstr "インストールが予告無く終了しました" + +#: ../kano_updater/ui/install_window.py:79 +msgid "Please try again later" +msgstr "後でもう一度試してください" + +#: ../kano_updater/ui/install_window.py:110 +msgid "No updates available" +msgstr "アップデートはありません" + +#: ../kano_updater/ui/install_window.py:111 +msgid "Your system is already up to date" +msgstr "システムは既に最新状況です" + +#: ../kano_updater/ui/install_window.py:130 +msgid "Update completed" +msgstr "アップデート完了" + +#: ../kano_updater/ui/install_window.py:161 +msgid "Error updating" +msgstr "アップデート失敗" + +#: ../kano_updater/ui/relaunch_window.py:32 +msgid "Updater Splash" +msgstr "アップデータースプラッシュ" + +#: ../kano_updater/ui/stage_text.py:32 +msgid "" +"In 1978, the fastest computer in the world was the Cray 1 — it cost $7 " +"million and weighed as much as an average elephant! Your Kano is about 4 " +"times faster than the Cray 1. To keep it up to speed, we're downloading new " +"games, apps and projects, and streamlining the computer's memory. This " +"should take about 15 minutes. In the meantime, why not take a phone picture " +"of your Kano? Send it to us at hello@kano.me and we'll share it with " +"the world. You can also search for the white rabbit on http://world.kano." +"me" +msgstr "" + +#: ../kano_updater/ui/stage_text.py:44 +msgid "" +"Computers can learn new ideas quickly. Right now, we're updating the Updater " +"tool. Once this step is finished, the Updater will relaunch. How do " +"computers think? They are made of electrical switches, connected together in " +"clever ways. If a switch is on, that means \"yes\" or \"1\"; if it's off, " +"that means \"no\" or \"0\". These little yes-no switches become a binary " +"code — for words, sounds, rules, and more. Your computer has over 10 million " +"tiny switches, called transistors, in its brain. In your brain, these " +"switches are cells called neurons. They're talking to each other right now." +msgstr "" + +#: ../kano_updater/ui/stage_text.py:57 +msgid "" +"Python is one of the world's most popular programming languages. A " +"programming language takes words that humans can understand, and translates " +"them into instructions that the computer's switches can understand. A good " +"\"make a sandwich\" program would go through all the steps necessary to get " +"the sandwich made, from \"grab bread\" to \"pick up knife\" to \"put it on a " +"plate.\" The computer follows a program in Python the way a cook follows a " +"recipe in English. Python code can build volcanos in Minecraft, grab " +"\"Gangnam Style\" from YouTube, and move millions of dollars in the New York " +"Stock Exchange." +msgstr "" + +#: ../kano_updater/ui/stage_text.py:71 +msgid "" +"The name \"Kano\" comes from Kanō Jigorō. He was a Japanese schoolteacher, " +"inventor of the art of judo. His motto: Maximum efficiency, minimum effort. " +"In Greek, Kano means \"I make\". (Kano is also the largest city in Northern " +"Nigeria.) What makes Kano different to other computers? All of the ideas in " +"its brain are open for you to see. Just visit github.com/KanoComputing to see the code. Kano can also change forms… You can turn it into a " +"robot, server, radio, and more. Visit world.kano.me/projects for " +"powerup ideas. Want a look inside Kano HQ? Hang with our wizards at blog." +"kano.me" +msgstr "" + +#: ../kano_updater/ui/stage_text.py:83 +msgid "" +"Kano OS is an operating system, which means it connects all the programs " +"together. This OS is based on Linux, whose code is open — that means that " +"it's free for anyone to download, change or even sell. Its code is written " +"by hobbyists and makers worldwide, not just professionals. Kano uses Debian, " +"a fun and powerful \"distribution\" of Linux which the International Space " +"Station also uses to run its robotic systems — to keep the astronauts from " +"losing their lunch!" +msgstr "" + +#: ../kano_updater/ui/stage_text.py:94 +msgid "" +"We're almost done! With your Kano computer, you'll make awesome games, code " +"your own music, stream videos around your house, tell stories, and much " +"more. Your computer is open, and its powers are at your command. If you want " +"to get new cool projects from us each week, join the community at" +msgstr "" + +#: ../kano_updater/ui/stage_text.py:101 +msgid "" +"Your Kano will now reboot!\n" +"\n" +"See you in a while…" +msgstr "" +"君のKanoは間も無く再起動します!\n" +"\n" +"また後ほど…" + +#: ../kano_updater/ui/views/finish.py:23 +msgid "Update complete!" +msgstr "アップデート完了!" + +#: ../kano_updater/ui/views/finish.py:34 +msgid "" +"Your Kano is up to date and \n" +"will automatically {} in 10 seconds" +msgstr "" +"君のKanoは最新状況です。\n" +"10秒後に自動的に{}されます。" + +#: ../kano_updater/ui/views/finish.py:39 +msgid "Press ENTER to {} now" +msgstr "{}するにはENTERを押してください" + +#: ../kano_updater/ui/views/install.py:53 +msgid "Do you want to play a cool game instead? PRESS [J] TO LAUNCH!" +msgstr "それより、面白いゲームをやってみますか?スタートするには[J]を!" + +#: ../kano_updater/ui/views/relaunch.py:24 +msgid "Relaunching the Updater" +msgstr "アップデーターを再起動" + +#: ../kano_updater/ui/views/relaunch.py:27 +msgid "The Updater updated itself and is now starting again." +msgstr "アップデーターがアップデーターされ、間も無く再起動します。" + +#: ../kano_updater/utils.py:296 +msgid "" +"We had a problem with the Update. Make sure you are connected to the " +"Internet, and give it another go.\n" +"\n" +"If you still have problems, we can help at http://help.kano.me" +msgstr "" +"アップデート中に問題が発生しました。インターネットに接続していることを" +"今一度確認して、もう一度試してください。\n" +"\n" +"それでもうまくいかない場合は、http://help.kano.meでヘルプを求めてください。" + +#: ../kano_updater/utils.py:301 +msgid "Update error" +msgstr "アップデートエラー" + +#: ../kano_updater/utils.py:564 +msgid "Error!" +msgstr "エラー!" + +#: ../kano_updater/utils.py:565 +msgid "kano-updater must be executed with root privileges" +msgstr "kano-updaterはroot権限で実行する必要があります" + +#: ../lxpanel-plugin/kano_updater.c:53 ../lxpanel-plugin/kano_updater.c:445 +#: ../lxpanel-plugin/kano_updater.c:537 +msgid "Kano Updater" +msgstr "Kanoアップデーター" + +#: ../lxpanel-plugin/kano_updater.c:448 +msgid "Download updates" +msgstr "アップデートをダウンロードする" + +#: ../lxpanel-plugin/kano_updater.c:451 +msgid "Download in progress ..." +msgstr "ダウンロード中…" + +#: ../lxpanel-plugin/kano_updater.c:454 +msgid "Install updates" +msgstr "アップデートをインストールする" + +#: ../lxpanel-plugin/kano_updater.c:457 +msgid "Installation in progress ..." +msgstr "インストール中…" + +#: ../lxpanel-plugin/kano_updater.c:460 +msgid "No updates found" +msgstr "アップデートは見つかりません" + +#: ../lxpanel-plugin/kano_updater.c:462 +msgid "Check again" +msgstr "もう一度確認する" + +#: ../lxpanel-plugin/kano_updater.c:538 +msgid "A reminder to keep your Kano OS up-to-date." +msgstr "Kano OSを常に最新に保っておきましょう。" From be5fb82a19d52366c28acb02607450298f10a515 Mon Sep 17 00:00:00 2001 From: Antoine Choppin Date: Wed, 15 Jun 2016 21:09:15 +0900 Subject: [PATCH 02/11] Debug on Kano, and fix issues --- bin/kano-updater | 4 ++-- kano_updater/apt_progress_wrapper.py | 12 +++++++----- kano_updater/apt_wrapper.py | 12 ++++++------ kano_updater/ui/progress.py | 6 +++--- kano_updater/ui/views/install.py | 7 ++++--- 5 files changed, 22 insertions(+), 19 deletions(-) diff --git a/bin/kano-updater b/bin/kano-updater index 04a5cab1..8311ffb6 100755 --- a/bin/kano-updater +++ b/bin/kano-updater @@ -151,7 +151,7 @@ def run_install_ind_pkg(package): def main(): msg = _('Administrator priviledges are required to perform this operation') - enforce_root("{}: {}".format(_('ERROR'), msg)) + enforce_root(u"{}: {}".format(_('ERROR'), msg)) # docopt wasn't installed by default prior Kano OS 1.3.3 # It needs to be installed to make sure the updater runs @@ -166,7 +166,7 @@ def main(): if not args['relaunch-splash'] and is_running(): msg = _('An instance of Kano Updater is already running') logger.error(msg) - sys.stderr.write("{}: {}\n".format(_('ERROR'), msg)) + sys.stderr.write(u"{}: {}\n".format(_('ERROR'), msg)) sys.exit(1) # This is registered after the test for whether an updater was already diff --git a/kano_updater/apt_progress_wrapper.py b/kano_updater/apt_progress_wrapper.py index 844ede1e..5846242e 100644 --- a/kano_updater/apt_progress_wrapper.py +++ b/kano_updater/apt_progress_wrapper.py @@ -36,11 +36,11 @@ def fetch(self, item_desc): def done(self, item_desc): super(AptDownloadProgress, self).done(item_desc) - msg = "Downloading {}".format(item_desc.shortdesc) + msg = _("Downloading {}").format(item_desc.shortdesc) # Show the long description too if it's not too long if len(item_desc.description) < 40: - msg = "{} {}".format(msg, item_desc.description) + msg = u"{} {}".format(msg, item_desc.description) self._updater_progress.next_step(self._phase_name, msg) @@ -71,9 +71,11 @@ def __init__(self, updater_progress, ops=[]): self._updater_progress.init_steps(op, 100) def _get_op_key(self, op_name): - template = "{prefix}-{{}}".format(prefix=self._phase_name) + template = u"{prefix}-{{}}".format(prefix=self._phase_name) - return template.format(op_name).lower().replace(' ', '-') + op_name = op_name.decode('utf-8') + print "_get_op_key " + op_name + return template.format(op_name).lower().replace(u' ', u'-') def _next_phase(self): if len(self._ops) <= 1: @@ -106,7 +108,7 @@ def conffile(self, current, new): print 'conffile', current, new def error(self, pkg, errormsg): - self._updater_progress.fail("{}: {}".format(pkg, errormsg)) + self._updater_progress.fail(u"{}: {}".format(pkg, errormsg)) def processing(self, pkg, stage): print 'processing', pkg, stage diff --git a/kano_updater/apt_wrapper.py b/kano_updater/apt_wrapper.py index f081d16b..8efc58cd 100644 --- a/kano_updater/apt_wrapper.py +++ b/kano_updater/apt_wrapper.py @@ -46,9 +46,9 @@ def update(self, progress, sources_list=None): if not src.disabled and not src.invalid: src_count += len(src.comps) + 1 - updating_sources = "{}-updating-apt-sources".format( + updating_sources = u"{}-updating-apt-sources".format( progress.get_current_phase().name) - cache_init = "{}-apt-cache-init".format( + cache_init = u"{}-apt-cache-init".format( progress.get_current_phase().name) progress.split( Phase(updating_sources, _('Updating apt sources')), @@ -119,8 +119,8 @@ def upgrade(self, packages, progress=None, priority=Priority.NONE): pkg.mark_upgrade() phase_name = progress.get_current_phase().name - download = "{}-downloading".format(phase_name) - install = "{}-installing".format(phase_name) + download = u"{}-downloading".format(phase_name) + install = u"{}-installing".format(phase_name) progress.split( Phase(download, _("Downloading packages")), Phase(install, _("Installing packages")) @@ -146,8 +146,8 @@ def upgrade_all(self, progress=None, priority=Priority.NONE): self._cache.upgrade(dist_upgrade=True) phase_name = progress.get_current_phase().name - download = "{}-downloading".format(phase_name) - install = "{}-installing".format(phase_name) + download = u"{}-downloading".format(phase_name) + install = u"{}-installing".format(phase_name) progress.split( Phase(download, _("Downloading packages")), Phase(install, _("Installing packages")) diff --git a/kano_updater/ui/progress.py b/kano_updater/ui/progress.py index 2e1b7bf8..7bc97c8b 100644 --- a/kano_updater/ui/progress.py +++ b/kano_updater/ui/progress.py @@ -24,17 +24,17 @@ def _change(self, phase, msg): phase.get_main_phase().label, phase.get_main_phase().name, msg) def _error(self, phase, msg): - err_msg = "Error {} - {}".format(phase.label.lower(), msg) + err_msg = u"Error {} - {}".format(phase.label.lower(), msg) GLib.idle_add(self._window.error, err_msg) def _abort(self, phase, msg): kill_flappy_judoka() - err_msg = "{} - {}".format(phase.label.lower(), msg) + err_msg = u"{} - {}".format(phase.label.lower(), msg) GLib.idle_add(self._window.error, err_msg) def _done(self, msg): GLib.idle_add(self._window.update_progress, 100, - "Complete!", '', msg) + _("Complete!"), '', msg) def _prompt(self, msg, question, answers): GLib.idle_add(self._window.user_prompt, msg, question, answers) diff --git a/kano_updater/ui/views/install.py b/kano_updater/ui/views/install.py index d300883c..545d8dfc 100644 --- a/kano_updater/ui/views/install.py +++ b/kano_updater/ui/views/install.py @@ -126,12 +126,13 @@ def update_progress(self, percent, phase_name, msg, sub_msg=''): current_text = STAGE_TEXT[int(idx)] self._psa.set_markup(current_text) - if self._progress_phase.get_text() != msg: - self._progress_phase.set_text(msg) + #if self._progress_phase.get_text() != msg: + # self._progress_phase.set_text(msg) + self._progress_phase.set_text(msg) self._progress_subphase.set_text(sub_msg) self._percent_display.set_text( - "Time flies - {}% already!".format(percent)) + _("Time flies - {}% already!").format(percent)) def hide_game_play_label(self): # this method needs to be called after show_all From 48e07565b886b0f9a6da25c8fec26ce9b6ee0474 Mon Sep 17 00:00:00 2001 From: Antoine Choppin Date: Wed, 15 Jun 2016 21:12:40 +0900 Subject: [PATCH 03/11] Fix issues --- bin/kano-updater | 4 ++-- kano_updater/commands/download.py | 22 +++++++++--------- kano_updater/ui/views/finish.py | 8 +++---- kano_updater/ui/views/install.py | 2 +- po/de.po | 14 +++++++++++- po/ja.po | 37 +++++++++++++++++++++++-------- 6 files changed, 59 insertions(+), 28 deletions(-) diff --git a/bin/kano-updater b/bin/kano-updater index 04a5cab1..8311ffb6 100755 --- a/bin/kano-updater +++ b/bin/kano-updater @@ -151,7 +151,7 @@ def run_install_ind_pkg(package): def main(): msg = _('Administrator priviledges are required to perform this operation') - enforce_root("{}: {}".format(_('ERROR'), msg)) + enforce_root(u"{}: {}".format(_('ERROR'), msg)) # docopt wasn't installed by default prior Kano OS 1.3.3 # It needs to be installed to make sure the updater runs @@ -166,7 +166,7 @@ def main(): if not args['relaunch-splash'] and is_running(): msg = _('An instance of Kano Updater is already running') logger.error(msg) - sys.stderr.write("{}: {}\n".format(_('ERROR'), msg)) + sys.stderr.write(u"{}: {}\n".format(_('ERROR'), msg)) sys.exit(1) # This is registered after the test for whether an updater was already diff --git a/kano_updater/commands/download.py b/kano_updater/commands/download.py index 3e41e915..7aa6ee4e 100644 --- a/kano_updater/commands/download.py +++ b/kano_updater/commands/download.py @@ -87,11 +87,11 @@ def download(progress=None, gui=True): # show a dialog informing the user of an automatic urgent download if status.is_urgent and not gui: # TODO: mute notifications? - title = "Updater" - description = "Kano HQ has just released a critical update that will repair" \ - " some important things on your system! We'll download these automatically," \ - " and ask you to schedule the install when they finish." - buttons = "OK:green:1" + title = _("Updater") + description = _("Kano HQ has just released a critical update that will repair" +\ + " some important things on your system! We'll download these automatically," +\ + " and ask you to schedule the install when they finish.") + buttons = _("OK:green:1") dialog_proc = show_kano_dialog(title, description, buttons, blocking=False) status.state = UpdaterStatus.DOWNLOADING_UPDATES @@ -127,19 +127,19 @@ def do_download(progress, status, priority=Priority.NONE, dialog_proc=None): progress.split( Phase( 'downloading-pip-pkgs', - 'Downloading Python packages', + _('Downloading Python packages'), 10, is_main=True ), Phase( 'updating-sources', - 'Updating apt sources', + _('Updating apt sources'), 40, is_main=True ), Phase( 'downloading-apt-packages', - 'Downloading apt packages', + _('Downloading apt packages'), 50, is_main=True ) @@ -148,7 +148,7 @@ def do_download(progress, status, priority=Priority.NONE, dialog_proc=None): _cache_pip_packages(progress, priority=priority) _cache_deb_packages(progress, priority=priority) - progress.finish('Done downloading') + progress.finish(_('Done downloading')) # kill the dialog if it is still on if dialog_proc: @@ -177,7 +177,7 @@ def _cache_pip_packages(progress, priority=Priority.NONE): progress.init_steps(phase_name, len(packages)) for pkg in packages: - progress.next_step(phase_name, "Downloading {}".format(pkg)) + progress.next_step(phase_name, _("Downloading {}").format(pkg)) # The `--no-install` parameter has been deprecated in pip. However, the # version of pip in wheezy doesn't yet support the new approach which @@ -188,7 +188,7 @@ def _cache_pip_packages(progress, priority=Priority.NONE): # TODO: abort the install? if not success: - msg = "Downloading the '{}' pip package failed.".format(pkg) + msg = _("Downloading the '{}' pip package failed.").format(pkg) logger.error(msg) diff --git a/kano_updater/ui/views/finish.py b/kano_updater/ui/views/finish.py index ce896ca6..ebde5e3d 100644 --- a/kano_updater/ui/views/finish.py +++ b/kano_updater/ui/views/finish.py @@ -27,16 +27,16 @@ def __init__(self): self._shutdown_scheduled = status.is_shutdown if self._shutdown_scheduled: - finish_method = 'shutdown' + finish_method = _('shutdown') else: - finish_method = 'restart' + finish_method = _('restart') info = Gtk.Label(_('Your Kano is up to date and \n' - 'will automatically {} in 10 seconds'.format(finish_method))) + 'will automatically {} in 10 seconds').format(finish_method)) info.set_justify(Gtk.Justification.CENTER) info.get_style_context().add_class('countdown') - instructions = Gtk.Label(_('Press ENTER to {} now'.format(finish_method))) + instructions = Gtk.Label(_('Press ENTER to {} now').format(finish_method)) instructions.get_style_context().add_class('finish-now') self._main_grid.attach(complete, 0, 1, 1, 1) diff --git a/kano_updater/ui/views/install.py b/kano_updater/ui/views/install.py index d300883c..1e90eb62 100644 --- a/kano_updater/ui/views/install.py +++ b/kano_updater/ui/views/install.py @@ -131,7 +131,7 @@ def update_progress(self, percent, phase_name, msg, sub_msg=''): self._progress_subphase.set_text(sub_msg) self._percent_display.set_text( - "Time flies - {}% already!".format(percent)) + _("Time flies - {}% already!").format(percent)) def hide_game_play_label(self): # this method needs to be called after show_all diff --git a/po/de.po b/po/de.po index 20bf364a..0f7a7a9f 100644 --- a/po/de.po +++ b/po/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: kano-updater\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-14 21:34+0900\n" +"POT-Creation-Date: 2016-06-15 00:00+0900\n" "PO-Revision-Date: 2015-02-13 17:16+0100\n" "Last-Translator: \n" "Language-Team: German \n" @@ -420,6 +420,14 @@ msgstr "" msgid "Update complete!" msgstr "" +#: ../kano_updater/ui/views/finish.py:30 +msgid "shutdown" +msgstr "" + +#: ../kano_updater/ui/views/finish.py:32 +msgid "restart" +msgstr "" + #: ../kano_updater/ui/views/finish.py:34 msgid "" "Your Kano is up to date and \n" @@ -434,6 +442,10 @@ msgstr "" msgid "Do you want to play a cool game instead? PRESS [J] TO LAUNCH!" msgstr "" +#: ../kano_updater/ui/views/install.py:134 +msgid "Time flies - {}% already!" +msgstr "" + #: ../kano_updater/ui/views/relaunch.py:24 msgid "Relaunching the Updater" msgstr "" diff --git a/po/ja.po b/po/ja.po index 1228cd47..3669f92a 100644 --- a/po/ja.po +++ b/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: kano-updater\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-14 21:34+0900\n" +"POT-Creation-Date: 2016-06-15 00:00+0900\n" "PO-Revision-Date: 2016-06-03 22:59+0900\n" "Last-Translator: Choppin Antoine \n" "Language-Team: Japanese\n" @@ -180,8 +180,8 @@ msgid "" "Unfortunately, your version of Kano OS is too old to be updated through the " "updater." msgstr "" -"まことに申し訳ありませんが、アップデーターでアップデートするにはKano OSが" -"古すぎます。" +"まことに申し訳ありませんが、アップデーターでアップデートするにはKano OSが古す" +"ぎます。" #: ../kano_updater/commands/install.py:275 msgid "You will need to download the image of the OS and reflash your SD card." @@ -235,7 +235,7 @@ msgid "" "of minutes your Kano will be fresher than ever" msgstr "" "ダウンロードが終わると準備完了!数分経ったら\n" -"君のKanoが今までに見たことない若返りします。" +"Kanoが今までに見たことない若返りします。" #: ../kano_updater/ui/available_window.py:130 msgid "Install" @@ -300,6 +300,13 @@ msgid "" "the world. You can also search for the white rabbit on http://world.kano." "me" msgstr "" +"1978年に一番早いコンピューターはCray 1(クレイ・ワン)で、おおよそ700万ドル" +"でとても高くて、重さは像と同じくらいだった! それに比べて、KanoはCray 1より" +"約4倍速いんだ。 今、Kanoを最新の状態に保つために、新しいゲームやアプリや" +"プロジェクトをダウンロードし、コンピューターのメモリーに伝達している。" +"15分くらい掛かる予定です。その間、Kanoの写真を撮ってみませんか?" +"また、写真をhello@kano.meに送ってもらえれば、世界と共有しちゃう!" +"その他に、http://world.kano.meで白いうさぎさんを探してみては?" #: ../kano_updater/ui/stage_text.py:44 msgid "" @@ -364,7 +371,7 @@ msgid "" "\n" "See you in a while…" msgstr "" -"君のKanoは間も無く再起動します!\n" +"Kanoは間も無く再起動します!\n" "\n" "また後ほど…" @@ -372,12 +379,20 @@ msgstr "" msgid "Update complete!" msgstr "アップデート完了!" +#: ../kano_updater/ui/views/finish.py:30 +msgid "shutdown" +msgstr "シャットダウン" + +#: ../kano_updater/ui/views/finish.py:32 +msgid "restart" +msgstr "再起動" + #: ../kano_updater/ui/views/finish.py:34 msgid "" "Your Kano is up to date and \n" "will automatically {} in 10 seconds" msgstr "" -"君のKanoは最新状況です。\n" +"Kanoは最新状況です。\n" "10秒後に自動的に{}されます。" #: ../kano_updater/ui/views/finish.py:39 @@ -386,7 +401,11 @@ msgstr "{}するにはENTERを押してください" #: ../kano_updater/ui/views/install.py:53 msgid "Do you want to play a cool game instead? PRESS [J] TO LAUNCH!" -msgstr "それより、面白いゲームをやってみますか?スタートするには[J]を!" +msgstr "待っている間に、面白いゲームをやってみませんか? スタートするには[J]を!" + +#: ../kano_updater/ui/views/install.py:134 +msgid "Time flies - {}% already!" +msgstr "早い! 既に{}%終わってます" #: ../kano_updater/ui/views/relaunch.py:24 msgid "Relaunching the Updater" @@ -403,8 +422,8 @@ msgid "" "\n" "If you still have problems, we can help at http://help.kano.me" msgstr "" -"アップデート中に問題が発生しました。インターネットに接続していることを" -"今一度確認して、もう一度試してください。\n" +"アップデート中に問題が発生しました。インターネットに接続していることを今一度" +"確認して、もう一度試してください。\n" "\n" "それでもうまくいかない場合は、http://help.kano.meでヘルプを求めてください。" From 9df04dfc01ee4b75cc2e7d8e4085f625691bbe6a Mon Sep 17 00:00:00 2001 From: Antoine Choppin Date: Wed, 15 Jun 2016 21:35:29 +0900 Subject: [PATCH 04/11] Add missing translation and fix progress --- kano_updater/apt_progress_wrapper.py | 1 - kano_updater/commands/download.py | 4 +- kano_updater/progress.py | 39 ++++++------- kano_updater/ui/views/install.py | 8 +-- po/PYPOTFILES | 1 + po/de.po | 62 ++++++++++++++++++--- po/ja.po | 82 +++++++++++++++++++++++----- 7 files changed, 149 insertions(+), 48 deletions(-) diff --git a/kano_updater/apt_progress_wrapper.py b/kano_updater/apt_progress_wrapper.py index 5846242e..5d3e590f 100644 --- a/kano_updater/apt_progress_wrapper.py +++ b/kano_updater/apt_progress_wrapper.py @@ -74,7 +74,6 @@ def _get_op_key(self, op_name): template = u"{prefix}-{{}}".format(prefix=self._phase_name) op_name = op_name.decode('utf-8') - print "_get_op_key " + op_name return template.format(op_name).lower().replace(u' ', u'-') def _next_phase(self): diff --git a/kano_updater/commands/download.py b/kano_updater/commands/download.py index 7aa6ee4e..02f5107e 100644 --- a/kano_updater/commands/download.py +++ b/kano_updater/commands/download.py @@ -101,10 +101,10 @@ def download(progress=None, gui=True): if status.is_urgent: priority = Priority.URGENT - logger.info('Urgent update detected, bumping to normal priority') + logger.info(u'Urgent update detected, bumping to normal priority') make_normal_prio() - logger.debug('Downloading with priority {}'.format(priority.priority)) + logger.debug(u'Downloading with priority {}'.format(priority.priority)) try: success = do_download(progress, status, priority=priority, dialog_proc=dialog_proc) diff --git a/kano_updater/progress.py b/kano_updater/progress.py index 476fffbb..f44210dd 100644 --- a/kano_updater/progress.py +++ b/kano_updater/progress.py @@ -75,7 +75,7 @@ class Progress(object): """ def __init__(self): - root_phase = Phase('root', 'The root phase', 1) + root_phase = Phase('root', u'The root phase', 1) self._phases = [root_phase] self._current_phase_idx = 0 @@ -93,8 +93,8 @@ def start(self, phase_name): self._current_phase_idx = self._phases.index(phase) - log = "global({}%) local({}%): " \ - "Starting '{}' ({}) [main phase '{}' ({})]".format( + log = u"global({}%) local({}%): " \ + u"Starting '{}' ({}) [main phase '{}' ({})]".format( phase.global_percent, phase.percent, phase.label, @@ -123,7 +123,7 @@ def split(self, *subphases, **kwargs): if subphase.name != phase.name \ and self._get_phase_by_name(subphase.name, False): - msg = "Phase '{}' already exists".format(phase.name) + msg = u"Phase '{}' already exists".format(phase.name) raise ValueError(msg) weight_factor = float(subphase.weight) / weight_sum @@ -148,9 +148,10 @@ def init_steps(self, phase_name, step_count): def set_step(self, phase_name, step, msg): phase = self._get_phase_by_name(phase_name) phase.step = step + msg = msg.decode('utf-8') - log = "global({}%) local({}%): " \ - "Next step in '{}' ({}) [main phase '{}' ({})]: {}".format( + log = u"global({}%) local({}%): " \ + u"Next step in '{}' ({}) [main phase '{}' ({})]: {}".format( phase.global_percent, phase.percent, phase.label, @@ -172,11 +173,11 @@ def _get_phase_by_name(self, name, do_raise=True): return phase if do_raise: - raise ValueError("Phase '{}' doesn't exist".format(name)) + raise ValueError(u"Phase '{}' doesn't exist".format(name)) def fail(self, msg): phase = self._phases[self._current_phase_idx] - logger.debug("Error {}: {}".format(phase.label, msg)) + logger.debug(u"Error {}: {}".format(phase.label, msg)) self._error(phase, msg) def prompt(self, msg, question, answers=None): @@ -184,16 +185,16 @@ def prompt(self, msg, question, answers=None): answers = ["yes", "no"] if len(answers) <= 0: - raise ValueError('The must be at least one answer to the question!') + raise ValueError(u'The must be at least one answer to the question!') return self._prompt(msg, question, answers) def finish(self, msg): - logger.debug("Complete: {}".format(msg)) + logger.debug(u"Complete: {}".format(msg)) self._done(msg) def relaunch(self): - logger.debug('Scheduling relaunch') + logger.debug(u'Scheduling relaunch') self._relaunch() def abort(self, msg): @@ -201,7 +202,7 @@ def abort(self, msg): Akin a an exception """ phase = self._phases[self._current_phase_idx] - logger.debug("Aborting {}, {}".format(phase.label, msg)) + logger.debug(u"Aborting {}, {}".format(phase.label, msg)) self._abort(phase, msg) def _change(self, phase, msg): @@ -289,13 +290,13 @@ def prompt(self, msg, question, answers=None): class CLIProgress(Progress): def _change(self, phase, msg): - print "{}%: {}".format(phase.global_percent, msg) + print u"{}%: {}".format(phase.global_percent, msg) def _error(self, phase, msg): - print "ERROR: {}".format(msg) + print _("ERROR: {}").format(msg) def _abort(self, phase, msg): - print "Aborting {}, {}".format(phase.label, msg) + print _("Aborting {}, {}").format(phase.label, msg) def _done(self, msg): print msg @@ -305,18 +306,18 @@ def _relaunch(self): def _prompt(self, msg, question, answers): if not os.isatty(sys.stdin.fileno()): - warn = "No tty, selecting the default answer for " + \ - "'{}' which is: {}".format(question, answers[0]) + warn = _("No tty, selecting the default answer for " + \ + "'{}' which is: {}").format(question, answers[0]) logger.warn(warn) return answers[0] else: print msg norm_answers = [answer.strip().lower() for answer in answers] - q_str = "{} [{}]: ".format(question, "/".join(norm_answers)) + q_str = u"{} [{}]: ".format(question, u"/".join(norm_answers)) answer = raw_input(q_str) while answer.strip().lower() not in norm_answers: - print "Type one of these: {}".format(" ".join(norm_answers)) + print _("Type one of these: {}").format(" ".join(norm_answers)) answer = raw_input(q_str) return answer diff --git a/kano_updater/ui/views/install.py b/kano_updater/ui/views/install.py index 545d8dfc..ef7300be 100644 --- a/kano_updater/ui/views/install.py +++ b/kano_updater/ui/views/install.py @@ -126,9 +126,9 @@ def update_progress(self, percent, phase_name, msg, sub_msg=''): current_text = STAGE_TEXT[int(idx)] self._psa.set_markup(current_text) - #if self._progress_phase.get_text() != msg: - # self._progress_phase.set_text(msg) - self._progress_phase.set_text(msg) + msg = msg.decode('utf-8') + if self._progress_phase.get_text() != msg: + self._progress_phase.set_text(msg) self._progress_subphase.set_text(sub_msg) self._percent_display.set_text( @@ -145,5 +145,5 @@ def _launch_game(self, window=None, event=None): os.system('{} &'.format(FLAPPY_PATH)) except: - logger.error('Unexpected error in _launch_game()\n{}' + logger.error(u'Unexpected error in _launch_game()\n{}' .format(traceback.format_exc)) diff --git a/po/PYPOTFILES b/po/PYPOTFILES index 80d110e3..9126f01a 100644 --- a/po/PYPOTFILES +++ b/po/PYPOTFILES @@ -4,6 +4,7 @@ ../kano_updater/commands/check.py ../kano_updater/commands/download.py ../kano_updater/commands/install.py +../kano_updater/progress.py ../kano_updater/ui/available_window.py ../kano_updater/ui/install_window.py ../kano_updater/ui/relaunch_window.py diff --git a/po/de.po b/po/de.po index 0f7a7a9f..7e2248c8 100644 --- a/po/de.po +++ b/po/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: kano-updater\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-15 00:00+0900\n" +"POT-Creation-Date: 2016-06-15 21:21+0900\n" "PO-Revision-Date: 2015-02-13 17:16+0100\n" "Last-Translator: \n" "Language-Team: German \n" @@ -50,7 +50,7 @@ msgstr "" msgid "No updates found." msgstr "" -#: ../kano_updater/apt_wrapper.py:54 +#: ../kano_updater/apt_wrapper.py:54 ../kano_updater/commands/download.py:136 msgid "Updating apt sources" msgstr "" @@ -140,6 +140,42 @@ msgstr "" msgid "Must have internet to download the updates" msgstr "" +#: ../kano_updater/commands/download.py:90 +#: ../kano_updater/ui/install_window.py:37 +msgid "Updater" +msgstr "Updater" + +#: ../kano_updater/commands/download.py:91 +msgid "" +"Kano HQ has just released a critical update that will repair some important " +"things on your system! We'll download these automatically, and ask you to " +"schedule the install when they finish." +msgstr "" + +#: ../kano_updater/commands/download.py:94 +msgid "OK:green:1" +msgstr "" + +#: ../kano_updater/commands/download.py:130 +msgid "Downloading Python packages" +msgstr "" + +#: ../kano_updater/commands/download.py:142 +msgid "Downloading apt packages" +msgstr "" + +#: ../kano_updater/commands/download.py:151 +msgid "Done downloading" +msgstr "" + +#: ../kano_updater/commands/download.py:180 +msgid "Downloading {}" +msgstr "" + +#: ../kano_updater/commands/download.py:191 +msgid "Downloading the '{}' pip package failed." +msgstr "" + #: ../kano_updater/commands/install.py:49 msgid "Only {}MB free, at least 1GB is needed." msgstr "" @@ -202,6 +238,22 @@ msgstr "" msgid "The post-update tasks failed." msgstr "" +#: ../kano_updater/progress.py:296 +msgid "ERROR: {}" +msgstr "" + +#: ../kano_updater/progress.py:299 +msgid "Aborting {}, {}" +msgstr "" + +#: ../kano_updater/progress.py:309 +msgid "No tty, selecting the default answer for '{}' which is: {}" +msgstr "" + +#: ../kano_updater/progress.py:320 +msgid "Type one of these: {}" +msgstr "" + #: ../kano_updater/ui/available_window.py:67 msgid "Later" msgstr "Später" @@ -256,10 +308,6 @@ msgstr "" msgid "Update Now" msgstr "Jetzt updaten" -#: ../kano_updater/ui/install_window.py:37 -msgid "Updater" -msgstr "Updater" - #: ../kano_updater/ui/install_window.py:78 msgid "The install quit unexpectedly" msgstr "" @@ -442,7 +490,7 @@ msgstr "" msgid "Do you want to play a cool game instead? PRESS [J] TO LAUNCH!" msgstr "" -#: ../kano_updater/ui/views/install.py:134 +#: ../kano_updater/ui/views/install.py:135 msgid "Time flies - {}% already!" msgstr "" diff --git a/po/ja.po b/po/ja.po index 3669f92a..896ee264 100644 --- a/po/ja.po +++ b/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: kano-updater\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-15 00:00+0900\n" +"POT-Creation-Date: 2016-06-15 21:21+0900\n" "PO-Revision-Date: 2016-06-03 22:59+0900\n" "Last-Translator: Choppin Antoine \n" "Language-Team: Japanese\n" @@ -49,7 +49,7 @@ msgstr "アップデートが取得可能です。" msgid "No updates found." msgstr "アップデートは見つかりません。" -#: ../kano_updater/apt_wrapper.py:54 +#: ../kano_updater/apt_wrapper.py:54 ../kano_updater/commands/download.py:136 msgid "Updating apt sources" msgstr "APTソースをアップデート中" @@ -139,6 +139,45 @@ msgstr "アップデートは既にインストール中です" msgid "Must have internet to download the updates" msgstr "アップデートをダウンロードするにはインターネットが必要です" +#: ../kano_updater/commands/download.py:90 +#: ../kano_updater/ui/install_window.py:37 +msgid "Updater" +msgstr "アップデーター" + +#: ../kano_updater/commands/download.py:91 +msgid "" +"Kano HQ has just released a critical update that will repair some important " +"things on your system! We'll download these automatically, and ask you to " +"schedule the install when they finish." +msgstr "" +"たった今、Kano本社から重要なアップデートがリリースされ、システムの大事な機能" +"を直すのに必要です!このアップデートは自動的にダウンロードされ、その後" +"インストールが予定されます。" + +#: ../kano_updater/commands/download.py:94 +msgid "OK:green:1" +msgstr "了解:green:1" + +#: ../kano_updater/commands/download.py:130 +msgid "Downloading Python packages" +msgstr "パイソンパッケージをダウンロード中" + +#: ../kano_updater/commands/download.py:142 +msgid "Downloading apt packages" +msgstr "APTパッケージをダウンロード中" + +#: ../kano_updater/commands/download.py:151 +msgid "Done downloading" +msgstr "ダウンロード完了" + +#: ../kano_updater/commands/download.py:180 +msgid "Downloading {}" +msgstr "{}ダウンロード中" + +#: ../kano_updater/commands/download.py:191 +msgid "Downloading the '{}' pip package failed." +msgstr "'{}'と言うpipパッケージのダウンロードが失敗しました" + #: ../kano_updater/commands/install.py:49 msgid "Only {}MB free, at least 1GB is needed." msgstr "1GB必要ですが、空き容量は{}MBしかありません。" @@ -199,6 +238,22 @@ msgstr "アップデートの前処理が失敗しました。" msgid "The post-update tasks failed." msgstr "アップデートの後処理が失敗しました。" +#: ../kano_updater/progress.py:296 +msgid "ERROR: {}" +msgstr "エラー:{}" + +#: ../kano_updater/progress.py:299 +msgid "Aborting {}, {}" +msgstr "{}を中断します:{}" + +#: ../kano_updater/progress.py:309 +msgid "No tty, selecting the default answer for '{}' which is: {}" +msgstr "ttyが無い為、'{}'に対するデフォルト回答({})を選択します" + +#: ../kano_updater/progress.py:320 +msgid "Type one of these: {}" +msgstr "次の中から選んでください: {}" + #: ../kano_updater/ui/available_window.py:67 msgid "Later" msgstr "後で" @@ -257,10 +312,6 @@ msgstr "" msgid "Update Now" msgstr "今アップデートする" -#: ../kano_updater/ui/install_window.py:37 -msgid "Updater" -msgstr "アップデーター" - #: ../kano_updater/ui/install_window.py:78 msgid "The install quit unexpectedly" msgstr "インストールが予告無く終了しました" @@ -300,13 +351,13 @@ msgid "" "the world. You can also search for the white rabbit on http://world.kano." "me" msgstr "" -"1978年に一番早いコンピューターはCray 1(クレイ・ワン)で、おおよそ700万ドル" -"でとても高くて、重さは像と同じくらいだった! それに比べて、KanoはCray 1より" -"約4倍速いんだ。 今、Kanoを最新の状態に保つために、新しいゲームやアプリや" -"プロジェクトをダウンロードし、コンピューターのメモリーに伝達している。" -"15分くらい掛かる予定です。その間、Kanoの写真を撮ってみませんか?" -"また、写真をhello@kano.meに送ってもらえれば、世界と共有しちゃう!" -"その他に、http://world.kano.meで白いうさぎさんを探してみては?" +"1978年に一番早いコンピューターはCray 1(クレイ・ワン)で、おおよそ700万ドルで" +"とても高くて、重さは像と同じくらいだった! それに比べて、KanoはCray 1より約" +"4倍速いんだ。 今、Kanoを最新の状態に保つために、新しいゲームやアプリやプロ" +"ジェクトをダウンロードし、コンピューターのメモリーを軽くしている。15分くらい" +"掛かる予定です。その間、Kanoの写真を撮ってみませんか?また、写真を" +"hello@kano.meに送ってもらえれば、世界と共有しちゃう!その他に、" +"http://world.kano.meで白いうさぎさんを探してみては?" #: ../kano_updater/ui/stage_text.py:44 msgid "" @@ -401,9 +452,10 @@ msgstr "{}するにはENTERを押してください" #: ../kano_updater/ui/views/install.py:53 msgid "Do you want to play a cool game instead? PRESS [J] TO LAUNCH!" -msgstr "待っている間に、面白いゲームをやってみませんか? スタートするには[J]を!" +msgstr "" +"待っている間に、面白いゲームをやってみませんか? スタートするには[J]を!" -#: ../kano_updater/ui/views/install.py:134 +#: ../kano_updater/ui/views/install.py:135 msgid "Time flies - {}% already!" msgstr "早い! 既に{}%終わってます" From 9e700a8520279f4ae28f63c858e9058bcd4679a9 Mon Sep 17 00:00:00 2001 From: Antoine Choppin Date: Wed, 15 Jun 2016 22:11:21 +0900 Subject: [PATCH 05/11] Add missing translations --- kano_updater/commands/install.py | 20 ++++++++++---------- kano_updater/ui/views/install.py | 6 +++--- po/PYPOTFILES | 1 + po/de.po | 24 +++++++++++++++++++----- po/ja.po | 28 +++++++++++++++++++++------- 5 files changed, 54 insertions(+), 25 deletions(-) diff --git a/kano_updater/commands/install.py b/kano_updater/commands/install.py index 84064191..0b8711b4 100644 --- a/kano_updater/commands/install.py +++ b/kano_updater/commands/install.py @@ -33,7 +33,7 @@ class InstallError(Exception): def install(progress=None, gui=True): status = UpdaterStatus.get_instance() - logger.debug("Installing update (updater state = {})".format(status.state)) + logger.debug(u"Installing update (updater state = {})".format(status.state)) if not progress: progress = DummyProgress() @@ -103,7 +103,7 @@ def install(progress=None, gui=True): if status.is_urgent: priority = Priority.URGENT - logger.debug('Installing with priority {}'.format(priority.priority)) + logger.debug(u'Installing with priority {}'.format(priority.priority)) try: return do_install(progress, status, priority=priority) @@ -140,7 +140,7 @@ def do_install(progress, status, priority=Priority.NONE): status.is_scheduled = False status.save() - progress.finish('Update completed') + progress.finish(_('Update completed')) return True def install_ind_package(progress, package): @@ -178,7 +178,7 @@ def install_ind_package(progress, package): status.is_scheduled = False status.save() - progress.finish('Update completed') + progress.finish(_('Update completed')) return True @@ -249,7 +249,7 @@ def install_standard(progress, status): ), Phase( 'aux-tasks', - 'Performing auxiliary tasks', + _('Performing auxiliary tasks'), 10, is_main=True ) @@ -262,7 +262,7 @@ def install_standard(progress, status): # determine the versions (from and to) system_version = OSVersion.from_version_file(SYSTEM_VERSION_FILE) - msg = "Upgrading from {} to {}".format(system_version, TARGET_VERSION) + msg = u"Upgrading from {} to {}".format(system_version, TARGET_VERSION) logger.info(msg) # set up the scenarios and check whether they cover updating @@ -346,7 +346,7 @@ def install_pip_packages(progress, priority=Priority.NONE): progress.init_steps(phase_name, len(packages)) for pkg in packages: - progress.next_step(phase_name, "Installing {}".format(pkg)) + progress.next_step(phase_name, _("Installing {}").format(pkg)) success = run_pip_command( "install --upgrade --no-index --find-links=file://{} '{}'".format( @@ -354,10 +354,10 @@ def install_pip_packages(progress, priority=Priority.NONE): ) if not success: - msg = "Installing the '{}' pip package failed".format(pkg) + msg = u"Installing the '{}' pip package failed".format(pkg) logger.error(msg) if not is_internet(): - msg = "Network is down, aborting PIP install" + msg = u"Network is down, aborting PIP install" logger.error(msg) raise IOError(msg) @@ -366,6 +366,6 @@ def install_pip_packages(progress, priority=Priority.NONE): "install --upgrade '{}'".format(pkg) ) if not success_failsafe: - msg = "Installing the '{}' pip package failed (fsafe)".format( + msg = u"Installing the '{}' pip package failed (fsafe)".format( pkg) logger.error(msg) diff --git a/kano_updater/ui/views/install.py b/kano_updater/ui/views/install.py index ef7300be..5140fc98 100644 --- a/kano_updater/ui/views/install.py +++ b/kano_updater/ui/views/install.py @@ -126,9 +126,9 @@ def update_progress(self, percent, phase_name, msg, sub_msg=''): current_text = STAGE_TEXT[int(idx)] self._psa.set_markup(current_text) - msg = msg.decode('utf-8') - if self._progress_phase.get_text() != msg: - self._progress_phase.set_text(msg) + #if self._progress_phase.get_text() != msg: + # self._progress_phase.set_text(msg) + self._progress_phase.set_text(msg) self._progress_subphase.set_text(sub_msg) self._percent_display.set_text( diff --git a/po/PYPOTFILES b/po/PYPOTFILES index 9126f01a..5fc046bd 100644 --- a/po/PYPOTFILES +++ b/po/PYPOTFILES @@ -7,6 +7,7 @@ ../kano_updater/progress.py ../kano_updater/ui/available_window.py ../kano_updater/ui/install_window.py +../kano_updater/ui/progress.py ../kano_updater/ui/relaunch_window.py ../kano_updater/ui/stage_text.py ../kano_updater/ui/views/finish.py diff --git a/po/de.po b/po/de.po index 7e2248c8..b715b97a 100644 --- a/po/de.po +++ b/po/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: kano-updater\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-15 21:21+0900\n" +"POT-Creation-Date: 2016-06-15 22:04+0900\n" "PO-Revision-Date: 2015-02-13 17:16+0100\n" "Last-Translator: \n" "Language-Team: German \n" @@ -184,6 +184,12 @@ msgstr "" msgid "Installing updates" msgstr "" +#: ../kano_updater/commands/install.py:143 +#: ../kano_updater/commands/install.py:181 +#: ../kano_updater/ui/install_window.py:130 +msgid "Update completed" +msgstr "" + #: ../kano_updater/commands/install.py:189 msgid "Installing Hotfix" msgstr "" @@ -212,6 +218,10 @@ msgstr "" msgid "Running The Postupdate Scripts" msgstr "" +#: ../kano_updater/commands/install.py:252 +msgid "Performing auxiliary tasks" +msgstr "" + #: ../kano_updater/commands/install.py:273 msgid "" "Unfortunately, your version of Kano OS is too old to be updated through the " @@ -238,6 +248,10 @@ msgstr "" msgid "The post-update tasks failed." msgstr "" +#: ../kano_updater/commands/install.py:349 +msgid "Installing {}" +msgstr "" + #: ../kano_updater/progress.py:296 msgid "ERROR: {}" msgstr "" @@ -324,14 +338,14 @@ msgstr "" msgid "Your system is already up to date" msgstr "" -#: ../kano_updater/ui/install_window.py:130 -msgid "Update completed" -msgstr "" - #: ../kano_updater/ui/install_window.py:161 msgid "Error updating" msgstr "" +#: ../kano_updater/ui/progress.py:37 +msgid "Complete!" +msgstr "" + #: ../kano_updater/ui/relaunch_window.py:32 msgid "Updater Splash" msgstr "" diff --git a/po/ja.po b/po/ja.po index 896ee264..884abc1c 100644 --- a/po/ja.po +++ b/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: kano-updater\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-15 21:21+0900\n" +"POT-Creation-Date: 2016-06-15 22:04+0900\n" "PO-Revision-Date: 2016-06-03 22:59+0900\n" "Last-Translator: Choppin Antoine \n" "Language-Team: Japanese\n" @@ -151,8 +151,8 @@ msgid "" "schedule the install when they finish." msgstr "" "たった今、Kano本社から重要なアップデートがリリースされ、システムの大事な機能" -"を直すのに必要です!このアップデートは自動的にダウンロードされ、その後" -"インストールが予定されます。" +"を直すのに必要です!このアップデートは自動的にダウンロードされ、その後インス" +"トールが予定されます。" #: ../kano_updater/commands/download.py:94 msgid "OK:green:1" @@ -186,6 +186,12 @@ msgstr "1GB必要ですが、空き容量は{}MBしかありません。" msgid "Installing updates" msgstr "アップデートをインストール中" +#: ../kano_updater/commands/install.py:143 +#: ../kano_updater/commands/install.py:181 +#: ../kano_updater/ui/install_window.py:130 +msgid "Update completed" +msgstr "アップデート完了" + #: ../kano_updater/commands/install.py:189 msgid "Installing Hotfix" msgstr "ホットフィックスをインストール中" @@ -214,6 +220,10 @@ msgstr "Debパッケージをアップデート中" msgid "Running The Postupdate Scripts" msgstr "アップデートの後処理を実行中" +#: ../kano_updater/commands/install.py:252 +msgid "Performing auxiliary tasks" +msgstr "追加処理を実施しています" + #: ../kano_updater/commands/install.py:273 msgid "" "Unfortunately, your version of Kano OS is too old to be updated through the " @@ -238,6 +248,10 @@ msgstr "アップデートの前処理が失敗しました。" msgid "The post-update tasks failed." msgstr "アップデートの後処理が失敗しました。" +#: ../kano_updater/commands/install.py:349 +msgid "Installing {}" +msgstr "{}をインストール中" + #: ../kano_updater/progress.py:296 msgid "ERROR: {}" msgstr "エラー:{}" @@ -328,14 +342,14 @@ msgstr "アップデートはありません" msgid "Your system is already up to date" msgstr "システムは既に最新状況です" -#: ../kano_updater/ui/install_window.py:130 -msgid "Update completed" -msgstr "アップデート完了" - #: ../kano_updater/ui/install_window.py:161 msgid "Error updating" msgstr "アップデート失敗" +#: ../kano_updater/ui/progress.py:37 +msgid "Complete!" +msgstr "完了!" + #: ../kano_updater/ui/relaunch_window.py:32 msgid "Updater Splash" msgstr "アップデータースプラッシュ" From cc97e755ef50527eb675598102c360a50ec407d3 Mon Sep 17 00:00:00 2001 From: Antoine Choppin Date: Wed, 15 Jun 2016 23:44:48 +0900 Subject: [PATCH 06/11] Fix error reporting issue --- kano_updater/commands/install.py | 4 ++-- kano_updater/progress.py | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/kano_updater/commands/install.py b/kano_updater/commands/install.py index 0b8711b4..731ac54e 100644 --- a/kano_updater/commands/install.py +++ b/kano_updater/commands/install.py @@ -283,8 +283,8 @@ def install_standard(progress, status): old_updater = apt_handle.get_package('kano-updater').installed.version - progress.start('updating-itself') - apt_handle.upgrade('kano-updater', progress) + #progress.start('updating-itself') + #apt_handle.upgrade('kano-updater', progress) # relaunch if the updater has changed new_updater = apt_handle.get_package('kano-updater') diff --git a/kano_updater/progress.py b/kano_updater/progress.py index f44210dd..af6c69cf 100644 --- a/kano_updater/progress.py +++ b/kano_updater/progress.py @@ -146,6 +146,7 @@ def init_steps(self, phase_name, step_count): phase.step = 0 def set_step(self, phase_name, step, msg): + phase_name = phase_name.decode('utf-8') phase = self._get_phase_by_name(phase_name) phase.step = step msg = msg.decode('utf-8') @@ -293,10 +294,10 @@ def _change(self, phase, msg): print u"{}%: {}".format(phase.global_percent, msg) def _error(self, phase, msg): - print _("ERROR: {}").format(msg) + print u"ERROR: {}".format(msg) def _abort(self, phase, msg): - print _("Aborting {}, {}").format(phase.label, msg) + print u"Aborting {}, {}".format(phase.label, msg) def _done(self, msg): print msg From 11eaea81f27e78161299784ac48efa29e3f361d8 Mon Sep 17 00:00:00 2001 From: Antoine Choppin Date: Thu, 16 Jun 2016 00:05:37 +0900 Subject: [PATCH 07/11] Add some translations --- kano_updater/commands/install.py | 6 +++--- po/de.po | 14 +++----------- po/ja.po | 26 +++++++++++++------------- 3 files changed, 19 insertions(+), 27 deletions(-) diff --git a/kano_updater/commands/install.py b/kano_updater/commands/install.py index 731ac54e..390cb0a8 100644 --- a/kano_updater/commands/install.py +++ b/kano_updater/commands/install.py @@ -275,7 +275,7 @@ def install_standard(progress, status): description = _('You will need to download the image of the ' 'OS and reflash your SD card.') - msg = "{}: {}".format(title, description) + msg = u"{}: {}".format(title, description) logger.error("Updating from a version that is no longer supported ({})" .format(system_version)) progress.fail(msg) @@ -283,8 +283,8 @@ def install_standard(progress, status): old_updater = apt_handle.get_package('kano-updater').installed.version - #progress.start('updating-itself') - #apt_handle.upgrade('kano-updater', progress) + progress.start('updating-itself') + apt_handle.upgrade('kano-updater', progress) # relaunch if the updater has changed new_updater = apt_handle.get_package('kano-updater') diff --git a/po/de.po b/po/de.po index b715b97a..762d94d9 100644 --- a/po/de.po +++ b/po/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: kano-updater\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-15 22:04+0900\n" +"POT-Creation-Date: 2016-06-15 23:45+0900\n" "PO-Revision-Date: 2015-02-13 17:16+0100\n" "Last-Translator: \n" "Language-Team: German \n" @@ -252,19 +252,11 @@ msgstr "" msgid "Installing {}" msgstr "" -#: ../kano_updater/progress.py:296 -msgid "ERROR: {}" -msgstr "" - -#: ../kano_updater/progress.py:299 -msgid "Aborting {}, {}" -msgstr "" - -#: ../kano_updater/progress.py:309 +#: ../kano_updater/progress.py:310 msgid "No tty, selecting the default answer for '{}' which is: {}" msgstr "" -#: ../kano_updater/progress.py:320 +#: ../kano_updater/progress.py:321 msgid "Type one of these: {}" msgstr "" diff --git a/po/ja.po b/po/ja.po index 884abc1c..910c53fa 100644 --- a/po/ja.po +++ b/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: kano-updater\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-15 22:04+0900\n" +"POT-Creation-Date: 2016-06-15 23:45+0900\n" "PO-Revision-Date: 2016-06-03 22:59+0900\n" "Last-Translator: Choppin Antoine \n" "Language-Team: Japanese\n" @@ -252,19 +252,11 @@ msgstr "アップデートの後処理が失敗しました。" msgid "Installing {}" msgstr "{}をインストール中" -#: ../kano_updater/progress.py:296 -msgid "ERROR: {}" -msgstr "エラー:{}" - -#: ../kano_updater/progress.py:299 -msgid "Aborting {}, {}" -msgstr "{}を中断します:{}" - -#: ../kano_updater/progress.py:309 +#: ../kano_updater/progress.py:310 msgid "No tty, selecting the default answer for '{}' which is: {}" msgstr "ttyが無い為、'{}'に対するデフォルト回答({})を選択します" -#: ../kano_updater/progress.py:320 +#: ../kano_updater/progress.py:321 msgid "Type one of these: {}" msgstr "次の中から選んでください: {}" @@ -366,8 +358,8 @@ msgid "" "me" msgstr "" "1978年に一番早いコンピューターはCray 1(クレイ・ワン)で、おおよそ700万ドルで" -"とても高くて、重さは像と同じくらいだった! それに比べて、KanoはCray 1より約" -"4倍速いんだ。 今、Kanoを最新の状態に保つために、新しいゲームやアプリやプロ" +"とても高くて、重さは像と同じくらいだった!それに比べて、KanoはCray 1より約" +"4倍速いんだ。今、Kanoを最新の状態に保つために、新しいゲームやアプリやプロ" "ジェクトをダウンロードし、コンピューターのメモリーを軽くしている。15分くらい" "掛かる予定です。その間、Kanoの写真を撮ってみませんか?また、写真を" "hello@kano.meに送ってもらえれば、世界と共有しちゃう!その他に、" @@ -384,6 +376,14 @@ msgid "" "tiny switches, called transistors, in its brain. In your brain, these " "switches are cells called neurons. They're talking to each other right now." msgstr "" +"コンピューターは新しいアイディアを覚えるのは早い。今、アップデーターツールを" +"アップデートしている。これが終わったら、アップデーターを再起動する。コンピュ" +"ーターはどのように考えているだろう?お互いと賢く繋がっている電気スイッチで" +"構成されている。スイッチがオンならば、「はい」又は「1」と言う意味で、スイッチ" +"がオフならば、「いいえ」又は「0」と言う意味です。この小さい「はい-いいえ」" +"スイッチはバイナリーコードになり、単語、音、規則などを表せる。あなたのコンピュ" +"ーターの頭脳には、トランジスタと言うとても小さいスイッチを持っている。人間の" +"頭脳ではこのスイッチは神経細胞になります。どの時にもお互いと話し合っている。" #: ../kano_updater/ui/stage_text.py:57 msgid "" From 71d714868f395bc741be5f64ab81c133661067cf Mon Sep 17 00:00:00 2001 From: Antoine Choppin Date: Thu, 16 Jun 2016 08:26:40 +0900 Subject: [PATCH 08/11] Fix glitch with str vs unicode --- kano_updater/apt_progress_wrapper.py | 3 ++- kano_updater/progress.py | 5 +++-- kano_updater/utils.py | 7 +++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/kano_updater/apt_progress_wrapper.py b/kano_updater/apt_progress_wrapper.py index 5d3e590f..dfd5e58e 100644 --- a/kano_updater/apt_progress_wrapper.py +++ b/kano_updater/apt_progress_wrapper.py @@ -10,6 +10,7 @@ import apt from kano_updater.progress import Phase +from kano_updater.utils import to_unicode class AptDownloadProgress(apt.progress.base.AcquireProgress): @@ -73,7 +74,7 @@ def __init__(self, updater_progress, ops=[]): def _get_op_key(self, op_name): template = u"{prefix}-{{}}".format(prefix=self._phase_name) - op_name = op_name.decode('utf-8') + op_name = to_unicode(op_name) return template.format(op_name).lower().replace(u' ', u'-') def _next_phase(self): diff --git a/kano_updater/progress.py b/kano_updater/progress.py index af6c69cf..3ccb2bac 100644 --- a/kano_updater/progress.py +++ b/kano_updater/progress.py @@ -9,6 +9,7 @@ import sys from kano.logging import logger +from kano_updater.utils import to_unicode class ProgressError(Exception): @@ -146,10 +147,10 @@ def init_steps(self, phase_name, step_count): phase.step = 0 def set_step(self, phase_name, step, msg): - phase_name = phase_name.decode('utf-8') + phase_name = to_unicode(phase_name) phase = self._get_phase_by_name(phase_name) phase.step = step - msg = msg.decode('utf-8') + msg = to_unicode(msg) log = u"global({}%) local({}%): " \ u"Next step in '{}' ({}) [main phase '{}' ({})]: {}".format( diff --git a/kano_updater/utils.py b/kano_updater/utils.py index 5ba88be6..b1dc6386 100644 --- a/kano_updater/utils.py +++ b/kano_updater/utils.py @@ -596,3 +596,10 @@ def show_kano_dialog(title, description, buttons, blocking=True): retval = run_bg('exec ' + cmd) return retval + + +def to_unicode(string): + if type(string).__name__ is "str": + return string.decode('utf-8') + return string + From d367a2424fe12b47e9286000b8d5be92da637329 Mon Sep 17 00:00:00 2001 From: Antoine Choppin Date: Thu, 16 Jun 2016 08:35:33 +0900 Subject: [PATCH 09/11] Fix glitch with str vs unicode --- kano_updater/apt_progress_wrapper.py | 2 +- kano_updater/i18n.py | 12 ++++++++++++ kano_updater/progress.py | 2 +- kano_updater/utils.py | 5 ----- 4 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 kano_updater/i18n.py diff --git a/kano_updater/apt_progress_wrapper.py b/kano_updater/apt_progress_wrapper.py index dfd5e58e..9d160940 100644 --- a/kano_updater/apt_progress_wrapper.py +++ b/kano_updater/apt_progress_wrapper.py @@ -10,7 +10,7 @@ import apt from kano_updater.progress import Phase -from kano_updater.utils import to_unicode +from kano_updater.i18n import to_unicode class AptDownloadProgress(apt.progress.base.AcquireProgress): diff --git a/kano_updater/i18n.py b/kano_updater/i18n.py new file mode 100644 index 00000000..25bc9178 --- /dev/null +++ b/kano_updater/i18n.py @@ -0,0 +1,12 @@ +# i18n.py +# +# Copyright (C) 2016 Kano Computing Ltd. +# License: http://www.gnu.org/licenses/gpl-2.0.txt GNU GPL v2 +# +# I18n helpers for the updater + +def to_unicode(string): + if type(string).__name__ is "str": + return string.decode('utf-8') + return string + diff --git a/kano_updater/progress.py b/kano_updater/progress.py index 3ccb2bac..eb1329cf 100644 --- a/kano_updater/progress.py +++ b/kano_updater/progress.py @@ -9,7 +9,7 @@ import sys from kano.logging import logger -from kano_updater.utils import to_unicode +from kano_updater.i18n import to_unicode class ProgressError(Exception): diff --git a/kano_updater/utils.py b/kano_updater/utils.py index b1dc6386..52df5039 100644 --- a/kano_updater/utils.py +++ b/kano_updater/utils.py @@ -598,8 +598,3 @@ def show_kano_dialog(title, description, buttons, blocking=True): return retval -def to_unicode(string): - if type(string).__name__ is "str": - return string.decode('utf-8') - return string - From cfe4e9ac9093a08589f1d3119f6ce84effaf0f01 Mon Sep 17 00:00:00 2001 From: Antoine Choppin Date: Fri, 17 Jun 2016 00:36:39 +0900 Subject: [PATCH 10/11] Fix unicode issue (again) and complete Japanese translation --- kano_updater/commands/install.py | 14 ++--- kano_updater/i18n.py | 2 +- po/Makefile | 2 +- po/de.po | 26 +++++++-- po/ja.po | 93 +++++++++++++++++++++++++------- 5 files changed, 105 insertions(+), 32 deletions(-) diff --git a/kano_updater/commands/install.py b/kano_updater/commands/install.py index 390cb0a8..1347e8fc 100644 --- a/kano_updater/commands/install.py +++ b/kano_updater/commands/install.py @@ -46,11 +46,11 @@ def install(progress=None, gui=True): # TODO: Take this value from apt mb_free = get_free_space() if mb_free < 1024: - err_msg = _("Only {}MB free, at least 1GB is needed.".format(mb_free)) + err_msg = _("Only {}MB free, at least 1GB is needed.").format(mb_free) logger.warn(err_msg) answer = progress.prompt( - 'Not enough space to update!', - 'But I can make more room if you\'d like?', + _('Not enough space to update!'), + _('But I can make more room if you\'d like?'), ['OK', 'CANCEL'] ) @@ -153,15 +153,15 @@ def install_ind_package(progress, package): if status.state not in [UpdaterStatus.NO_UPDATES, UpdaterStatus.UPDATES_AVAILABLE, UpdaterStatus.UPDATES_INSTALLED]: - msg = 'The install is already running' + msg = N_('The install is already running') logger.warn(msg) progress.abort(_(msg)) return False if package not in status.updatable_independent_packages: - msg = 'tried to install non-independent package {} using update_ind_pkg'.format(package) - logger.warn(msg) - progress.abort(_(msg)) + msg = N_('tried to install non-independent package {} using update_ind_pkg') + logger.warn(msg.format(package)) + progress.abort(_(msg).format(package)) return False status.state = UpdaterStatus.INSTALLING_INDEPENDENT diff --git a/kano_updater/i18n.py b/kano_updater/i18n.py index 25bc9178..d6561a46 100644 --- a/kano_updater/i18n.py +++ b/kano_updater/i18n.py @@ -6,7 +6,7 @@ # I18n helpers for the updater def to_unicode(string): - if type(string).__name__ is "str": + if type(string).__name__ == "str": return string.decode('utf-8') return string diff --git a/po/Makefile b/po/Makefile index 220cd8c0..44de3a7e 100644 --- a/po/Makefile +++ b/po/Makefile @@ -17,7 +17,7 @@ clean: clean_locales rm -f messages.pot define run-xgettext -xgettext -f PYPOTFILES -L Python --force-po -o messages.pot \ +xgettext -f PYPOTFILES -L Python -kN_ --force-po -o messages.pot \ --package-name=$(APPNAME) --copyright-holder=$(ORG) xgettext -f CPOTFILES -L C -k_ -kN_ -j -o messages.pot \ --package-name=$(APPNAME) --copyright-holder=$(ORG) diff --git a/po/de.po b/po/de.po index 762d94d9..5a46f14b 100644 --- a/po/de.po +++ b/po/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: kano-updater\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-15 23:45+0900\n" +"POT-Creation-Date: 2016-06-16 21:47+0900\n" "PO-Revision-Date: 2015-02-13 17:16+0100\n" "Last-Translator: \n" "Language-Team: German \n" @@ -58,6 +58,10 @@ msgstr "" msgid "Initialising apt cache" msgstr "" +#: ../kano_updater/apt_wrapper.py:64 +msgid "Failed to update sources" +msgstr "" + #: ../kano_updater/apt_wrapper.py:125 ../kano_updater/apt_wrapper.py:152 msgid "Downloading packages" msgstr "" @@ -180,6 +184,14 @@ msgstr "" msgid "Only {}MB free, at least 1GB is needed." msgstr "" +#: ../kano_updater/commands/install.py:52 +msgid "Not enough space to update!" +msgstr "" + +#: ../kano_updater/commands/install.py:53 +msgid "But I can make more room if you'd like?" +msgstr "" + #: ../kano_updater/commands/install.py:88 msgid "Installing updates" msgstr "" @@ -190,6 +202,14 @@ msgstr "" msgid "Update completed" msgstr "" +#: ../kano_updater/commands/install.py:156 +msgid "The install is already running" +msgstr "" + +#: ../kano_updater/commands/install.py:162 +msgid "tried to install non-independent package {} using update_ind_pkg" +msgstr "" + #: ../kano_updater/commands/install.py:189 msgid "Installing Hotfix" msgstr "" @@ -252,11 +272,11 @@ msgstr "" msgid "Installing {}" msgstr "" -#: ../kano_updater/progress.py:310 +#: ../kano_updater/progress.py:311 msgid "No tty, selecting the default answer for '{}' which is: {}" msgstr "" -#: ../kano_updater/progress.py:321 +#: ../kano_updater/progress.py:322 msgid "Type one of these: {}" msgstr "" diff --git a/po/ja.po b/po/ja.po index 910c53fa..e25cb766 100644 --- a/po/ja.po +++ b/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: kano-updater\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-15 23:45+0900\n" +"POT-Creation-Date: 2016-06-16 21:47+0900\n" "PO-Revision-Date: 2016-06-03 22:59+0900\n" "Last-Translator: Choppin Antoine \n" "Language-Team: Japanese\n" @@ -57,21 +57,25 @@ msgstr "APTソースをアップデート中" msgid "Initialising apt cache" msgstr "APTキャッシュを初期化中" +#: ../kano_updater/apt_wrapper.py:64 +msgid "Failed to update sources" +msgstr "ソースのアップデートが失敗しました" + #: ../kano_updater/apt_wrapper.py:125 ../kano_updater/apt_wrapper.py:152 msgid "Downloading packages" -msgstr "パッケージをダウンロード中" +msgstr "パッケージをダウンロードしています" #: ../kano_updater/apt_wrapper.py:126 ../kano_updater/apt_wrapper.py:153 msgid "Installing packages" -msgstr "パッケージをインストール中" +msgstr "パッケージをインストールしています" #: ../kano_updater/apt_wrapper.py:230 msgid "Cleaning dpkg journal" -msgstr "DPKGジャーナル掃除中" +msgstr "DPKGジャーナル掃除しています" #: ../kano_updater/apt_wrapper.py:232 msgid "Fixing broken packages" -msgstr "壊れたパッケージを修理中" +msgstr "壊れたパッケージを修理しています" #: ../kano_updater/auxiliary_tasks.py:21 msgid "Updating home folders from template" @@ -182,6 +186,14 @@ msgstr "'{}'と言うpipパッケージのダウンロードが失敗しまし msgid "Only {}MB free, at least 1GB is needed." msgstr "1GB必要ですが、空き容量は{}MBしかありません。" +#: ../kano_updater/commands/install.py:52 +msgid "Not enough space to update!" +msgstr "アップデートするには空き容量が足りません!" + +#: ../kano_updater/commands/install.py:53 +msgid "But I can make more room if you'd like?" +msgstr "こちらで容量を空けようか?" + #: ../kano_updater/commands/install.py:88 msgid "Installing updates" msgstr "アップデートをインストール中" @@ -192,6 +204,14 @@ msgstr "アップデートをインストール中" msgid "Update completed" msgstr "アップデート完了" +#: ../kano_updater/commands/install.py:156 +msgid "The install is already running" +msgstr "インストールは既に実行中です" + +#: ../kano_updater/commands/install.py:162 +msgid "tried to install non-independent package {} using update_ind_pkg" +msgstr "update_ind_pkgで非独立パッケージ{}をインストールしてみました" + #: ../kano_updater/commands/install.py:189 msgid "Installing Hotfix" msgstr "ホットフィックスをインストール中" @@ -252,11 +272,11 @@ msgstr "アップデートの後処理が失敗しました。" msgid "Installing {}" msgstr "{}をインストール中" -#: ../kano_updater/progress.py:310 +#: ../kano_updater/progress.py:311 msgid "No tty, selecting the default answer for '{}' which is: {}" msgstr "ttyが無い為、'{}'に対するデフォルト回答({})を選択します" -#: ../kano_updater/progress.py:321 +#: ../kano_updater/progress.py:322 msgid "Type one of these: {}" msgstr "次の中から選んでください: {}" @@ -358,12 +378,12 @@ msgid "" "me" msgstr "" "1978年に一番早いコンピューターはCray 1(クレイ・ワン)で、おおよそ700万ドルで" -"とても高くて、重さは像と同じくらいだった!それに比べて、KanoはCray 1より約" -"4倍速いんだ。今、Kanoを最新の状態に保つために、新しいゲームやアプリやプロ" -"ジェクトをダウンロードし、コンピューターのメモリーを軽くしている。15分くらい" -"掛かる予定です。その間、Kanoの写真を撮ってみませんか?また、写真を" -"hello@kano.meに送ってもらえれば、世界と共有しちゃう!その他に、" -"http://world.kano.meで白いうさぎさんを探してみては?" +"とても高くて、重さは像と同じくらいだった!それに比べて、KanoはCray 1より約4" +"倍速いんだ。今、Kanoを最新の状態に保つために、新しいゲームやアプリやプロジェ" +"クトをダウンロードし、コンピューターのメモリーを軽くしている。15分くらい掛か" +"る予定です。その間、Kanoの写真を撮ってみませんか?また、写真をhello@kano." +"meに送ってもらえれば、世界と共有しちゃう!その他に、http://world.kano." +"meで白いうさぎさんを探してみては?" #: ../kano_updater/ui/stage_text.py:44 msgid "" @@ -377,13 +397,14 @@ msgid "" "switches are cells called neurons. They're talking to each other right now." msgstr "" "コンピューターは新しいアイディアを覚えるのは早い。今、アップデーターツールを" -"アップデートしている。これが終わったら、アップデーターを再起動する。コンピュ" -"ーターはどのように考えているだろう?お互いと賢く繋がっている電気スイッチで" -"構成されている。スイッチがオンならば、「はい」又は「1」と言う意味で、スイッチ" -"がオフならば、「いいえ」又は「0」と言う意味です。この小さい「はい-いいえ」" -"スイッチはバイナリーコードになり、単語、音、規則などを表せる。あなたのコンピュ" -"ーターの頭脳には、トランジスタと言うとても小さいスイッチを持っている。人間の" -"頭脳ではこのスイッチは神経細胞になります。どの時にもお互いと話し合っている。" +"アップデートしている。これが終わったら、アップデーターを再起動する。コン" +"ピューターはどのように考えているだろう?お互いと賢く繋がっている電気スイッチ" +"で構成されている。スイッチがオンならば、「はい」又は「1」と言う意味で、ス" +"イッチがオフならば、「いいえ」又は「0」と言う意味です。この小さい「はい-いい" +"え」スイッチはバイナリーコードになり、単語、音、規則などを表せる。あなたのコ" +"ンピューターの頭脳には、トランジスタと言うとても小さいスイッチを持っている。" +"人間の頭脳ではこのスイッチは神経細胞になります。どの時にもお互いと話し合って" +"いる。" #: ../kano_updater/ui/stage_text.py:57 msgid "" @@ -397,6 +418,15 @@ msgid "" "\"Gangnam Style\" from YouTube, and move millions of dollars in the New York " "Stock Exchange." msgstr "" +"パイソン(Python)は世界中で流行っているプログラミング言語の一つです。" +"プログラミング言語は、人間が理解できる言葉をコンピューターのスイッチが理解" +"できる命令へ翻訳するものです。例えば、「サンドウィッチを作る」為のプログラムは" +"「パンを取る」、「ナイフを取る」、「パンをお皿に置く」など、サンドウィッチを" +"作る為に必要なステップを順番で実行していくのです。コックさんが日本語で書かれて" +"いるレシピに沿って料理をすると同じように、コンピューターはパイソンで書かれて" +"いるプログラムを実行します。パイソンはマインクラフトで火山を作ったり、ユー" +"チューブから「ガンダムスタイル」をダウンロードしたり、又はニューヨーク株で" +"何億ドルを動かしたりすることができるのです。" #: ../kano_updater/ui/stage_text.py:71 msgid "" @@ -410,6 +440,17 @@ msgid "" "powerup ideas. Want a look inside Kano HQ? Hang with our wizards at blog." "kano.me" msgstr "" +"\"Kano\"と言う名前の由来は、嘉納治五郎(かのうじごろう)から来ています。" +"日本の先生で「柔道の父」と呼ばれています。彼のモットーは:「精力善用」で" +"心身の持つすべての力を最大限に生かして、社会のために善い方向に用いると言う" +"意味です。また、ギリシャ語でKanoは「私が作る」と言う意味です。(Kanoは" +"北ニジェリアの市場大きい街でもあるのす)。Kanoは他のコンピューターとどう" +"違うのでしょう?Kanoの頭脳にある全てのアイディアは完全に公開されています。" +"github.com/KanoComputingに行けば、Kanoのソースコードが見られます。" +"そしてKanoは形を変えられて、ロボット、サーバー、ラジオなどに変身できます。" +"world.kano.me/projectsで素晴らしいアイディアが載っています。" +"Kano本社の中を見たいですか?blog.kano.meでKanoの魔法使いにお会い" +"出来ます。" #: ../kano_updater/ui/stage_text.py:83 msgid "" @@ -421,6 +462,13 @@ msgid "" "Station also uses to run its robotic systems — to keep the astronauts from " "losing their lunch!" msgstr "" +"Kano OSはオペレーティング・システムで、全てのプログラムをお互いと接続して" +"います。このOSはLinuxに基づいていて、オープンソースになっています。つまり、" +"誰でもが自由にダウンロードや修正でき、売ることもできます。このコードはプロ" +"だけでなく、世界中の多くのアマチュアやメーカーが協力して書いています。" +"KanoはDebianと言うLinuxの面白いディストリビューション(配布パッケージ)を" +"使っていて、国際宇宙ステーションのロボットシステムで宇宙飛行士のお世話をする" +"為にも使われています。" #: ../kano_updater/ui/stage_text.py:94 msgid "" @@ -429,6 +477,11 @@ msgid "" "more. Your computer is open, and its powers are at your command. If you want " "to get new cool projects from us each week, join the community at" msgstr "" +"もう少しで終わりです!あなたのKanoコンピューターでは面白いゲームや音楽を作り、" +"家でビデオを見たり、ストーリーを語ったりすることが出来るのです。あなたの" +"コンピューターは完全にオープンで、その力を制御できます。" +"面白い新しいプロジェクトを毎週手に入れるには、コミュニティーにこちらから" +"参加してみよう。" #: ../kano_updater/ui/stage_text.py:101 msgid "" From 89dc83645af1c02c4ef0a9416c2dd98133f98a7b Mon Sep 17 00:00:00 2001 From: Antoine Choppin Date: Wed, 6 Jul 2016 22:19:59 +0900 Subject: [PATCH 11/11] Add missing translation --- po/ja.po | 105 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 54 insertions(+), 51 deletions(-) diff --git a/po/ja.po b/po/ja.po index e25cb766..1b42d9c9 100644 --- a/po/ja.po +++ b/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: kano-updater\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-16 21:47+0900\n" +"POT-Creation-Date: 2016-07-06 22:17+0900\n" "PO-Revision-Date: 2016-06-03 22:59+0900\n" "Last-Translator: Choppin Antoine \n" "Language-Team: Japanese\n" @@ -50,6 +50,7 @@ msgid "No updates found." msgstr "アップデートは見つかりません。" #: ../kano_updater/apt_wrapper.py:54 ../kano_updater/commands/download.py:136 +#: ../kano_updater/commands/install.py:175 msgid "Updating apt sources" msgstr "APTソースをアップデート中" @@ -178,7 +179,7 @@ msgstr "ダウンロード完了" msgid "Downloading {}" msgstr "{}ダウンロード中" -#: ../kano_updater/commands/download.py:191 +#: ../kano_updater/commands/download.py:190 msgid "Downloading the '{}' pip package failed." msgstr "'{}'と言うpipパッケージのダウンロードが失敗しました" @@ -199,7 +200,7 @@ msgid "Installing updates" msgstr "アップデートをインストール中" #: ../kano_updater/commands/install.py:143 -#: ../kano_updater/commands/install.py:181 +#: ../kano_updater/commands/install.py:200 #: ../kano_updater/ui/install_window.py:130 msgid "Update completed" msgstr "アップデート完了" @@ -212,39 +213,43 @@ msgstr "インストールは既に実行中です" msgid "tried to install non-independent package {} using update_ind_pkg" msgstr "update_ind_pkgで非独立パッケージ{}をインストールしてみました" -#: ../kano_updater/commands/install.py:189 +#: ../kano_updater/commands/install.py:180 +msgid "Installing independent package" +msgstr "独立したパッケージをインストール中" + +#: ../kano_updater/commands/install.py:208 msgid "Installing Hotfix" msgstr "ホットフィックスをインストール中" -#: ../kano_updater/commands/install.py:216 +#: ../kano_updater/commands/install.py:235 msgid "Starting Update" msgstr "アップデートを開始します" -#: ../kano_updater/commands/install.py:222 +#: ../kano_updater/commands/install.py:241 msgid "Updating Itself" msgstr "自己アップデート中" -#: ../kano_updater/commands/install.py:228 +#: ../kano_updater/commands/install.py:247 msgid "Running The Preupdate Scripts" msgstr "アップデートの前処理を実行中" -#: ../kano_updater/commands/install.py:234 +#: ../kano_updater/commands/install.py:253 msgid "Updating Pip Packages" msgstr "Pipパッケージをアップデート中" -#: ../kano_updater/commands/install.py:240 +#: ../kano_updater/commands/install.py:259 msgid "Updating Deb Packages" msgstr "Debパッケージをアップデート中" -#: ../kano_updater/commands/install.py:246 +#: ../kano_updater/commands/install.py:265 msgid "Running The Postupdate Scripts" msgstr "アップデートの後処理を実行中" -#: ../kano_updater/commands/install.py:252 +#: ../kano_updater/commands/install.py:271 msgid "Performing auxiliary tasks" msgstr "追加処理を実施しています" -#: ../kano_updater/commands/install.py:273 +#: ../kano_updater/commands/install.py:292 msgid "" "Unfortunately, your version of Kano OS is too old to be updated through the " "updater." @@ -252,31 +257,31 @@ msgstr "" "まことに申し訳ありませんが、アップデーターでアップデートするにはKano OSが古す" "ぎます。" -#: ../kano_updater/commands/install.py:275 +#: ../kano_updater/commands/install.py:294 msgid "You will need to download the image of the OS and reflash your SD card." msgstr "OSイメージをダウンロードし、SDカードを焼き直す必要があります。" -#: ../kano_updater/commands/install.py:297 +#: ../kano_updater/commands/install.py:316 msgid "The updater has been updated, relaunching." msgstr "アップデーターがアップデートされました。再起動します。" -#: ../kano_updater/commands/install.py:307 +#: ../kano_updater/commands/install.py:326 msgid "The pre-update tasks failed." msgstr "アップデートの前処理が失敗しました。" -#: ../kano_updater/commands/install.py:324 +#: ../kano_updater/commands/install.py:343 msgid "The post-update tasks failed." msgstr "アップデートの後処理が失敗しました。" -#: ../kano_updater/commands/install.py:349 +#: ../kano_updater/commands/install.py:368 msgid "Installing {}" msgstr "{}をインストール中" -#: ../kano_updater/progress.py:311 +#: ../kano_updater/progress.py:324 msgid "No tty, selecting the default answer for '{}' which is: {}" msgstr "ttyが無い為、'{}'に対するデフォルト回答({})を選択します" -#: ../kano_updater/progress.py:322 +#: ../kano_updater/progress.py:335 msgid "Type one of these: {}" msgstr "次の中から選んでください: {}" @@ -418,15 +423,15 @@ msgid "" "\"Gangnam Style\" from YouTube, and move millions of dollars in the New York " "Stock Exchange." msgstr "" -"パイソン(Python)は世界中で流行っているプログラミング言語の一つです。" -"プログラミング言語は、人間が理解できる言葉をコンピューターのスイッチが理解" -"できる命令へ翻訳するものです。例えば、「サンドウィッチを作る」為のプログラムは" -"「パンを取る」、「ナイフを取る」、「パンをお皿に置く」など、サンドウィッチを" -"作る為に必要なステップを順番で実行していくのです。コックさんが日本語で書かれて" -"いるレシピに沿って料理をすると同じように、コンピューターはパイソンで書かれて" -"いるプログラムを実行します。パイソンはマインクラフトで火山を作ったり、ユー" -"チューブから「ガンダムスタイル」をダウンロードしたり、又はニューヨーク株で" -"何億ドルを動かしたりすることができるのです。" +"パイソン(Python)は世界中で流行っているプログラミング言語の一つです。プログラ" +"ミング言語は、人間が理解できる言葉をコンピューターのスイッチが理解できる命令" +"へ翻訳するものです。例えば、「サンドウィッチを作る」為のプログラムは「パンを" +"取る」、「ナイフを取る」、「パンをお皿に置く」など、サンドウィッチを作る為に" +"必要なステップを順番で実行していくのです。コックさんが日本語で書かれているレ" +"シピに沿って料理をすると同じように、コンピューターはパイソンで書かれているプ" +"ログラムを実行します。パイソンはマインクラフトで火山を作ったり、ユーチューブ" +"から「ガンダムスタイル」をダウンロードしたり、又はニューヨーク株で何億ドルを" +"動かしたりすることができるのです。" #: ../kano_updater/ui/stage_text.py:71 msgid "" @@ -440,17 +445,16 @@ msgid "" "powerup ideas. Want a look inside Kano HQ? Hang with our wizards at blog." "kano.me" msgstr "" -"\"Kano\"と言う名前の由来は、嘉納治五郎(かのうじごろう)から来ています。" -"日本の先生で「柔道の父」と呼ばれています。彼のモットーは:「精力善用」で" -"心身の持つすべての力を最大限に生かして、社会のために善い方向に用いると言う" -"意味です。また、ギリシャ語でKanoは「私が作る」と言う意味です。(Kanoは" -"北ニジェリアの市場大きい街でもあるのす)。Kanoは他のコンピューターとどう" -"違うのでしょう?Kanoの頭脳にある全てのアイディアは完全に公開されています。" -"github.com/KanoComputingに行けば、Kanoのソースコードが見られます。" -"そしてKanoは形を変えられて、ロボット、サーバー、ラジオなどに変身できます。" -"world.kano.me/projectsで素晴らしいアイディアが載っています。" -"Kano本社の中を見たいですか?blog.kano.meでKanoの魔法使いにお会い" -"出来ます。" +"\"Kano\"と言う名前の由来は、嘉納治五郎(かのうじごろう)から来ています。日本の" +"先生で「柔道の父」と呼ばれています。彼のモットーは:「精力善用」で心身の持つ" +"すべての力を最大限に生かして、社会のために善い方向に用いると言う意味です。ま" +"た、ギリシャ語でKanoは「私が作る」と言う意味です。(Kanoは北ニジェリアの市場" +"大きい街でもあるのす)。Kanoは他のコンピューターとどう違うのでしょう?Kanoの" +"頭脳にある全てのアイディアは完全に公開されています。github.com/" +"KanoComputingに行けば、Kanoのソースコードが見られます。そしてKanoは形を変" +"えられて、ロボット、サーバー、ラジオなどに変身できます。world.kano.me/" +"projectsで素晴らしいアイディアが載っています。Kano本社の中を見たいです" +"か?blog.kano.meでKanoの魔法使いにお会い出来ます。" #: ../kano_updater/ui/stage_text.py:83 msgid "" @@ -462,13 +466,13 @@ msgid "" "Station also uses to run its robotic systems — to keep the astronauts from " "losing their lunch!" msgstr "" -"Kano OSはオペレーティング・システムで、全てのプログラムをお互いと接続して" -"います。このOSはLinuxに基づいていて、オープンソースになっています。つまり、" -"誰でもが自由にダウンロードや修正でき、売ることもできます。このコードはプロ" -"だけでなく、世界中の多くのアマチュアやメーカーが協力して書いています。" -"KanoはDebianと言うLinuxの面白いディストリビューション(配布パッケージ)を" -"使っていて、国際宇宙ステーションのロボットシステムで宇宙飛行士のお世話をする" -"為にも使われています。" +"Kano OSはオペレーティング・システムで、全てのプログラムをお互いと接続していま" +"す。このOSはLinuxに基づいていて、オープンソースになっています。つまり、誰でも" +"が自由にダウンロードや修正でき、売ることもできます。このコードはプロだけでな" +"く、世界中の多くのアマチュアやメーカーが協力して書いています。KanoはDebianと" +"言うLinuxの面白いディストリビューション(配布パッケージ)を使っていて、国際宇" +"宙ステーションのロボットシステムで宇宙飛行士のお世話をする為にも使われていま" +"す。" #: ../kano_updater/ui/stage_text.py:94 msgid "" @@ -477,11 +481,10 @@ msgid "" "more. Your computer is open, and its powers are at your command. If you want " "to get new cool projects from us each week, join the community at" msgstr "" -"もう少しで終わりです!あなたのKanoコンピューターでは面白いゲームや音楽を作り、" -"家でビデオを見たり、ストーリーを語ったりすることが出来るのです。あなたの" -"コンピューターは完全にオープンで、その力を制御できます。" -"面白い新しいプロジェクトを毎週手に入れるには、コミュニティーにこちらから" -"参加してみよう。" +"もう少しで終わりです!あなたのKanoコンピューターでは面白いゲームや音楽を作" +"り、家でビデオを見たり、ストーリーを語ったりすることが出来るのです。あなたの" +"コンピューターは完全にオープンで、その力を制御できます。面白い新しいプロジェ" +"クトを毎週手に入れるには、コミュニティーにこちらから参加してみよう。" #: ../kano_updater/ui/stage_text.py:101 msgid ""