diff getan/states.py @ 36:e6f81aa329b1

Introduced i18n support; german and english translation available.
author Ingo Weinzierl <ingo_weinzierl@web.de>
date Sat, 02 Oct 2010 22:22:35 +0200
parents fea63a224065
children 68cc10d082ab
line wrap: on
line diff
--- a/getan/states.py	Sun Sep 05 15:54:44 2010 +0200
+++ b/getan/states.py	Sat Oct 02 22:22:35 2010 +0200
@@ -12,7 +12,8 @@
 import signal
 from   datetime import datetime, timedelta
 
-from getan.utils import human_time
+from getan.resources import gettext as _
+from getan.utils     import human_time
 
 logger = logging.getLogger()
 
@@ -44,7 +45,7 @@
 
 class PausedProjectsState(ProjectState):
     messages = {
-        'choose_proj': u" Wählen Sie ein Projekt:"
+        'choose_proj': _('Choose a project: '),
     }
 
     def keypress(self, key):
@@ -94,8 +95,8 @@
 
 class ExitState(ProjectState):
     messages = {
-        'quit'  : u" Wirklich beenden? (y/n)",
-        'choose': u" Wählen Sie ein Projekt:"
+        'quit'  : _(" Really quit? (y/n)"),
+        'choose': _(" Choose a project:")
     }
 
     def __init__(self, controller, view):
@@ -120,10 +121,12 @@
 
 class RunningProjectsState(ProjectState):
     messages = {
-        'description': u" Geben Sie eine Beschreibung ein: ",
-        'add_time'   : u" Geben Sie die zu addierende Zeit ein [min]: ",
-        'min_time'   : u" Geben Sie die zu abzuziehende Zeit ein [min]: ",
-        'paused'     : u" 'Space' zum Fortzusetzen",
+        'description': _("Enter a description: "),
+        'add_time'   : _("Enter time to add [min]: "),
+        'min_time'   : _("Enter time to subtract [min]: "),
+        'continue'   : _("Press 'Space' to continue."),
+        'running'    : _("Running ( %s ) on '%s'."),
+        'paused'     : _(" Break   ( %s )%s."),
     }
 
     sec         = 0
@@ -137,7 +140,7 @@
     def handle_signal(self, signum, frame):
         proj = self.view.item_in_focus()
         if not self.break_start:
-            self.controller.view.set_footer_text(" Running ( %s ) on '%s'" %
+            self.controller.view.set_footer_text(self.msg('running') %
                                                  (human_time(self.sec),
                                                   proj.desc),
                                                  'running')
@@ -145,9 +148,9 @@
             self.sec = self.sec + 1
         else:
             self.view.set_footer_text(
-                ' Break   ( %s )%s' %
+                self.msg('paused') %
                 (human_time((datetime.now()-self.break_start).seconds),
-                 self.msg('paused')),
+                 self.msg('continue')),
                 'paused_running')
             self.controller.view.loop.draw_screen()
 
@@ -164,7 +167,7 @@
             return self.stop()
         if '+' in key:
             self.view.set_footer_text(self.msg('add_time'),
-                                                 'question', 1)
+                                               'question', 1)
             self.view.frame.set_focus('footer')
             return AddTimeState(self.controller, self.view, self)
         if '-' in key:
@@ -283,7 +286,7 @@
 
 class DescriptionProjectsState(HandleUserInputState):
     messages = {
-        'choose_proj': u" Wählen Sie ein Projekt."
+        'choose_proj': _(" Choose a project."),
     }
 
     def enter(self):
@@ -361,7 +364,7 @@
 
 class DeleteEntryState(EntryListState):
     messages = {
-        'delete'  : u" Wirklich löschen? (y/n)",
+        'delete'  : _("Really delete this entry? (y/n)"),
     }
 
     def __init__(self, state, controller, view):
@@ -392,8 +395,8 @@
 
 class MoveEntryState(EntryListState):
     messages = {
-        'project': u" In welches Projekt möchten Sie die Einträge verschieben?",
-        'really':  u" Sind sie sich sicher? (y/n)",
+        'project': _(" Into which project do you want to move these entries?"),
+        'really':  _(" Are you sure? (> %s) (y/n)"),
     }
 
     proj = None
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)