Merge lp:~jsjgruber/lernid/lernid-proposed into lp:lernid

Proposed by John S. Gruber
Status: Merged
Merged at revision: 231
Proposed branch: lp:~jsjgruber/lernid/lernid-proposed
Merge into: lp:lernid
Diff against target: 5165 lines (+2570/-770)
45 files modified
bin/lernid (+12/-3)
debian/changelog (+212/-0)
debian/control (+6/-9)
debian/copyright (+2/-3)
debian/rules (+7/-7)
debian/source/format (+1/-0)
etc/lernid-classrooms.d/ubuntu-charlas (+1/-0)
etc/lernid-classrooms.d/ubuntu-classroom (+1/-0)
lernid-classroom.5 (+99/-0)
lernid.1 (+82/-0)
lernid/ConnectDialog.py (+8/-0)
lernid/Event.py (+9/-2)
lernid/EventManager.py (+25/-9)
lernid/IrcBackend.py (+52/-12)
lernid/LernidPreferences.py (+65/-54)
lernid/PreferencesLernidDialog.py (+1/-1)
lernid/Sessions.py (+63/-15)
lernid/lernidconfig.py (+1/-1)
lernid/widgets/Browser.py (+3/-2)
lernid/widgets/Classroom.py (+3/-2)
lernid/widgets/IrcWidget.py (+13/-9)
lernid/widgets/NativeChatroom.py (+4/-3)
lernid/widgets/Schedule.py (+228/-26)
lernid/widgets/Slide.py (+81/-16)
po/af.po (+6/-5)
po/ar.po (+4/-4)
po/da.po (+17/-5)
po/de.po (+12/-5)
po/en_AU.po (+317/-89)
po/en_CA.po (+17/-4)
po/es.po (+9/-92)
po/eu.po (+38/-5)
po/he.po (+67/-51)
po/hr.po (+6/-62)
po/it.po (+8/-90)
po/lernid.pot (+213/-72)
po/ms.po (+245/-72)
po/nb.po (+5/-4)
po/nl.po (+3/-3)
po/oc.po (+284/-0)
po/pt_BR.po (+17/-5)
po/sv.po (+41/-27)
po/tr.po (+280/-0)
pyversions (+1/-0)
setup.py (+1/-1)
To merge this branch: bzr merge lp:~jsjgruber/lernid/lernid-proposed
Reviewer Review Type Date Requested Status
John S. Gruber Pending
Review via email: mp+101778@code.launchpad.net

Description of the change

Please see the changelog for all of the changes.

To post a comment you must log in.
lp:~jsjgruber/lernid/lernid-proposed updated
231. By John S. Gruber

* Merge lernid-proposed
* Merge translations
* Disable all plugins through webkit settings so they won't crash
  lernid. Future webkit releases may run plugins in a separate
  process allowing us to reconsider this eventually.
  lernid/widgets/Browser.py . Closes LP: #995695.
* Don't add irc logs for future events in lernid/widgets/Schedule.py
* Change version number and create new version of .pot files
* Fix scrolling case when there are no sessions in the schedule timeframe.
* Underline Irclog entries to make it apparent that they are clickable.
* Change version number and create new version of .pot files
* Get rid of slide error message more quickly, and when a new attempt
  is made to download slides.
* Don't release the nick--it causes the server to change previous
  signons elsewhere to Guestn.
* Add calendar override option for use in testing.
* Create irclog lines for current and future sessions, too.
* If there are no future sessions, scroll to the bottom of the calendar.
* Add the --no-update command line option to supress lernid's
  scheduled schedule updates.
* Scramble the calendar domain name before every calendar download
* At disconnect time, be sure schedule _update handle is removed. Don't
  let an initial calendar load ending after an event is disconnected
  produce schedule the update chain.
* Ignore callbacks from cancelled messages
* Select time to trigger calendar updates from a list. At :06 after
  the hour and half hour. Other times are :01, :11, :21, :31, :41, :51
* Add remarks about the schedule buttons in the lernid man page.
* Clean up some corner cases when events are terminated. Schedule._event
  is now None when there is no event active. Rename irclog click callback.
* Remove event interrupted message when the next connection is made.
* When a new slide load attempt is made, stop outstanding I/O and retries.
* Add a schedule refresh button
* Clean up and simplify calendar reload scheduling. Only load it every
  ten minutes and once a night to produce a new irclog entry in the
  schedule.
* Be sure we don't pre-announce the same session twice in a row.
* Make server disconnections more robust
* New version number; new .pot file. Clear lintian errors
* Depend on python version 2.6 as lernid uses the io module
* Don't reparse calendar unless it has changed. Simplify
  _calendar_refresh parameters.
* Don't scroll schedule unless we have just connected to an event.`
* Increment release version by .1. Adjust version number in package.
  Make python-support a straight build dependency for now to avoid
  bug 594916 in launchpad's builder.
* Correct problem using non-existent event preferences setting; advance
  version by .1
* Set up new release
* Create new translation .pot file
* Merge translations
* Use nick from connect dialog when reconnecting
* Make nick used in irc rooms reflect the nick assigned by the server and
  display a status message when it is changed
* Correct message insertion into irc text buffers.
* Fix traceback when issuing error message for attempt at irc command
  (LP: #925702)
* Add clasebot to list of classbot names. (LP: #916629)
* Time out the join message after 10 seconds. (LP: #806801)
* Time out various additional status messages. Avoid initial "learning
  material" message. (LP: #806805)
* Disconnect channel signal handlers, if any, when the server connection
  is closed. Prevents messages from being repeated after multiple
  disconnects and connects.
* Correct default events (classrooms). Use a temporary file to allow the
  configparser to read the default config as a utf-8 encoded string --
  matching how it reads all other configs from disk or web.
* Simplify nickname handling somewhat. Use version as fullname in initial
  sign-on. (LP: #850419, LP: #838557)
* Remove "Question:" unicode space marking.
* Change copyright format-spec: line to current format: line and
  update standards to 3.9.3.1
* Convert to debhelper7 from cdbs
* Use dh_python2 for build if available; use python-support if not
  (Removes need for python-central). Thanks to Monty Taylor for
  the conditional code. (LP: #801281)

* Remove desktopcouch configuration saving as Ubuntu One doesn't support
  it. (LP: #893738, LP: #795492)
* In connect dialog default to last event chosen. (LP: #838505)
* Expose the event icalurl in two ways, to the clipboard, and opened using
    the default method for the url. Also replace the slide opening function
    with the same gtk.show_uri function, removing the need for webbrowser.
    Also eliminate the gtk.viewport, tree views are scrollable so this
    is redundant (and I think, should have been a child of the scrolling
    window, not its parent, if I read the documentation correctly).
    (LP: #530054).
* Slide.py have poppler render to a cairo surface and use a trick to
  get that into the pixmap. (LP: #972069)
  (Technique from diogodivision's "BlingSwitcher" through
  http://www.mikedesjardins.net. Thank you.)
* Dynamically load the schedule each minute at 5 seconds past the minute
  Addresses LP: #925756, LP: #835806
* Try to reload slides three times at random intervals
* Add a lernid man page and another to describe classroom config files and
  calendar event (session) description fields.
* Insert references to irc logs. New config setting logstring provides
  the skeleton uri for the logs. LP: #794124

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'bin/lernid'
--- bin/lernid 2011-08-28 13:38:22 +0000
+++ bin/lernid 2012-05-07 00:49:19 +0000
@@ -54,7 +54,7 @@
54 fullPath = os.getcwd()54 fullPath = os.getcwd()
55sys.path.insert(0, os.path.dirname(fullPath))55sys.path.insert(0, os.path.dirname(fullPath))
5656
57from lernid.CouchDBPreferences import Preferences57from lernid.LernidPreferences import Preferences
58from lernid.LernidOptions import Options58from lernid.LernidOptions import Options
59from lernid import AboutLernidDialog, PreferencesLernidDialog59from lernid import AboutLernidDialog, PreferencesLernidDialog
60from lernid.lernidconfig import get_data_path, save_cache_path60from lernid.lernidconfig import get_data_path, save_cache_path
@@ -137,8 +137,12 @@
137 self.TAB_SESSION = 0137 self.TAB_SESSION = 0
138 self.TAB_SCHEDULE = 1138 self.TAB_SCHEDULE = 1
139 self.TAB_TERMINAL = 2139 self.TAB_TERMINAL = 2
140 self.ignore_initial_tab_change = True
140141
141 def highlight_session_tab(w, url=None):142 def highlight_session_tab(w, url=None):
143 if self.ignore_initial_tab_change:
144 self.ignore_initial_tab_change = False
145 return
142 if self._tabs.get_current_page() != self.TAB_SESSION:146 if self._tabs.get_current_page() != self.TAB_SESSION:
143 eye_catcher = u"<span color='red'>●</span><span color='yellow'>●</span><span color='blue'>●</span>"147 eye_catcher = u"<span color='red'>●</span><span color='yellow'>●</span><span color='blue'>●</span>"
144 self._session_label.set_label(eye_catcher + ' %s' % _('_Session'))148 self._session_label.set_label(eye_catcher + ' %s' % _('_Session'))
@@ -159,7 +163,7 @@
159 except:163 except:
160 logging.error("Notification failed to show for Interrupted Event Message")164 logging.error("Notification failed to show for Interrupted Event Message")
161 Statusbar.push_message(_('Event Connection Interrupted -- '165 Statusbar.push_message(_('Event Connection Interrupted -- '
162 'Please reestablish your Internet connection and reconnect to the event'))166 'Please reestablish your Internet connection and reconnect to the event'), 'interrupt_message')
163 self.emit('event-disconnect', event)167 self.emit('event-disconnect', event)
164168
165 self._browser.connect('page-changed', highlight_session_tab)169 self._browser.connect('page-changed', highlight_session_tab)
@@ -209,6 +213,7 @@
209213
210 self._eventman.connect('event-interrupted', event_interrupted)214 self._eventman.connect('event-interrupted', event_interrupted)
211 def event_connected(self, event):215 def event_connected(self, event):
216 Statusbar.pop_message('interrupt_message')
212 glib.timeout_add_seconds( 12, event_message, self)217 glib.timeout_add_seconds( 12, event_message, self)
213 return False218 return False
214219
@@ -508,13 +513,17 @@
508 help=_('Override chatroom channel'))513 help=_('Override chatroom channel'))
509 Options.add_option('--config', action='store', default=None,514 Options.add_option('--config', action='store', default=None,
510 help=_('Filename or URL to Lernid config file'))515 help=_('Filename or URL to Lernid config file'))
516 Options.add_option('--no-update', action='store_true', default=False,
517 help=_("Don't automatically reload the schedule"))
511 Options.add_option('--web-chat', action='store_true', default=False,518 Options.add_option('--web-chat', action='store_true', default=False,
512 help=_('Use web chat widget instead of the native one'))519 help=_('Use web chat widget instead of the native one'))
513 Options.add_option('--unsafe-override', action='store_true', default=False,520 Options.add_option('--unsafe-override', action='store_true', default=False,
514 help=_('Unsafe testing option'))521 help=_('Unsafe testing option'))
515 Options.add_option('--avoid-desktopcouch', action='store_true', default=False,522 Options.add_option('--avoid-desktopcouch', action='store_true', default=False,
516 help=_('Debugging option to avoid desktopcouch'),523 help=_('Unused debugging option to avoid desktopcouch'),
517 dest = 'avoid_desktopcouch')524 dest = 'avoid_desktopcouch')
525 Options.add_option('--calendar', action='store', default=None,
526 help=_('Override calendar location'))
518 Options.parse_args()527 Options.parse_args()
519528
520 # Set the logging level to show debug messages529 # Set the logging level to show debug messages
521530
=== modified file 'debian/changelog'
--- debian/changelog 2011-09-03 19:34:22 +0000
+++ debian/changelog 2012-05-07 00:49:19 +0000
@@ -1,3 +1,215 @@
1lernid (0.8.4.9) precise; urgency=low
2
3 * Disable all plugins through webkit settings so they won't crash
4 lernid. Future webkit releases may run plugins in a separate
5 process allowing us to reconsider this eventually.
6 lernid/widgets/Browser.py . Closes LP: #995695.
7
8 -- John S Gruber <JohnSGruber@gmail.com> Sun, 06 May 2012 20:38:42 -0400
9
10lernid (0.8.4.8) precise; urgency=low
11
12 * Don't add irc logs for future events in lernid/widgets/Schedule.py
13
14 -- John S Gruber <JohnSGruber@gmail.com> Thu, 03 May 2012 21:14:55 -0400
15
16lernid (0.8.4.7) precise; urgency=low
17
18 * Change version number and create new version of .pot files
19
20 * Fix scrolling case when there are no sessions in the schedule timeframe.
21
22 * Underline Irclog entries to make it apparent that they are clickable.
23
24 -- John S Gruber <JohnSGruber@gmail.com> Sat, 28 Apr 2012 00:12:17 -0400
25
26lernid (0.8.4.6) precise; urgency=low
27
28 * Change version number and create new version of .pot files
29
30 * Get rid of slide error message more quickly, and when a new attempt
31 is made to download slides.
32
33 -- John S Gruber <JohnSGruber@gmail.com> Mon, 23 Apr 2012 15:10:53 -0400
34
35lernid (0.8.4.5) precise; urgency=low
36
37 * Don't release the nick--it causes the server to change previous
38 signons elsewhere to Guestn.
39
40 * Add calendar override option for use in testing.
41
42 * Create irclog lines for current and future sessions, too.
43
44 * If there are no future sessions, scroll to the bottom of the calendar.
45
46 * Add the --no-update command line option to supress lernid's
47 scheduled schedule updates.
48
49 * Scramble the calendar domain name before every calendar download
50
51 * At disconnect time, be sure schedule _update handle is removed. Don't
52 let an initial calendar load ending after an event is disconnected
53 produce schedule the update chain.
54
55 * Ignore callbacks from cancelled messages
56
57 * Select time to trigger calendar updates from a list. At :06 after
58 the hour and half hour. Other times are :01, :11, :21, :31, :41, :51
59
60 * Add remarks about the schedule buttons in the lernid man page.
61
62 * Clean up some corner cases when events are terminated. Schedule._event
63 is now None when there is no event active. Rename irclog click callback.
64
65 * Remove event interrupted message when the next connection is made.
66
67 * When a new slide load attempt is made, stop outstanding I/O and retries.
68
69 * Add a schedule refresh button
70
71 * Clean up and simplify calendar reload scheduling. Only load it every
72 ten minutes and once a night to produce a new irclog entry in the
73 schedule.
74
75 * Be sure we don't pre-announce the same session twice in a row.
76
77 * Make server disconnections more robust
78
79 -- John S Gruber <JohnSGruber@gmail.com> Sun, 22 Apr 2012 20:03:52 -0400
80
81lernid (0.8.4.4) precise; urgency=low
82
83 * New version number; new .pot file. Clear lintian errors
84
85 -- John S Gruber <JohnSGruber@gmail.com> Sun, 15 Apr 2012 22:29:02 -0400
86
87lernid (0.8.4.3) precise; urgency=low
88
89 * Depend on python version 2.6 as lernid uses the io module
90
91 * Don't reparse calendar unless it has changed. Simplify
92 _calendar_refresh parameters.
93
94 * Don't scroll schedule unless we have just connected to an event.`
95
96 -- John S Gruber <JohnSGruber@gmail.com> Sun, 15 Apr 2012 20:23:07 -0400
97
98lernid (0.8.4.2) precise; urgency=low
99
100 * Increment release version by .1. Adjust version number in package.
101 Make python-support a straight build dependency for now to avoid
102 bug 594916 in launchpad's builder.
103
104 -- John S Gruber <JohnSGruber@gmail.com> Wed, 11 Apr 2012 22:39:02 -0400
105
106lernid (0.8.4.1) precise; urgency=low
107
108 * Correct problem using non-existent event preferences setting; advance
109 version by .1
110
111 -- John S Gruber <JohnSGruber@gmail.com> Wed, 11 Apr 2012 20:56:03 -0400
112
113lernid (0.8.4) precise; urgency=low
114
115 * Set up new release
116
117 -- John S Gruber <JohnSGruber@gmail.com> Wed, 11 Apr 2012 13:20:03 -0400
118
119lernid (0.8.2.7) precise; urgency=low
120
121 * Create new translation .pot file
122
123 -- John S Gruber <JohnSGruber@gmail.com> Wed, 11 Apr 2012 13:17:05 -0400
124
125lernid (0.8.2.6) precise; urgency=low
126
127 * Merge translations
128
129 -- John S Gruber <JohnSGruber@gmail.com> Wed, 11 Apr 2012 13:10:28 -0400
130
131lernid (0.8.2.5) precise; urgency=low
132
133 * Use nick from connect dialog when reconnecting
134
135 * Make nick used in irc rooms reflect the nick assigned by the server and
136 display a status message when it is changed
137
138 -- John S Gruber <JohnSGruber@gmail.com> Wed, 11 Apr 2012 12:31:11 -0400
139
140lernid (0.8.2.4) precise; urgency=low
141
142 * Correct message insertion into irc text buffers.
143
144 -- John S Gruber <JohnSGruber@gmail.com> Tue, 10 Apr 2012 19:26:25 -0400
145
146lernid (0.8.2.3) precise; urgency=low
147
148 [ Mohammad AbuShady ]
149 * Fix traceback when issuing error message for attempt at irc command
150 (LP: #925702)
151
152 * Add clasebot to list of classbot names. (LP: #916629)
153
154 * Time out the join message after 10 seconds. (LP: #806801)
155
156 [ John S Gruber]
157 * Time out various additional status messages. Avoid initial "learning
158 material" message. (LP: #806805)
159
160 * Disconnect channel signal handlers, if any, when the server connection
161 is closed. Prevents messages from being repeated after multiple
162 disconnects and connects.
163
164 * Correct default events (classrooms). Use a temporary file to allow the
165 configparser to read the default config as a utf-8 encoded string --
166 matching how it reads all other configs from disk or web.
167
168 * Simplify nickname handling somewhat. Use version as fullname in initial
169 sign-on. (LP: #850419, LP: #838557)
170
171 * Remove "Question:" unicode space marking.
172
173 * Change copyright format-spec: line to current format: line and
174 update standards to 3.9.3.1
175
176 * Convert to debhelper7 from cdbs
177
178 * Use dh_python2 for build if available; use python-support if not
179 (Removes need for python-central). Thanks to Monty Taylor for
180 the conditional code. (LP: #801281)
181
182 * Remove desktopcouch configuration saving as Ubuntu One doesn't support
183 it. (LP: #893738, LP: #795492)
184
185 * In connect dialog default to last event chosen. (LP: #838505)
186
187 * Expose the event icalurl in two ways, to the clipboard, and opened using
188 the default method for the url. Also replace the slide opening function
189 with the same gtk.show_uri function, removing the need for webbrowser.
190 Also eliminate the gtk.viewport, tree views are scrollable so this
191 is redundant (and I think, should have been a child of the scrolling
192 window, not its parent, if I read the documentation correctly).
193 (LP: #530054).
194
195 * Slide.py have poppler render to a cairo surface and use a trick to
196 get that into the pixmap. (LP: #972069)
197 (Technique from diogodivision's "BlingSwitcher" through
198 http://www.mikedesjardins.net. Thank you.)
199
200 * Dynamically load the schedule each minute at 5 seconds past the minute
201 Addresses LP: #925756, LP: #835806
202
203 * Try to reload slides three times at random intervals
204
205 * Add a lernid man page and another to describe classroom config files and
206 calendar event (session) description fields.
207
208 * Insert references to irc logs. New config setting logstring provides
209 the skeleton uri for the logs. LP: #794124
210
211 -- John S Gruber <JohnSGruber@gmail.com> Sat, 07 Apr 2012 19:34:43 -0400
212
1lernid (0.8.2.2) natty; urgency=low213lernid (0.8.2.2) natty; urgency=low
2214
3 * Ready for release215 * Ready for release
4216
=== modified file 'debian/control'
--- debian/control 2011-06-27 23:02:17 +0000
+++ debian/control 2012-05-07 00:49:19 +0000
@@ -1,18 +1,17 @@
1Source: lernid1Source: lernid
2Section: net2Section: net
3Priority: extra3Priority: extra
4Build-Depends: cdbs (>= 0.4.43),4Build-Depends:
5 debhelper (>= 6),5 debhelper (>= 7.0.50~),
6 python,6 python (>= 2.6),
7 python-central (>= 0.6.11),7 python-support
8Build-Depends-Indep: python-distutils-extra (>= 2.10)8Build-Depends-Indep: python-distutils-extra (>= 2.10)
9Maintainer: John S Gruber <johnsgruber@gmail.com>9Maintainer: John S Gruber <johnsgruber@gmail.com>
10Standards-Version: 3.9.110Standards-Version: 3.9.3.1
11XS-Python-Version: current11X-Python-Version: >=2.6
1212
13Package: lernid13Package: lernid
14Architecture: all14Architecture: all
15XB-Python-Version: ${python:Versions}
16Depends: ${misc:Depends},15Depends: ${misc:Depends},
17 ${python:Depends},16 ${python:Depends},
18 telepathy-idle,17 telepathy-idle,
@@ -20,13 +19,11 @@
20 python-telepathy,19 python-telepathy,
21 python-webkit,20 python-webkit,
22 python-dbus,21 python-dbus,
23 python-desktopcouch-records,
24 python-notify,22 python-notify,
25 python-gobject,23 python-gobject,
26 python-vobject,24 python-vobject,
27 python-gtk2,25 python-gtk2,
28 python-poppler,26 python-poppler,
29 desktopcouch
30Recommends:27Recommends:
31 python-vte,28 python-vte,
32 python-appindicator29 python-appindicator
3330
=== modified file 'debian/copyright'
--- debian/copyright 2011-06-27 15:06:48 +0000
+++ debian/copyright 2012-05-07 00:49:19 +0000
@@ -1,12 +1,11 @@
1Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=1351Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
2Upstream-Name: lernid2Upstream-Name: lernid
3Upstream-Maintainer: John S Gruber <johnsgruber@gmail.com>
4Upstream-Source: https://launchpad.net/lernid3Upstream-Source: https://launchpad.net/lernid
54
6Files: *5Files: *
7Copyright: (C) 2009 <Jono Bacon> <jono@ubuntu.com>6Copyright: (C) 2009 <Jono Bacon> <jono@ubuntu.com>
8Copyright: (C) 2010 Michael Budde <mbudde@gmail.com>7Copyright: (C) 2010 Michael Budde <mbudde@gmail.com>
9Copyright (c) 2011 John S Gruber <johnsgruber@gmail.com>8Copyright: (C) 2011 John S Gruber <johnsgruber@gmail.com>
10License: GPL-3+9License: GPL-3+
11 This program is free software; you can redistribute it10 This program is free software; you can redistribute it
12 and/or modify it under the terms of the GNU General Public11 and/or modify it under the terms of the GNU General Public
1312
=== modified file 'debian/rules'
--- debian/rules 2011-05-17 03:12:45 +0000
+++ debian/rules 2012-05-07 00:49:19 +0000
@@ -1,9 +1,9 @@
1#!/usr/bin/make -f1#!/usr/bin/make -f
22
3DEB_PYTHON_SYSTEM := pycentral3WITH_PYTHON2 = $(shell test -f /usr/bin/dh_python2 && echo "--with python2")
44
5include /usr/share/cdbs/1/rules/debhelper.mk5%:
6include /usr/share/cdbs/1/class/python-distutils.mk6 dh $@ ${WITH_PYTHON2}
77
8binary-fixup/lernid::8override_dh_installdocs:
9 find debian/lernid/usr/share/ -type d -empty -delete9 dh_installdocs ./AUTHORS
1010
=== added directory 'debian/source'
=== added file 'debian/source/format'
--- debian/source/format 1970-01-01 00:00:00 +0000
+++ debian/source/format 2012-05-07 00:49:19 +0000
@@ -0,0 +1,1 @@
13.0 (native)
02
=== modified file 'etc/lernid-classrooms.d/ubuntu-charlas'
--- etc/lernid-classrooms.d/ubuntu-charlas 2011-08-28 13:38:22 +0000
+++ etc/lernid-classrooms.d/ubuntu-charlas 2012-05-07 00:49:19 +0000
@@ -3,4 +3,5 @@
3classroom: ubuntu-charlas3classroom: ubuntu-charlas
4Chat:ubuntu-charlas-chat4Chat:ubuntu-charlas-chat
5locale: es.ES5locale: es.ES
6logstring: http://irclogs.ubuntu.com/%04d/%02d/%02d/%%23ubuntu-charlas.html
6icalurl: http://www.google.com/calendar/ical/q16aejpuv5kgmoa7b6ridenkpk%40group.calendar.google.com/public/basic.ics7icalurl: http://www.google.com/calendar/ical/q16aejpuv5kgmoa7b6ridenkpk%40group.calendar.google.com/public/basic.ics
78
=== modified file 'etc/lernid-classrooms.d/ubuntu-classroom'
--- etc/lernid-classrooms.d/ubuntu-classroom 2011-08-25 20:00:48 +0000
+++ etc/lernid-classrooms.d/ubuntu-classroom 2012-05-07 00:49:19 +0000
@@ -2,4 +2,5 @@
2homepage: https://wiki.ubuntu.com/Classroom2homepage: https://wiki.ubuntu.com/Classroom
3classroom: ubuntu-classroom3classroom: ubuntu-classroom
4chat: ubuntu-classroom-chat4chat: ubuntu-classroom-chat
5logstring: http://irclogs.ubuntu.com/%04d/%02d/%02d/%%23ubuntu-classroom.html
5icalurl: http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics6icalurl: http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics
67
=== added file 'lernid-classroom.5'
--- lernid-classroom.5 1970-01-01 00:00:00 +0000
+++ lernid-classroom.5 2012-05-07 00:49:19 +0000
@@ -0,0 +1,99 @@
1.TH lernid-classroom 5 "April 7, 2012" ""
2.\"Created with GNOME Manpages Editor Wizard
3.\"http://sourceforge.net/projects/gmanedit2
4
5.SH NAME
6lernid-classroom \- lernid-classroom configuration files
7
8.SH DESCRIPTION
9This manual page explains the
10lernid-classroom configuraiton files.
11Each has an arbitrary name and uses the config file syntax.
12Each is located in /etc/lernid-classrooms.d
13.PP
14It is recommended to name each file after the classroom described.
15.PP
16The fields are described below.
17.PP
18
19.SH SECTION NAME
20The section name ("[some name]") beginning the file is the name of the classroom described.
21
22.SH FIELDS
23.br
24Each field is followed by a colon, a space, and a value.
25.B
26.IP "homepage"
27The initial page that should be displayed by Lernid's web browser.
28.B
29.IP "classroom"
30The IRC room name of the classroom.
31.B
32.IP chat
33The IRC room name of the room for class discussion and questions.
34.B
35.IP "icalurl"
36The url of the calendar containing this classroom's sessions.
37.B
38.IP question_token
39The token that should be used in this classroom to mark questions of the session's
40instructor.
41.B
42.IP "locale"
43The locale for sessions for the classroom.
44.B
45.IP logstring
46The string used to create the url for accessing the classroom logs. The year,
47month and day of the month are inserted (in that order).
48.B
49.IP "server"
50IRC server containing the above classrooms.
51.br
52.P
53question_token overrides the default value selected by the locale field. If neither is provided
54the default question_token is "QUESTION:"
55.SH FILES
56vcal calendars contain classroom session names, times, and description items.
57
58The vcal calendar event description may contain the following fields:
59.br
60Each field is followed by a colon, a space, and a value.
61.B
62.IP description
63The description of the session.
64.B
65.IP instructors
66The IRC nicknames of the instructor or instructors of the session.
67.B
68.IP "helpers (optional)"
69The IRC nicknames of those who may assist with the session and may help
70control it.
71.B
72.IP "slides (optional)"
73The url of a .pdf file containing the slides to be used. Each is a page of the pdf.
74.B
75.IP "event (optional)"
76The event of which this session is a part.
77.B
78.IP "locale (optional)"
79The locale for the session.
80.B
81.IP "question_token (optional)"
82The token that should be used in this classroom to mark questions of the session's
83instructor.
84.P
85The session's locale and question_token values override those specified for the
86classroom as a whole, above, and again the question_token value overrides the value
87implied by the locale.
88.SH EXAMPLE
89[#ubuntu-classroom -- In English]
90.br
91homepage: https://wiki.ubuntu.com/Classroom
92.br
93classroom: ubuntu-classroom
94.br
95chat: ubuntu-classroom-chat
96.br
97logstring: http://irclogs.ubuntu.com/%04d/%02d/%02d/%%23ubuntu-classroom.html
98.br
99icalurl: http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics
0100
=== added file 'lernid.1'
--- lernid.1 1970-01-01 00:00:00 +0000
+++ lernid.1 2012-05-07 00:49:19 +0000
@@ -0,0 +1,82 @@
1.TH lernid 1 "April 7, 2012" ""
2.\"Created with GNOME Manpages Editor Wizard
3.\"http://sourceforge.net/projects/gmanedit2
4
5.SH NAME
6lernid \- program for participating in Ubuntu learning events
7
8.SH SYNOPSIS
9.B lernid
10.RI [ options ]
11.br
12
13.SH DESCRIPTION
14This manual page explains the
15.B lernid
16program. This program allows you to easily participate in Ubuntu Learning events. It connects to the IRC classroom and classroom-chat sessions simultaneously, displaying web pages and slides the instructor presents. You can discuss the class and ask questions in the classroom-chat window. Use the message box, at the bottom right of the screen, to send your input to the
17class.
18.PP
19You can ask questions to be answered by the instructor as part of the class by
20preceding it with the tag "QUESTION:". Checking the checkbox near the message box will do that for you automatically. If the class is being taught in a language other
21than English the token may change to match.
22.PP
23In Preferences, two layouts are available, horizontal and vertical, which switch whether the browser and slides (if any) are on top or on the left of the classroom and chatroom panes. Choose whichever best matches your screen, and your convenience. Other preferences may be set as well.
24.PP
25Classroom events depend upon the classroom calendar. Lernid will update its calendar several times an hour. If Lernid doesn't seem to be up-to-date it may be worthwhile to update it yourself using the refresh control on the schedule tab.
26.PP
27Many like to keep track of future classroom events. The calendar ical buttons may be helpful to you should you wish to subscribe using your calendar management software or web app.
28.SH OPTIONS
29.B
30.IP " -v, --verbose"
31Show debug messages
32.B
33.IP "-d, --debug"
34Show debug and classroom management messages
35.B
36.IP "--classroom"
37Use alternate classroom
38.B
39.IP "--chatroom"
40Use alternate chatroom
41.B
42.IP "--config"
43Use alternate configuration at this url. If desired, can be specified as, for example, file:///x/y/z . Used for testing.
44.B
45.IP "--calendar"
46Use an alternate calendar at this url. If desired, can be specified as, for example, file:///x/y/z . Used for testing.
47.B
48.IP "--no-update"
49Only update the schedule when connecting to an event, or when the refresh button
50is pressed
51.B
52.IP "--web-chat"
53Use web browser to connect to IRC chatrooms.
54.B
55.IP "--unsafe-override"
56Allow anyone sending messages to the classroom to provide slides and web pages to your session. Normally only those authorized to present sessions are allowed to control these features of Lernid.
57
58.SH FILES
59/etc/lernid-classroom.d/ config files
60.P
61vcal files
62
63.SH DIRECTIVES
64As you follow a class, assuming the speaker is listed in the schedule, the
65browser will follow URL's he or she posts. If slides are being used you may
66also see the following commands used:
67.B
68.IP "[slide n]"
69This directive from the speaker will cause the slide to change to page
70.I n
71.B
72.IP "[slidefile URL]"
73This directive will cause lernid to load the PDF at that URL as a set of slides.
74.B
75.IP "[slidefile URL n]"
76This directive will cause lernid to load the PDF at that URL and switch to
77page
78.I n
79.SH "SEE ALSO"
80.B
81lernid-classroom(5)
82config files
083
=== modified file 'lernid/ConnectDialog.py'
--- lernid/ConnectDialog.py 2010-03-01 19:51:16 +0000
+++ lernid/ConnectDialog.py 2012-05-07 00:49:19 +0000
@@ -56,8 +56,10 @@
5656
57 store = gtk.ListStore(gobject.TYPE_STRING)57 store = gtk.ListStore(gobject.TYPE_STRING)
58 eventman = EventManager.get_instance()58 eventman = EventManager.get_instance()
59 self._eventlist=[]
59 for s in eventman.get_available_events():60 for s in eventman.get_available_events():
60 store.append([s])61 store.append([s])
62 self._eventlist += [unicode(s),]
6163
62 self.event_combo = self.builder.get_object("event_combo")64 self.event_combo = self.builder.get_object("event_combo")
63 self.event_combo.set_model(store)65 self.event_combo.set_model(store)
@@ -98,6 +100,12 @@
98 def get_event(self):100 def get_event(self):
99 return self.builder.get_object('event_combo').get_active_text()101 return self.builder.get_object('event_combo').get_active_text()
100102
103 def set_event(self, event):
104 if not event in self._eventlist:
105 return False
106 index = self._eventlist.index(event)
107 return self.builder.get_object('event_combo').set_active(index)
108
101 def get_password(self):109 def get_password(self):
102 return self.builder.get_object('password').get_text()110 return self.builder.get_object('password').get_text()
103111
104112
=== modified file 'lernid/Event.py'
--- lernid/Event.py 2011-08-18 00:53:17 +0000
+++ lernid/Event.py 2012-05-07 00:49:19 +0000
@@ -23,7 +23,7 @@
23 def __init__(self, **kwargs):23 def __init__(self, **kwargs):
24 for k, v in kwargs.iteritems():24 for k, v in kwargs.iteritems():
25 if k in ('name', 'nick', 'homepage', 'icalurl', 'classroom',25 if k in ('name', 'nick', 'homepage', 'icalurl', 'classroom',
26 'chat', 'eventstart', 'eventend', 'locale',26 'chat', 'eventstart', 'eventend', 'locale', 'logstring',
27 'question_token', 'server'):27 'question_token', 'server'):
28 setattr(self, '_'+k, v)28 setattr(self, '_'+k, v)
2929
@@ -41,7 +41,10 @@
4141
42 @property42 @property
43 def icalurl(self):43 def icalurl(self):
44 return self._icalurl44 if self._icalurl.upper().startswith("HTTPS"):
45 return self._icalurl[0:4] + self._icalurl[5:]
46 else:
47 return self._icalurl
4548
46 @property49 @property
47 def classroom(self):50 def classroom(self):
@@ -56,6 +59,10 @@
56 return self._locale59 return self._locale
5760
58 @property61 @property
62 def logstring(self):
63 return self._logstring
64
65 @property
59 def server(self):66 def server(self):
60 return self._server67 return self._server
6168
6269
=== modified file 'lernid/EventManager.py'
--- lernid/EventManager.py 2011-08-27 22:20:55 +0000
+++ lernid/EventManager.py 2012-05-07 00:49:19 +0000
@@ -19,6 +19,7 @@
19### END LICENSE19### END LICENSE
2020
21import os21import os
22import tempfile
22import gtk23import gtk
23import glib24import glib
24import gobject25import gobject
@@ -31,7 +32,7 @@
31from lernid.PasswordDialog import PasswordDialog32from lernid.PasswordDialog import PasswordDialog
32from lernid.lernidconfig import save_cache_path33from lernid.lernidconfig import save_cache_path
33from lernid.lernidconfig import __lernid_data_directory__34from lernid.lernidconfig import __lernid_data_directory__
34from lernid.CouchDBPreferences import Preferences35from lernid.LernidPreferences import Preferences
35from lernid.Event import Event36from lernid.Event import Event
36from lernid.LernidOptions import Options37from lernid.LernidOptions import Options
37from lernid.Statusbar import Statusbar38from lernid.Statusbar import Statusbar
@@ -66,29 +67,33 @@
66 self._passworddialog = None67 self._passworddialog = None
67 self._widgets = {}68 self._widgets = {}
68 self._config = ConfigParser.ConfigParser()69 self._config = ConfigParser.ConfigParser()
69 self._defaultconfig = u"""[All Ubuntu Classroom Sessions] 70 self._defaultconfig = u"""[#ubuntu-classroom -- In English]
70homepage: https://wiki.ubuntu.com/Classroom71homepage: https://wiki.ubuntu.com/Classroom
71classroom: ubuntu-classroom72classroom: ubuntu-classroom
72chat: ubuntu-classroom-chat73chat: ubuntu-classroom-chat
73icalurl: http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics74icalurl: http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics
7475
75[Ubuntu Classes in Spanish]76[#ubuntu-charlas -- En Español]
76homepage: https://wiki.ubuntu.com/Classroom77homepage: https://wiki.ubuntu.com/Classroom
77classroom: ubuntu-classroom-es78classroom: ubuntu-charlas
78Chat: ubuntu-classroom-chat-es79Chat:ubuntu-charlas-chat
79locale: es.ES80locale: es.ES
80icalurl: http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics81icalurl: http://www.google.com/calendar/ical/q16aejpuv5kgmoa7b6ridenkpk%40group.calendar.google.com/public/basic.ics
81"""82"""
8283
83# Make sure that these names are lower case84# Make sure that these names are lower case
84 self.classbotnames = ['classbot', 'classroombot']85 self.classbotnames = ['classbot', 'classroombot', 'clasebot']
85 if Options.get('config'):86 if Options.get('config'):
86 try:87 try:
87 self._configtext = self._read_config()88 self._configtext = self._read_config()
88 except IOError:89 except IOError:
89 Statusbar.push_message(_('Cannot retrieve configuration'))90 Statusbar.push_message(_('Cannot retrieve configuration'))
90 self._configtext = self._defaultconfig91 self._configtext = self._defaultconfig
91 self._config.readfp(io.StringIO(unicode(self._configtext)))92 tf = tempfile.TemporaryFile()
93 tf.write(self._configtext)
94 tf.seek(0)
95 self._config.readfp(tf)
96 tf.close()
92 else:97 else:
93 if __lernid_data_directory__.startswith('/'):98 if __lernid_data_directory__.startswith('/'):
94 path = '/etc/lernid-classrooms.d'99 path = '/etc/lernid-classrooms.d'
@@ -134,6 +139,8 @@
134 icalurl = self._config.get(event, 'icalurl')139 icalurl = self._config.get(event, 'icalurl')
135 except:140 except:
136 icalurl = "http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics"141 icalurl = "http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics"
142 if Options.get('calendar'):
143 icalurl = Options.get('calendar')
137 try:144 try:
138 classroom = self._config.get(event, 'classroom')145 classroom = self._config.get(event, 'classroom')
139 if classroom[0] not in '#&!+':146 if classroom[0] not in '#&!+':
@@ -147,6 +154,10 @@
147 except:154 except:
148 chat = "#ubuntu-classroom-chat"155 chat = "#ubuntu-classroom-chat"
149 try:156 try:
157 logstring= self._config.get(event, 'logstring')
158 except:
159 logstring = None
160 try:
150 locale = self._config.get(event, 'locale')161 locale = self._config.get(event, 'locale')
151 except:162 except:
152 locale = None163 locale = None
@@ -170,6 +181,7 @@
170 eventend=eventend,181 eventend=eventend,
171 locale = locale,182 locale = locale,
172 question_token = question_token,183 question_token = question_token,
184 logstring = logstring,
173 server = server185 server = server
174 )186 )
175 logging.debug('connecting to event {0}'.format(event))187 logging.debug('connecting to event {0}'.format(event))
@@ -181,7 +193,7 @@
181 server = Server.get_server('irc.freenode.net', nick, self)193 server = Server.get_server('irc.freenode.net', nick, self)
182 identifier = server.identify_nick(password)194 identifier = server.identify_nick(password)
183 def update_statusbar(obj):195 def update_statusbar(obj):
184 Statusbar.push_message(_('Your nickname is now identified'), duration=60)196 Statusbar.push_message(_('Your nickname is now identified'), duration=15)
185 identifier.connect('identified', update_statusbar)197 identifier.connect('identified', update_statusbar)
186 def retry(obj):198 def retry(obj):
187 if not self._passworddialog:199 if not self._passworddialog:
@@ -198,6 +210,9 @@
198 self._connectdialog = ConnectDialog.NewConnectDialog()210 self._connectdialog = ConnectDialog.NewConnectDialog()
199 self._connectdialog.set_transient_for(parent)211 self._connectdialog.set_transient_for(parent)
200 self._connectdialog.connect('response', self._connect_dialog_first_response)212 self._connectdialog.connect('response', self._connect_dialog_first_response)
213 config_event = Preferences.get('event')
214 if config_event:
215 self._connectdialog.set_event(config_event[1:-1])
201 self._connectdialog.set_nick(Preferences.get('nick'))216 self._connectdialog.set_nick(Preferences.get('nick'))
202 self._connectdialog.set_transient_for(widget)217 self._connectdialog.set_transient_for(widget)
203 self._connectdialog.show()218 self._connectdialog.show()
@@ -209,6 +224,7 @@
209224
210 def _connect_dialog_response(self, dialog, response):225 def _connect_dialog_response(self, dialog, response):
211 event = self._connectdialog.get_event()226 event = self._connectdialog.get_event()
227 Preferences.set('event', '"%s"' % event)
212 nick = self._connectdialog.get_nick()228 nick = self._connectdialog.get_nick()
213 Preferences.set('nick', nick)229 Preferences.set('nick', nick)
214 self._connect_event(event, nick)230 self._connect_event(event, nick)
215231
=== modified file 'lernid/IrcBackend.py'
--- lernid/IrcBackend.py 2011-08-27 23:01:16 +0000
+++ lernid/IrcBackend.py 2012-05-07 00:49:19 +0000
@@ -31,6 +31,8 @@
3131
32import logging32import logging
33from lernid.LernidOptions import Options33from lernid.LernidOptions import Options
34from lernid.lernidconfig import VERSION
35from lernid.Statusbar import Statusbar
3436
35DBUS_PROPERTIES = dbus.PROPERTIES_IFACE37DBUS_PROPERTIES = dbus.PROPERTIES_IFACE
3638
@@ -59,6 +61,7 @@
59 gobject.GObject.__init__(self)61 gobject.GObject.__init__(self)
60 self._eventman = eventman62 self._eventman = eventman
61 self._nick = nick63 self._nick = nick
64 self._temp_nick = nick[0:9] + str(random.randint(0,999999))
62 self._server = server65 self._server = server
63 self._channels = {}66 self._channels = {}
64 self._private_channels = {}67 self._private_channels = {}
@@ -68,7 +71,7 @@
68 self._unconnected_private_channels = {}71 self._unconnected_private_channels = {}
69 self._nickidentifier = None72 self._nickidentifier = None
70 self._load_manager()73 self._load_manager()
71 self._request_connection(server, nick)74 self._request_connection(server, self._temp_nick)
72 self._conn_timeout = None75 self._conn_timeout = None
7376
74 @property77 @property
@@ -86,7 +89,7 @@
86 if server in _server_instances:89 if server in _server_instances:
87 server_obj = _server_instances[server]90 server_obj = _server_instances[server]
88 server_obj.nick = nick91 server_obj.nick = nick
89 server_obj._request_connection(server, nick)92 server_obj._request_connection(server, server_obj._temp_nick)
90 return server_obj93 return server_obj
91 else:94 else:
92 obj = cls(server, nick, eventman)95 obj = cls(server, nick, eventman)
@@ -131,7 +134,7 @@
131 if self._state == self.DISCONNECTED:134 if self._state == self.DISCONNECTED:
132 self._state = self.CONNECTING135 self._state = self.CONNECTING
133 self._cm[CONNECTION_MANAGER].RequestConnection('irc',136 self._cm[CONNECTION_MANAGER].RequestConnection('irc',
134 {'account': nick, 'server': server},137 {'account': nick, 'server': server, 'fullname': VERSION},
135 reply_handler=self._got_connection,138 reply_handler=self._got_connection,
136 error_handler=self.error)139 error_handler=self.error)
137 else:140 else:
@@ -142,6 +145,7 @@
142 self._conn = telepathy.client.Connection(145 self._conn = telepathy.client.Connection(
143 bus_name, object_path,146 bus_name, object_path,
144 ready_handler=self._ready)147 ready_handler=self._ready)
148 self._conn._acquired_nick = ''
145 self._conn[CONNECTION].connect_to_signal('StatusChanged',149 self._conn[CONNECTION].connect_to_signal('StatusChanged',
146 self._status_changed)150 self._status_changed)
147 self._conn[CONNECTION].Connect(reply_handler=ignore,151 self._conn[CONNECTION].Connect(reply_handler=ignore,
@@ -153,6 +157,9 @@
153 def _ready(self, connection):157 def _ready(self, connection):
154 logging.debug('server ready')158 logging.debug('server ready')
155 self._state = self.CONNECTED159 self._state = self.CONNECTED
160 self._conn[CONNECTION_INTERFACE_RENAMING].RequestRename(self._nick)
161 logging.debug('nick potentially changed in _ready handler to %s' % \
162 self._nick)
156 glib.source_remove(self._conn_timeout)163 glib.source_remove(self._conn_timeout)
157 self._conn_timeout = None164 self._conn_timeout = None
158 for channel in self._unconnected_channels.keys():165 for channel in self._unconnected_channels.keys():
@@ -196,7 +203,11 @@
196 self.emit('connected')203 self.emit('connected')
197 elif status == CONNECTION_STATUS_DISCONNECTED:204 elif status == CONNECTION_STATUS_DISCONNECTED:
198 logging.debug('disconnected from server')205 logging.debug('disconnected from server')
206 if self._conn_timeout:
207 glib.source_remove(self._conn_timeout)
208 self._conn_timeout = None
199 for chan in self._channels.values():209 for chan in self._channels.values():
210 chan._c_disconnect()
200 self._unconnected_channels[chan] = True211 self._unconnected_channels[chan] = True
201 for chan in self._private_channels.values():212 for chan in self._private_channels.values():
202 self._unconnected_private_channels[chan] = True213 self._unconnected_private_channels[chan] = True
@@ -210,9 +221,6 @@
210 self._nick = '{0}{1}'.format(self._nick, random.randint(10, 99))221 self._nick = '{0}{1}'.format(self._nick, random.randint(10, 99))
211 self._request_connection(self._server, self._nick)222 self._request_connection(self._server, self._nick)
212 if reason == CONNECTION_STATUS_REASON_NETWORK_ERROR:223 if reason == CONNECTION_STATUS_REASON_NETWORK_ERROR:
213 if self._conn_timeout:
214 glib.source_remove(self._conn_timeout)
215 self._conn_timeout = None
216 self._eventman.emit('event-interrupted', self._eventman._event)224 self._eventman.emit('event-interrupted', self._eventman._event)
217225
218 def disconnect(self):226 def disconnect(self):
@@ -222,8 +230,13 @@
222 logging.debug("Server Disconnect Done")230 logging.debug("Server Disconnect Done")
223 def disconnect_error_cb(error):231 def disconnect_error_cb(error):
224 pass232 pass
233 if self._conn_timeout:
234 glib.source_remove(self._conn_timeout)
235 self._conn_timeont = None
225 self._conn[CONNECTION].Disconnect(reply_handler=disconnect_cb,236 self._conn[CONNECTION].Disconnect(reply_handler=disconnect_cb,
226 error_handler=disconnect_error_cb)237 error_handler=disconnect_error_cb)
238 self._state = self.DISCONNECTED
239 self._conn = None
227 self._nickidentifier = None240 self._nickidentifier = None
228241
229 def error(self, e):242 def error(self, e):
@@ -231,7 +244,7 @@
231 self._state = self.DISCONNECTED244 self._state = self.DISCONNECTED
232 if e.get_dbus_name() == 'org.freedesktop.DBus.Error.ServiceUnknown':245 if e.get_dbus_name() == 'org.freedesktop.DBus.Error.ServiceUnknown':
233 self._load_manager()246 self._load_manager()
234 self._request_connection(self._server, self._nick)247 self._request_connection(self._server, self._temp_nick)
235 else:248 else:
236 self.disconnect()249 self.disconnect()
237250
@@ -262,6 +275,8 @@
262 logging.debug('channel created')275 logging.debug('channel created')
263 gobject.GObject.__init__(self)276 gobject.GObject.__init__(self)
264 self._name = name277 self._name = name
278 self._signal_matches = []
279 self._my_handle = None
265280
266 def do_connect(self, connection, object_path, properties):281 def do_connect(self, connection, object_path, properties):
267 """Should only be called by Server"""282 """Should only be called by Server"""
@@ -300,19 +315,40 @@
300 def _ready(self, channel):315 def _ready(self, channel):
301 """We have joined the channel."""316 """We have joined the channel."""
302 logging.debug('connected channel %s' % self.name)317 logging.debug('connected channel %s' % self.name)
303 self._chan[CHANNEL_INTERFACE_GROUP].connect_to_signal('MembersChanged',318 match = self._chan[CHANNEL_INTERFACE_GROUP].connect_to_signal('MembersChanged',
304 self._members_changed)319 self._members_changed)
320 self._signal_matches.append(match)
305 self._chan[CHANNEL_INTERFACE_GROUP].GetMembers(reply_handler=self._update_members,321 self._chan[CHANNEL_INTERFACE_GROUP].GetMembers(reply_handler=self._update_members,
306 error_handler=self._conn.error)322 error_handler=self._conn.error)
307 self._chan[CHANNEL_TYPE_TEXT].connect_to_signal('Received', self._received_message)323 match = self._chan[CHANNEL_TYPE_TEXT].connect_to_signal('Received', self._received_message)
324 self._signal_matches.append(match)
308 self.emit('joined')325 self.emit('joined')
309326
327 def _c_disconnect(self):
328 for match in self._signal_matches:
329 match.remove()
330 self._signal_matches = []
331
310 def _update_members(self, handles):332 def _update_members(self, handles):
311 def update_cb(ids):333 def update_cb(ids):
312 self._members.update(zip(handles, ids))334 self._members.update(zip(handles, ids))
313 if Options.get('more_verbose'):335 if Options.get('more_verbose'):
314 logging.debug('members updated')336 logging.debug('members updated')
315 self.emit('members-changed', self.get_members())337 self.emit('members-changed', self.get_members())
338 if self._my_handle:
339 try:
340 my_alias = self._members[self._my_handle]
341 except:
342 return
343 if not my_alias == self._conn._acquired_nick:
344 self._conn._acquired_nick = my_alias
345 Statusbar.push_message(_('Nick assigned by server: %s' % my_alias), duration=20)
346 logging.debug('Nick assigned by server: %s' % my_alias)
347 def update_my_handle(handle):
348 self._my_handle = handle
349 # If this first call doesn't return before the Aliases come back
350 # we can set our alias name the next time membership in a room changes
351 self._my_handle = self._conn[CONNECTION].GetSelfHandle(reply_handler=update_my_handle, error_handler=lambda x: None)
316 self._conn[CONNECTION_INTERFACE_ALIASING].RequestAliases(352 self._conn[CONNECTION_INTERFACE_ALIASING].RequestAliases(
317 handles,353 handles,
318 reply_handler=update_cb,354 reply_handler=update_cb,
@@ -397,8 +433,7 @@
397 self.emit('joined')433 self.emit('joined')
398434
399 def _received_message(self, id, timestamp, sender_handle, msgtype, flags, text):435 def _received_message(self, id, timestamp, sender_handle, msgtype, flags, text):
400 if Options.get('more_verbose'):436 logging.debug('private message by %s is %s' % (self.target,text))
401 logging.debug('private message received by %s' % self.target)
402 self.emit('message-received', self.target, text)437 self.emit('message-received', self.target, text)
403438
404439
@@ -437,6 +472,11 @@
437 def _msg_received(self, chan, sender, msg):472 def _msg_received(self, chan, sender, msg):
438 if msg.startswith('You are now identified'):473 if msg.startswith('You are now identified'):
439 logging.debug('identified nick')474 logging.debug('identified nick')
475 handle = self._conn[CONNECTION].GetSelfHandle()
476 logging.debug('our handle before the rename is %s' % self._conn[CONNECTION_INTERFACE_ALIASING].RequestAliases([handle])[0])
477 self._conn[CONNECTION_INTERFACE_RENAMING].RequestRename(self._nick)
478 logging.debug('nick potentially changed in ident. handler to %s'% \
479 self._nick)
440 self.emit('identified')480 self.emit('identified')
441 elif msg.startswith('Invalid password'):481 elif msg.startswith('Invalid password'):
442 logging.debug('invalid password')482 logging.debug('invalid password')
443483
=== renamed file 'lernid/CouchDBPreferences.py' => 'lernid/LernidPreferences.py'
--- lernid/CouchDBPreferences.py 2011-08-28 13:38:22 +0000
+++ lernid/LernidPreferences.py 2012-05-07 00:49:19 +0000
@@ -18,8 +18,6 @@
18### END LICENSE18### END LICENSE
1919
2020
21from desktopcouch.records.server import CouchDatabase
22from desktopcouch.records.record import Record
23from ConfigParser import RawConfigParser21from ConfigParser import RawConfigParser
24from lernid.lernidconfig import save_cache_path22from lernid.lernidconfig import save_cache_path
25from lernid.LernidOptions import Options23from lernid.LernidOptions import Options
@@ -31,24 +29,12 @@
31 _instance = None29 _instance = None
3230
33 def __init__(self):31 def __init__(self):
34 self._db_name = 'lernid'
35 self._parser = RawConfigParser()32 self._parser = RawConfigParser()
36 self._parser.add_section(self._db_name)33 self._parser.add_section('lernid')
37 try:
38 self._database = CouchDatabase(self._db_name, create=True)
39 except:
40 self._database = False
41 logging.debug('desktopcouch not available')
42 if Options.get('avoid_desktopcouch'):
43 logging.info('avoiding desktopcouch')
44 self._database = False
45 self._record_type = "http://wiki.ubuntu.com/Quickly/RecordTypes/Lernid/Preferences"
46 self._key = None
47 self._load_preferences()34 self._load_preferences()
4835
49 def _load_preferences(self):36 def _load_preferences(self):
50 self._preferences = {37 self._preferences = {
51 'record_type': self._record_type,
52 'vertical': False,38 'vertical': False,
53 'show_appindicator': True,39 'show_appindicator': True,
54 'main_window_maximize': False,40 'main_window_maximize': False,
@@ -58,52 +44,77 @@
58 'links_in_default_browser': False44 'links_in_default_browser': False
5945
60 }46 }
61 if self._database:47 file_name = save_cache_path('lernid')+'/config'
62 results = self._database.get_records(record_type=self._record_type, create_view=True)48 try:
63 if len(results.rows) == 0:49 config_file = open(file_name, 'r')
64 #no preferences have ever been saved50 except:
65 #save them before returning51 return
66 self._key = self._database.put_record(Record(self._preferences))52 self._parser.readfp(config_file)
53 config_file.close()
54 for item in self._parser.items('lernid'):
55 if item[0] == 'width':
56 if 'main_window_size' not in self._preferences:
57 self._preferences['main_window_size'] = dict()
58 self._preferences['main_window_size']['width'] = int(item[1])
59 continue
60 if item[0] == 'height':
61 if 'main_window_size' not in self._preferences:
62 self._preferences['main_window_size'] = dict()
63 self._preferences['main_window_size']['height'] = int(item[1])
64 continue
65 if item[0] == 'hpanesmain':
66 if 'hpanes' not in self._preferences:
67 self._preferences['hpanes'] = dict()
68 self._preferences['hpanes']['main'] = int(item[1])
69 continue
70 if item[0] == 'hpanessub':
71 if 'hpanes' not in self._preferences:
72 self._preferences['hpanes'] = dict()
73 self._preferences['hpanes']['sub'] = int(item[1])
74 continue
75 if item[0] == 'vpanesmain':
76 if 'vpanes' not in self._preferences:
77 self._preferences['vpanes'] = dict()
78 self._preferences['vpanes']['main'] = int(item[1])
79 continue
80 if item[0] == 'vpanessub':
81 if 'vpanes' not in self._preferences:
82 self._preferences['vpanes'] = dict()
83 self._preferences['vpanes']['sub'] = int(item[1])
84 continue
85 if item[1].startswith('{'): # remove old style unused options
86 r = self._parser.remove_option('lernid', item[0])
87 continue
88 elif item[1] == "True":
89 self._preferences[item[0]] = True
90 elif item[1] == "False":
91 self._preferences[item[0]] = False
67 else:92 else:
68 prefs = results.rows[0].value93 self._preferences[item[0]] = item[1]
69 self._preferences.update(prefs)
70 self._key = prefs["_id"]
71 self._database.update_fields(self._key, self._preferences)
72 else:
73 file_name = save_cache_path('lernid')+'/config'
74 try:
75 config_file = open(file_name, 'r')
76 except:
77 return
78 self._parser.readfp(config_file)
79 config_file.close()
80 for item in self._parser.items(self._db_name):
81 if item[1].startswith('{'):
82 continue
83 elif item[1] == "True":
84 self._preferences[item[0]] = True
85 elif item[1] == "False":
86 self._preferences[item[0]] = False
87 else:
88 self._preferences[item[0]] = item[1]
8994
90 def _update(self, prefs):95 def _update(self, prefs):
91 if '_id' in prefs: del prefs['_id']
92 if '_rev' in prefs: del prefs['_rev']
93 self._preferences.update(prefs)96 self._preferences.update(prefs)
94 if self._database:
95 self._database.update_fields(self._key, prefs)
9697
97 def _flush(self):98 def _flush(self):
98 for item in self._preferences:99 for item in self._preferences:
99 if item == '_id':100 if item == 'hpanes':
100 continue101 self._parser.set('lernid', 'hpanesmain',
101 if item == '_rev':102 self._preferences[item]['main'])
102 continue103 self._parser.set('lernid', 'hpanessub',
103 if item == 'record_type':104 self._preferences[item]['sub'])
104 continue105 elif item == 'vpanes':
105 self._parser.set(self._db_name, item, self._preferences[item])106 self._parser.set('lernid', 'vpanesmain',
106 107 self._preferences[item]['main'])
108 self._parser.set('lernid', 'vpanessub',
109 self._preferences[item]['sub'])
110 elif item == 'main_window_size':
111 self._parser.set('lernid', 'width',
112 self._preferences[item]['width'])
113 self._parser.set('lernid', 'height',
114 self._preferences[item]['height'])
115 else:
116 self._parser.set('lernid', item, self._preferences[item])
117
107 config_file = open(save_cache_path('lernid')+'/config', 'w')118 config_file = open(save_cache_path('lernid')+'/config', 'w')
108 self._parser.write(config_file)119 self._parser.write(config_file)
109 config_file.close()120 config_file.close()
110121
=== modified file 'lernid/PreferencesLernidDialog.py'
--- lernid/PreferencesLernidDialog.py 2010-03-08 06:06:05 +0000
+++ lernid/PreferencesLernidDialog.py 2012-05-07 00:49:19 +0000
@@ -20,7 +20,7 @@
20import gtk20import gtk
2121
22from lernid.lernidconfig import get_data_path22from lernid.lernidconfig import get_data_path
23from lernid.CouchDBPreferences import Preferences23from lernid.LernidPreferences import Preferences
2424
25class PreferencesLernidDialog(gtk.Dialog):25class PreferencesLernidDialog(gtk.Dialog):
26 __gtype_name__ = "PreferencesLernidDialog"26 __gtype_name__ = "PreferencesLernidDialog"
2727
=== modified file 'lernid/Sessions.py'
--- lernid/Sessions.py 2011-08-27 22:20:55 +0000
+++ lernid/Sessions.py 2012-05-07 00:49:19 +0000
@@ -25,9 +25,10 @@
2525
26import lernid.DateTime as dt26import lernid.DateTime as dt
27import io27import io
28import gio, glib
28from datetime import timedelta29from datetime import timedelta
2930
30one_week = timedelta(days=7)31half_year = timedelta(days = 183)
3132
32class Session(object):33class Session(object):
3334
@@ -35,8 +36,15 @@
3536
36 def __init__(self, **kwargs):37 def __init__(self, **kwargs):
37 for k, v in kwargs.iteritems():38 for k, v in kwargs.iteritems():
38 if k in ('title', 'description', 'instructors', 'helpers', 'local_start', 'local_end', 'slides', 'event', 'locale', 'question_token'):39 if k in ('uid', 'title', 'description', 'instructors',
39 setattr(self, '_'+k, v)40 'helpers', 'local_start', 'local_end', 'slides',
41 'event', 'locale',
42 'question_token'):
43 setattr(self, '_'+k, v)
44
45 @property
46 def uid(self):
47 return self._uid
4048
41 @property49 @property
42 def title(self):50 def title(self):
@@ -103,9 +111,13 @@
103 if now > end:111 if now > end:
104 return self.PAST112 return self.PAST
105113
114def start_read_ical(url, when_done_cb, cancellable, data):
115 gfile = gio.File(uri=url)
116 r = gfile.load_contents_async(when_done_cb, cancellable=cancellable,
117 user_data=data)
106118
107def parse_ical(event):119def read_ical(gfile,result,userdata):
108 """Parse iCal schedule for event and generate a list of Session objects"""120 event, old_ical = userdata
109 default_cal_error = (121 default_cal_error = (
110u"""BEGIN:VCALENDAR122u"""BEGIN:VCALENDAR
111BEGIN:VEVENT123BEGIN:VEVENT
@@ -115,7 +127,42 @@
115SUMMARY: """ + _('Unable to load calendar %s\n') + 127SUMMARY: """ + _('Unable to load calendar %s\n') +
116u"""END:VEVENT128u"""END:VEVENT
117END:VCALENDAR""") % event.icalurl129END:VCALENDAR""") % event.icalurl
118 default_cal_error2 = (130
131 try:
132
133 ical = unicode(gfile.load_contents_finish(result)[0])
134 icf = io.StringIO(ical)
135 ical_output = io.StringIO()
136 # DTSTAMP is changed for each calendar entry each time, but isn't
137 # significant--remove them
138 for i in icf.readlines():
139 if i[0:8] != u'DTSTAMP:':
140 ical_output.write(i)
141 ical = ical_output.getvalue()
142 icf.close()
143 ical_output.close()
144 except gio.Error, information:
145 if information.code == gio.ERROR_CANCELLED:
146 logging.debug('Ignoring the completion of a cancelled cal. load')
147 return ''
148 logging.error('Unable to open calendar %s' % gfile.get_uri())
149 logging.error(information)
150 if old_ical:
151 ical = old_ical
152 else:
153 ical = default_cal_error
154 except glib.GError, information:
155 logging.error('Unable to open calendar %s' % gfile.get_uri())
156 logging.error(information)
157 if old_ical:
158 ical = old_ical
159 else:
160 ical = default_cal_error
161 return ical
162
163
164def parse_ical(event, ical):
165 default_cal_error = (
119u"""BEGIN:VCALENDAR166u"""BEGIN:VCALENDAR
120BEGIN:VEVENT167BEGIN:VEVENT
121DTSTART:20100101T000000Z168DTSTART:20100101T000000Z
@@ -124,16 +171,12 @@
124SUMMARY: """ + _('Unable to parse calendar %s\n') + 171SUMMARY: """ + _('Unable to parse calendar %s\n') +
125u"""END:VEVENT172u"""END:VEVENT
126END:VCALENDAR""") % event.icalurl173END:VCALENDAR""") % event.icalurl
127 try:174
128 ical = urllib2.urlopen(event.icalurl, None, 30)175 try:
129 except IOError:176 cal = vobject.readOne(io.StringIO(ical))
130 logging.error('Unable to open calendar %s' % event.icalurl)
131 ical = io.StringIO(default_cal_error)
132 try:
133 cal = vobject.readOne(ical)
134 except:177 except:
135 logging.critical('Error parsing calendar at %s' % event.icalurl)178 logging.critical('Error parsing calendar at %s' % event.icalurl)
136 cal = vobject.readOne(io.StringIO(default_cal_error2))179 cal = vobject.readOne(io.StringIO(default_cal_error))
137180
138 sessions = []181 sessions = []
139182
@@ -158,12 +201,17 @@
158 summary = session.summary.value201 summary = session.summary.value
159 else:202 else:
160 summary = _('Missing Session Name')203 summary = _('Missing Session Name')
204 if hasattr(session, "uid"):
205 uid = session.uid
206 else:
207 uid = 0
161 if eventstart_local <= local_start <= eventend_local:208 if eventstart_local <= local_start <= eventend_local:
162 if local_start > dt.now_local() - one_week:209 if local_start > dt.now_local() - half_year:
163 sessions.append(Session(210 sessions.append(Session(
164 title = summary,211 title = summary,
165 local_start = local_start,212 local_start = local_start,
166 local_end = local_end,213 local_end = local_end,
214 uid = uid,
167 **session_data))215 **session_data))
168216
169 # reverse the list to get the events in chronological order217 # reverse the list to get the events in chronological order
170218
=== modified file 'lernid/lernidconfig.py'
--- lernid/lernidconfig.py 2011-09-03 19:34:22 +0000
+++ lernid/lernidconfig.py 2012-05-07 00:49:19 +0000
@@ -31,7 +31,7 @@
3131
32def _(message): return message32def _(message): return message
3333
34VERSION = '0.8.2.2'34VERSION = '0.8.4.7'
35DESCRIPTION = _('Connect to a world of online tutorials quickly and easily.')35DESCRIPTION = _('Connect to a world of online tutorials quickly and easily.')
36WEBSITE = 'http://wiki.ubuntu.com/Lernid'36WEBSITE = 'http://wiki.ubuntu.com/Lernid'
37CONTRIBUTORS = [37CONTRIBUTORS = [
3838
=== modified file 'lernid/widgets/Browser.py'
--- lernid/widgets/Browser.py 2011-08-27 22:15:03 +0000
+++ lernid/widgets/Browser.py 2012-05-07 00:49:19 +0000
@@ -28,7 +28,7 @@
28from lernid.LernidOptions import Options28from lernid.LernidOptions import Options
29from urlparse import urlparse29from urlparse import urlparse
30from lernid.lernidconfig import get_data_path, VERSION30from lernid.lernidconfig import get_data_path, VERSION
31from lernid.CouchDBPreferences import Preferences31from lernid.LernidPreferences import Preferences
3232
33class Browser(Widget):33class Browser(Widget):
3434
@@ -58,6 +58,7 @@
58 parts=useragent.split(' ')58 parts=useragent.split(' ')
59 parts[-1]='lernid/'+VERSION59 parts[-1]='lernid/'+VERSION
60 browser_settings.set_property('user-agent', ' '.join(parts))60 browser_settings.set_property('user-agent', ' '.join(parts))
61 browser_settings.set_property('enable-plugins', False)
61 self._browser.set_settings(browser_settings)62 self._browser.set_settings(browser_settings)
62 63
63 scroll = builder.get_object('browser_scroll')64 scroll = builder.get_object('browser_scroll')
@@ -205,7 +206,7 @@
205 self.set_location(url)206 self.set_location(url)
206207
207 def _classroom_msg_received(self, classroom, chan, sender, text):208 def _classroom_msg_received(self, classroom, chan, sender, text):
208 if not Options.get('unsafe-override') and not chan.is_moderated() and not self._on_faculty(sender):209 if not Options.get('unsafe-override') and not self._on_faculty(sender):
209 return210 return
210 load, ignore = self._parse_urls(text)211 load, ignore = self._parse_urls(text)
211 if load and not self._paused:212 if load and not self._paused:
212213
=== modified file 'lernid/widgets/Classroom.py'
--- lernid/widgets/Classroom.py 2011-08-27 22:06:13 +0000
+++ lernid/widgets/Classroom.py 2012-05-07 00:49:19 +0000
@@ -23,7 +23,7 @@
23import pango23import pango
24import time24import time
2525
26from lernid.CouchDBPreferences import Preferences26from lernid.LernidPreferences import Preferences
27from lernid.widgets.IrcWidget import IrcWidget27from lernid.widgets.IrcWidget import IrcWidget
2828
29from lernid import IrcBackend29from lernid import IrcBackend
@@ -78,8 +78,9 @@
78 if channelname[0] not in '#&!+':78 if channelname[0] not in '#&!+':
79 channelname = '#' + channelname79 channelname = '#' + channelname
80 classchan = self._server.get_channel(channelname)80 classchan = self._server.get_channel(channelname)
81 self._chan = classchan # Save for IRC widget use
81 def joined(server):82 def joined(server):
82 Statusbar.push_message(_('Joined classroom'))83 Statusbar.push_message(_('Joined classroom'), duration=10)
83 self._textview.set_sensitive(True)84 self._textview.set_sensitive(True)
84 self.event_connect_signal(classchan, 'joined', joined)85 self.event_connect_signal(classchan, 'joined', joined)
85 self.event_connect_signal(classchan, 'message-received', self._message_received)86 self.event_connect_signal(classchan, 'message-received', self._message_received)
8687
=== modified file 'lernid/widgets/IrcWidget.py'
--- lernid/widgets/IrcWidget.py 2011-08-13 02:05:14 +0000
+++ lernid/widgets/IrcWidget.py 2012-05-07 00:49:19 +0000
@@ -24,7 +24,7 @@
24import re24import re
2525
26from lernid.widgets.Widget import Widget26from lernid.widgets.Widget import Widget
27from lernid.CouchDBPreferences import Preferences27from lernid.LernidPreferences import Preferences
2828
29from lernid import IrcBackend29from lernid import IrcBackend
3030
@@ -77,17 +77,21 @@
77 else:77 else:
78 if sender:78 if sender:
79 self._buffer.insert_with_tags_by_name(iend, '<%s> ' % sender, 'gray')79 self._buffer.insert_with_tags_by_name(iend, '<%s> ' % sender, 'gray')
80 start_pos = iend.get_offset()80 start_pos = iend.get_offset()
81 if self._nick in text and sender != self._nick:81 my_nick = self._chan._conn._acquired_nick
82 self._buffer.insert_with_tags_by_name(iend, text, 'highlight')82 if my_nick in text and sender != my_nick:
83 elif self._on_faculty(sender):83 self._buffer.insert_with_tags_by_name(iend, text, 'highlight')
84 self._buffer.insert_with_tags_by_name(iend, text, 'highlight')84 elif self._on_faculty(sender):
85 elif sender.lower() in self._classbotnames:85 self._buffer.insert_with_tags_by_name(iend, text, 'highlight')
86 self._buffer.insert_with_tags_by_name(iend, text, 'italicize')86 elif sender.lower() in self._classbotnames:
87 self._buffer.insert_with_tags_by_name(iend, text, 'italicize')
88 else: self._buffer.insert(iend, text)
87 else:89 else:
88 self._buffer.insert(iend, text)90 self._buffer.insert(iend, text)
8991
90 for url in re.finditer(r"https?://\S+", unicode(text, 'utf-8')):92 if type(text)!=unicode:
93 text=unicode(text, 'utf-8')
94 for url in re.finditer(r"https?://\S+", text):
91 self._buffer.apply_tag_by_name('hyperlink',95 self._buffer.apply_tag_by_name('hyperlink',
92 self._buffer.get_iter_at_offset(start_pos + url.start()),96 self._buffer.get_iter_at_offset(start_pos + url.start()),
93 self._buffer.get_iter_at_offset(start_pos + url.end()))97 self._buffer.get_iter_at_offset(start_pos + url.end()))
9498
=== modified file 'lernid/widgets/NativeChatroom.py'
--- lernid/widgets/NativeChatroom.py 2011-08-27 22:06:13 +0000
+++ lernid/widgets/NativeChatroom.py 2012-05-07 00:49:19 +0000
@@ -25,7 +25,7 @@
25import pango25import pango
26import time26import time
2727
28from lernid.CouchDBPreferences import Preferences28from lernid.LernidPreferences import Preferences
29from lernid.widgets.IrcWidget import IrcWidget29from lernid.widgets.IrcWidget import IrcWidget
3030
31from lernid import IrcBackend31from lernid import IrcBackend
@@ -83,6 +83,7 @@
83 if channelname[0] not in '#&!+':83 if channelname[0] not in '#&!+':
84 channelname = '#' + channelname84 channelname = '#' + channelname
85 self._chatchan = self._server.get_channel(channelname)85 self._chatchan = self._server.get_channel(channelname)
86 self._chan = self._chatchan # Save for IRC widget use
86 schedule = eventman.get_widget_by_name('schedule')87 schedule = eventman.get_widget_by_name('schedule')
87 self._get_question_token = schedule.get_question_token88 self._get_question_token = schedule.get_question_token
88#TRANSLATORS: Future versions will need translations of this word as plugins to match the locale of the target classroom session. The word will prefix questions asked in the chatroom of the instructor89#TRANSLATORS: Future versions will need translations of this word as plugins to match the locale of the target classroom session. The word will prefix questions asked in the chatroom of the instructor
@@ -181,7 +182,7 @@
181 self._append_to_buffer(_('IRC commands are not yet supported.'))182 self._append_to_buffer(_('IRC commands are not yet supported.'))
182 elif self._questioncheckbox.get_active():183 elif self._questioncheckbox.get_active():
183 self._questioncheckbox.set_active(False)184 self._questioncheckbox.set_active(False)
184 self._chatchan.send_message(self._get_question_token() + u' ' + u'\u200b\u2006' + unicode(text))185 self._chatchan.send_message(self._get_question_token() + u' ' + unicode(text))
185 else:186 else:
186 self._chatchan.send_message(text)187 self._chatchan.send_message(text)
187 self._input.set_text('')188 self._input.set_text('')
@@ -191,7 +192,7 @@
191192
192 def _message_sent(self, chan, text):193 def _message_sent(self, chan, text):
193 self._adjust.value = self._adjust.upper - self._adjust.page_size194 self._adjust.value = self._adjust.upper - self._adjust.page_size
194 self._append_to_buffer(text, self._nick)195 self._append_to_buffer(text, chan._conn._acquired_nick)
195196
196 def _scroll(self, textview, alloc):197 def _scroll(self, textview, alloc):
197 if self._at_bottom is None:198 if self._at_bottom is None:
198199
=== modified file 'lernid/widgets/Schedule.py'
--- lernid/widgets/Schedule.py 2011-08-28 14:16:52 +0000
+++ lernid/widgets/Schedule.py 2012-05-07 00:49:19 +0000
@@ -21,8 +21,11 @@
21import glib21import glib
22import gobject22import gobject
23import gtk23import gtk
24import gio
24import os25import os
25import time26import time
27import urlparse
28import random
26import pynotify29import pynotify
27import logging30import logging
28from datetime import timedelta31from datetime import timedelta
@@ -30,7 +33,8 @@
30import lernid.DateTime as dt33import lernid.DateTime as dt
31from lernid.widgets.Widget import Widget34from lernid.widgets.Widget import Widget
32from lernid.lernidconfig import get_data_path35from lernid.lernidconfig import get_data_path
33from lernid.Sessions import Session, parse_ical36from lernid.Sessions import Session, parse_ical, read_ical, start_read_ical
37from lernid.LernidOptions import Options
3438
3539
36class Schedule(Widget):40class Schedule(Widget):
@@ -46,20 +50,31 @@
46 ),50 ),
47 }51 }
4852
49 COL_ICON, COL_DATE, COL_START, COL_END, COL_TITLE, COL_SESSION = range(6)53 COL_ICON, COL_DATE, COL_START, COL_END, COL_TITLE, COL_SESSION, \
54 COL_DATETIME = range(7)
5055
51 def __init__(self):56 def __init__(self):
52 Widget.__init__(self, 'schedule')57 Widget.__init__(self, 'schedule')
53 viewport = gtk.Viewport()58 vbox = gtk.VBox()
59 self.add(vbox)
54 scroll = gtk.ScrolledWindow()60 scroll = gtk.ScrolledWindow()
55 scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)61 scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
56 viewport.set_shadow_type(gtk.SHADOW_NONE)62 vbox.pack_start(scroll, expand=True)
57 viewport.add(scroll)63 hbuttonbox = gtk.HBox(False, 0)
58 self.add(viewport)64 vbox.pack_start(hbuttonbox, expand=False)
65 self._copy_button = gtk.Button()
66 self._open_button = gtk.Button()
67 self._refresh_button = gtk.ToolButton(gtk.STOCK_REFRESH)
68 self._refresh_button.set_expand(False)
69 hbuttonbox.pack_start(self._copy_button, True, True, 0)
70 hbuttonbox.pack_start(self._open_button, True, True, 0)
71 hbuttonbox.pack_start(self._refresh_button, True, True, 0)
72 self._button_setup(self._copy_button, self._open_button,
73 self._refresh_button)
5974
60 self._treeview = gtk.TreeView()75 self._treeview = gtk.TreeView()
61 scroll.add(self._treeview)76 scroll.add(self._treeview)
62 self._model = gtk.ListStore(str, str, str, str, str, object)77 self._model = gtk.ListStore(str, str, str, str, str, object, object)
63 self._treeview.set_model(self._model)78 self._treeview.set_model(self._model)
64 self._treeview.set_search_column(self.COL_TITLE)79 self._treeview.set_search_column(self.COL_TITLE)
65 def search_equal_func(model, column, key, iter):80 def search_equal_func(model, column, key, iter):
@@ -67,6 +82,25 @@
67 return False82 return False
68 return True83 return True
69 self._treeview.set_search_equal_func(search_equal_func)84 self._treeview.set_search_equal_func(search_equal_func)
85 def session_clicked_cb(tv, event, self):
86 if not self._event:
87 logging.error('Schedule clicked with no event connected')
88 return
89 logstring = self._event.logstring
90 if not logstring:
91 logging.debug('Schedule clicked, but no event logging'
92 ' specified')
93 return
94 i = tv.get_path_at_pos(int(event.x), int(event.y))
95 if not i:
96 return
97 row = tv.get_model()[i[0][0]]
98 if not row[self.COL_DATETIME]:
99 return
100 date_time = row[self.COL_DATETIME]
101 url = logstring % (date_time.year, date_time.month, date_time.day)
102 gtk.show_uri(None, url, gtk.gdk.CURRENT_TIME)
103 self._treeview.connect('button-release-event', session_clicked_cb, self)
70 self._treeview.set_headers_visible(False)104 self._treeview.set_headers_visible(False)
71105
72 column = gtk.TreeViewColumn()106 column = gtk.TreeViewColumn()
@@ -116,11 +150,114 @@
116 self._schedule = None150 self._schedule = None
117 self._current_session = None151 self._current_session = None
118 self._update_handle = None152 self._update_handle = None
153 self._ical = None
154 self._icalurl = None
155 self._connected = False
156 self._ircdate = (dt.now_utc() - timedelta(minutes=70)).date()
157 self._cancellable = None
158 self._event = None
119159
120 self.show_all()160 self.show_all()
121161
162 def _scramble_case(self, string):
163 if '@' in string:
164 pstring = string.split('@')
165 newstring = pstring[0] + '@'
166 string = pstring[1]
167 else:
168 newstring = ''
169 random.seed()
170 for s in string:
171 if random.random() >= .5:
172 newstring += s.upper()
173 else:
174 newstring += s.lower()
175 return newstring
176 # scramble the case of the url for this event connection.
177 # Avoids occasional problem with gvfsd-http wedging
178 # particular url's after loss of connectivity
179
122 def do_event_connect(self, event_man, event):180 def do_event_connect(self, event_man, event):
123 self._event = event_man.current_event()181 self._event = event_man.current_event()
182 self._connected = True
183 self._last_upcoming_announce = None
184 def finished_initial_ical_load_cb(gfile, result, unused):
185 ical = read_ical(gfile, result, (event,self._ical))
186 if ical == '':
187 return # Do nothing for cancelled I/O Operation
188 self._ical = ical
189 logging.debug('Finished initial ical load')
190 if not (gfile.get_uri() == self._icalurl): # Sanity Check
191 logging.debug('Old I/O completion ignored')
192 return
193 self._cancellable = None
194 if not self._connected or not self._event:
195 return
196 self._update(event, self._ical, initial=True)
197 secs = time.localtime().tm_sec
198 self._update_handle = glib.timeout_add_seconds(65-secs, self._calendar_refresh, event)
199 parsed = [j for j in urlparse.urlparse(event.icalurl)]
200 parsed[1]= self._scramble_case(parsed[1])
201 self._icalurl = urlparse.urlunparse(parsed)
202 cancellable = gio.Cancellable()
203 start_read_ical(self._icalurl, finished_initial_ical_load_cb,
204 cancellable, (None, None))
205 self._cancellable = cancellable
206 logging.debug('Started initial ical load %s' % self._icalurl)
207
208 def _calendar_refresh(self, event, force_update=False):
209 def finished_refresh_ical_load_cb(gfile, result, data):
210 force_reload, irclog_force = data
211 ical = read_ical(gfile, result, (event, self._ical))
212 if ical == '':
213 return # Do nothing for a cancelled calendar read
214 if not (gfile.get_uri() == self._icalurl): # Sanity Check
215 logging.debug('Old I/O completion ignored')
216 return
217 self._cancellable = None
218 logging.debug('Finished ical load')
219 if not self._connected or not self._event:
220 return
221 if ical == self._ical and not irclog_force:
222 logging.debug('Skipping Update--Calendar Unchanged')
223 self._update_currency()
224 else:
225 self._ical = ical
226 logging.debug('Updating Schedule')
227 self._update(event, self._ical)
228 secs = time.localtime().tm_sec
229 self._update_handle = glib.timeout_add_seconds(65-secs, self._calendar_refresh, event)
230 return
231
232 self._update_handle = None
233 irc_force = False
234 now = dt.now_utc()
235 trigger_time = now.minute in [1, 6, 11, 21, 31, 36, 41, 51]
236 trigger_time = trigger_time and not Options.get('no-update')
237 # Trigger in time to be done at :50, :00, :20, and :30 so that session
238 # announcements will be made on time (bearing in mind low bandwidth
239 # connections and the large calendar size
240 ircdate = (now - timedelta(minutes=71)).date()
241 if ircdate != self._ircdate and trigger_time:
242 self._ircdate = ircdate
243 irc_force = True
244 logging.debug('Daily full calendar update %s' % now)
245 if irc_force or force_update or trigger_time:
246 parsed = [j for j in urlparse.urlparse(event.icalurl)]
247 parsed[1]= self._scramble_case(parsed[1])
248 self._icalurl = urlparse.urlunparse(parsed)
249 cancellable = gio.Cancellable()
250 start_read_ical(self._icalurl, finished_refresh_ical_load_cb,
251 cancellable, (force_update, irc_force))
252 self._cancellable = cancellable
253 logging.debug('Started ical load')
254 else:
255 self._update_currency()
256 secs = time.localtime().tm_sec
257 self._update_handle = glib.timeout_add_seconds(65-secs, self._calendar_refresh, event)
258 return False
259
260 def _update(self, event, ical, initial=False):
124 def quote(text):261 def quote(text):
125 quote_table = {262 quote_table = {
126 '<' : '&lt;',263 '<' : '&lt;',
@@ -133,11 +270,40 @@
133 for l in text:270 for l in text:
134 return_value= return_value + quote_table.get(l,l)271 return_value= return_value + quote_table.get(l,l)
135 return return_value272 return return_value
273 def insert_log_line(date, session):
274 difference = dt.now_utc() - date
275 if difference < timedelta(minutes=70):
276 return # There may not be a log yet
277 sessionrow = ['', '', '', '']
278 formatted_date = date.strftime('%x')
279 localtime = dt.as_local(date)
280 formatted_local = localtime.strftime('%H:00')
281 formatted = \
282 _('<u>Irc Logs for UTC %s </u><i>(Starting at %s local time)</i>') \
283 % (formatted_date, formatted_local)
284 sessionrow.append(formatted)
285 sessionrow.append(session)
286 sessionrow.append(date)
287 self._model.append(sessionrow)
288
289 def insert_blank_lines(number):
290 for i in range(number):
291 sessionrow = ['', '', '', '', '', None, None]
292 self._model.append(sessionrow)
136293
137 self._schedule = parse_ical(event)294 self._schedule = parse_ical(event, ical)
138 self._model.clear()295 self._model.clear()
139 self._scroll_to = None296 self._scroll_to = None
297 self._last_date = None
298 current_row = False
140 for session in self._schedule:299 for session in self._schedule:
300 utc_starttime = dt.as_utc(session.start_datetime)
301 utc_date= dt.datetime(utc_starttime.year, utc_starttime.month,
302 utc_starttime.day, tzinfo=utc_starttime.tzinfo)
303 if (not utc_date == self._last_date):
304 self._last_date = utc_date
305 if event.logstring:
306 insert_log_line(utc_date, session)
141 sessionrow = []307 sessionrow = []
142 sessionrow.append('')308 sessionrow.append('')
143 sessionrow.append(session.start_local_date)309 sessionrow.append(session.start_local_date)
@@ -150,39 +316,47 @@
150 else:316 else:
151 sessionrow.append(title + '<small>' + instructors + '</small>')317 sessionrow.append(title + '<small>' + instructors + '</small>')
152 sessionrow.append(session)318 sessionrow.append(session)
319 sessionrow.append(None)
153 current_row = self._model.append(sessionrow)320 current_row = self._model.append(sessionrow)
154 if not self._scroll_to and session.state in (session.FUTURE, session.NOW):321 if not self._scroll_to and session.state in (session.FUTURE, session.NOW):
155 self._scroll_to = self._model.get_path(current_row)322 self._scroll_to = self._model.get_path(current_row)
156323 if not self._scroll_to and current_row:
157 self._update()324 self._scroll_to = self._model.get_path(current_row)
158325 self._update_currency()
159 if self._scroll_to:326
327 insert_blank_lines(40)
328
329 if initial and self._scroll_to:
160 self._treeview.scroll_to_cell(self._scroll_to, use_align=True, row_align=.2)330 self._treeview.scroll_to_cell(self._scroll_to, use_align=True, row_align=.2)
161331
162 def set_timeout():
163 self._update_handle = glib.timeout_add_seconds(60, self._update)
164 # Wait at least one minute before updating again,
165 # to avoid duplicate notifications.
166 secs = time.localtime().tm_sec
167 glib.timeout_add_seconds(65-secs, set_timeout)
168332
169 self._treeview.set_headers_visible(True)333 self._treeview.set_headers_visible(True)
170334
171 def do_event_disconnect(self, event_man, event):335 def do_event_disconnect(self, event_man, event):
336 self._connected = False
172 self._schedule = []337 self._schedule = []
173 self._current_session = None338 self._current_session = None
174 self._model.clear()339 self._model.clear()
175 if self._update_handle:340 if self._update_handle:
176 glib.source_remove(self._update_handle)341 glib.source_remove(self._update_handle)
342 self._update_handle = None
343 if self._cancellable:
344 self._cancellable.cancel()
345 self._cancellable = None
177 self._treeview.set_headers_visible(False)346 self._treeview.set_headers_visible(False)
347 self._event = None
178348
179 def _update(self):349 def _update_currency(self):
180 ended = False350 ended = False
181 if self._current_session and self._current_session.state == Session.PAST:351 if self._current_session and self._current_session.state == Session.PAST:
182 ended = True352 ended = True
183 self._current_session = None353 self._current_session = None
184 for i, row in enumerate(self._model):354 for i, row in enumerate(self._model):
185 session = row[self.COL_SESSION]355 session = row[self.COL_SESSION]
356 if session == None:
357 continue
358 if self._current_session and self._current_session.uid == session.uid:
359 self._current_session = session
186 if session.state == Session.NOW:360 if session.state == Session.NOW:
187 row[self.COL_ICON] = gtk.STOCK_GO_FORWARD361 row[self.COL_ICON] = gtk.STOCK_GO_FORWARD
188 if session != self._current_session:362 if session != self._current_session:
@@ -201,9 +375,11 @@
201 if session.state == Session.FUTURE:375 if session.state == Session.FUTURE:
202 row[self.COL_ICON] = None376 row[self.COL_ICON] = None
203 if timedelta(minutes=9) < session.start_datetime - dt.now_local() < timedelta(minutes=10):377 if timedelta(minutes=9) < session.start_datetime - dt.now_local() < timedelta(minutes=10):
204 self.show_notification(378 if not self._last_upcoming_announce == session.uid:
205 _('Session upcoming'),379 self._last_upcoming_announce = session.uid
206 _('The session "{0}" will begin in 10 minutes.').format(session.title)380 self.show_notification(
381 _('Session upcoming'),
382 _('The session "{0}" will begin in 10 minutes.').format(session.title)
207 )383 )
208 if session.state == Session.PAST:384 if session.state == Session.PAST:
209 row[self.COL_ICON] = gtk.STOCK_NO385 row[self.COL_ICON] = gtk.STOCK_NO
@@ -228,10 +404,7 @@
228 return 'PREGUNTA:'404 return 'PREGUNTA:'
229 else:405 else:
230 return 'QUESTIION:'406 return 'QUESTIION:'
231 try:407 event = self._event
232 event = self._event
233 except:
234 event = None # Called when no event is opened
235 if event and event.question_token:408 if event and event.question_token:
236 return event.question_token409 return event.question_token
237 if event and event.locale:410 if event and event.locale:
@@ -246,3 +419,32 @@
246 n.show()419 n.show()
247 except:420 except:
248 logging.debug("Notification failed from Schedule Widget")421 logging.debug("Notification failed from Schedule Widget")
422
423 def _button_setup(self, copy_button, open_button, refresh_button):
424 copy_button.set_label(_("Copy Calendar ICAL URL to Clipboard"))
425 open_button.set_label(_("Open Calendar ICAL URL Using Your Browser"))
426 copy_button.connect("clicked", self._copy_button_clicked)
427 open_button.connect("clicked", self._open_button_clicked)
428 refresh_button.connect("clicked", self._refresh_button_clicked)
429
430 def _copy_button_clicked(self, widget):
431 clipboard = gtk.Clipboard()
432 event = self._event
433 if not event:
434 return
435 clipboard.set_text(event.icalurl)
436
437 def _open_button_clicked(self, widget):
438 event = self._event
439 if not event:
440 return
441 gtk.show_uri(None, event.icalurl, gtk.gdk.CURRENT_TIME)
442
443 def _refresh_button_clicked(self, widget):
444 event = self._event
445 if not event:
446 return
447 if self._update_handle:
448 glib.source_remove(self._update_handle)
449 self._update_handle = None
450 self._calendar_refresh(event, force_update=True)
249451
=== modified file 'lernid/widgets/Slide.py'
--- lernid/widgets/Slide.py 2011-08-22 03:14:02 +0000
+++ lernid/widgets/Slide.py 2012-05-07 00:49:19 +0000
@@ -25,7 +25,10 @@
25import re25import re
26import logging26import logging
27import gio27import gio
28import webbrowser28import cairo
29import StringIO
30import glib
31import random
2932
30from lernid.widgets.Widget import Widget33from lernid.widgets.Widget import Widget
31from lernid.lernidconfig import save_cache_path34from lernid.lernidconfig import save_cache_path
@@ -87,6 +90,8 @@
87 viewport.set_shadow_type(gtk.SHADOW_NONE)90 viewport.set_shadow_type(gtk.SHADOW_NONE)
88 self._master_slide = None91 self._master_slide = None
89 self._session_slide_downloaded = False92 self._session_slide_downloaded = False
93 self._cancellable = None
94 self._slide_retry = None
9095
91 self.connect('expose-event', self._resize)96 self.connect('expose-event', self._resize)
92 self.set_no_show_all(False)97 self.set_no_show_all(False)
@@ -108,22 +113,28 @@
108 self._slidebutton.disconnect(self._slidebutton_cb)113 self._slidebutton.disconnect(self._slidebutton_cb)
109 self._slidebutton_cb = None114 self._slidebutton_cb = None
110 Statusbar.pop_message('slidesession')115 Statusbar.pop_message('slidesession')
116 if self._slide_retry:
117 glib.source_remove(self._slide_retry)
118 self._slide_retry = None
119 if self._cancellable:
120 self._cancellable.cancel()
121 self._cancellable = None
111 self.event_disconnect_signals()122 self.event_disconnect_signals()
112123
113 def _classroom_msg_received(self, classroom, chan, sender, text):124 def _classroom_msg_received(self, classroom, chan, sender, text):
114 matches = re.search(r'\[(?i)SLIDE\s+(\d+).*\]', text)125 matches = re.search(r'\[(?i)SLIDE\s+(\d+).*\]', text)
115 if matches and self._session_slide_downloaded:126 if matches and self._session_slide_downloaded:
116 if chan.is_moderated() or self._on_faculty(sender):127 if self._on_faculty(sender):
117 self._change_slide_page(int(matches.groups()[0]))128 self._change_slide_page(int(matches.groups()[0]))
118 return129 return
119 matches = re.search(r'\[(?i)SLIDEFILE\s+(\S+)\s+(\d+).*\]', text)130 matches = re.search(r'\[(?i)SLIDEFILE\s+(\S+)\s+(\d+).*\]', text)
120 if matches:131 if matches:
121 if chan.is_moderated() or self._on_faculty(sender):132 if self._on_faculty(sender):
122 self._download_slides(matches.groups()[0], int(matches.groups()[1]))133 self._download_slides(matches.groups()[0], int(matches.groups()[1]))
123 return134 return
124 matches = re.search(r'\[(?i)SLIDEFILE\s+(\S+).*\]', text)135 matches = re.search(r'\[(?i)SLIDEFILE\s+(\S+).*\]', text)
125 if matches:136 if matches:
126 if chan.is_moderated() or self._on_faculty(sender):137 if self._on_faculty(sender):
127 self._download_slides(matches.groups()[0], 1)138 self._download_slides(matches.groups()[0], 1)
128 return139 return
129140
@@ -137,10 +148,21 @@
137 return148 return
138 page = pdf.get_page(int(pagenumber) - 1)149 page = pdf.get_page(int(pagenumber) - 1)
139 w, h = page.get_size()150 w, h = page.get_size()
140 pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, int(w), int(h))151 w, h = (int(w), int(h))
141 page.render_to_pixbuf(0,0,int(w),int(h),1,0, pixbuf)152 surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h)
153 context = cairo.Context(surface)
154 page.render(context)
155 # technique from diogodivision's "BlingSwitcher",
156 # through http://www.mikedesjardins.net
157 temp = StringIO.StringIO()
158 surface.write_to_png(temp)
159 temp.seek(0)
160 loader = gtk.gdk.PixbufLoader()
161 loader.write(temp.getvalue())
162 loader.close()
163 pixbuf = loader.get_pixbuf()
142 except:164 except:
143 Statusbar.push_message(_('An error was encountered while trying to load slide number {0}'.format(pagenumber)), duration=120)165 Statusbar.push_message(_('An error was encountered while trying to load slide number {0}'.format(pagenumber)), 'slidesession', duration=15)
144 logging.debug("Something went wrong when loading slide %s" % pagenumber)166 logging.debug("Something went wrong when loading slide %s" % pagenumber)
145 return167 return
146 self._master_slide = pixbuf168 self._master_slide = pixbuf
@@ -173,8 +195,27 @@
173 self._image.set_from_pixbuf(newpb)195 self._image.set_from_pixbuf(newpb)
174 self._image.show()196 self._image.show()
175197
198 @staticmethod
199 def _retry(n): # retry generator
200 for i in range(n):
201 yield random.randint(30,120) # random delay until retry
202 while 1: yield False
203
176 def _download_slides(self, slideurl, page):204 def _download_slides(self, slideurl, page):
205 if self._slide_retry:
206 glib.source_remove(self._slide_retry)
207 self._slide_retry = None
208 if self._cancellable:
209 self._cancellable.cancel()
210 self._cancellable = None
211 self._retries = self._retry(3).next # retry generator obj. next method
212 self._download_slides_attempt(slideurl, page)
213
214 def _download_slides_attempt(self, slideurl, page):
215 self._slide_retry = None
216 Statusbar.pop_message('slidesession')
177 path = os.path.join(save_cache_path('lernid'), 'slides.pdf')217 path = os.path.join(save_cache_path('lernid'), 'slides.pdf')
218 cancellable = gio.Cancellable()
178 try:219 try:
179 logging.debug('downloading slides from %s' % slideurl)220 logging.debug('downloading slides from %s' % slideurl)
180 slidefile = gio.File(slideurl)221 slidefile = gio.File(slideurl)
@@ -187,16 +228,27 @@
187 def reporthook(done_so_far, size):228 def reporthook(done_so_far, size):
188 Statusbar.pop_message('slidesession')229 Statusbar.pop_message('slidesession')
189 msg = _('Downloading session slides (%i%% of %i KB)...') % (100*(float(done_so_far) / float(size)), float(size)/float(1024))230 msg = _('Downloading session slides (%i%% of %i KB)...') % (100*(float(done_so_far) / float(size)), float(size)/float(1024))
190 Statusbar.push_message(msg, 'slidesession')231 Statusbar.push_message(msg, 'slidesession', duration=3)
191 def download_done(giofile, result, self):232 def download_done(giofile, result, stuff):
233 self, slideurl, page, cancellable = stuff
192 try:234 try:
193 giofile.copy_finish(result)235 giofile.copy_finish(result)
236 self._cancellable = None
194 except gio.Error, information:237 except gio.Error, information:
195 Statusbar.push_message(_('An error was encountered while downloading slides'), 'slidesession')238 Statusbar.push_message(_('An error was encountered while downloading slides'), 'slidesession', duration=120)
196 logging.debug('Error when downloading slides from %s; %s' % (slideurl, information))239 logging.debug('Error when downloading slides from %s; %s' % (slideurl, information))
240 secs = self._retries()
241 if secs and not cancellable.is_cancelled():
242 logging.error( \
243 'Retrying slide download in %i secs' % secs)
244 self._slide_retry = glib.timeout_add_seconds(secs,
245 self._download_slides_attempt, slideurl,
246 page)
247 else:
248 logging.error('Slide downloading failed')
197 return249 return
198 logging.debug('slide download completed')250 logging.debug('Slide download completed')
199 Statusbar.push_message(_('Slides have been downloaded'), 'slidesession')251 Statusbar.push_message(_('Slides have been downloaded'), 'slidesession', duration=10)
200 self._session_slide_downloaded = True252 self._session_slide_downloaded = True
201 self.emit('slides-downloaded')253 self.emit('slides-downloaded')
202 self._top.set_tooltip_text(slideurl)254 self._top.set_tooltip_text(slideurl)
@@ -206,12 +258,19 @@
206 self._open_slides_in_browser,258 self._open_slides_in_browser,
207 slideurl)259 slideurl)
208 self._change_slide_page(page)260 self._change_slide_page(page)
209 slidefile.copy_async(destfile, download_done, reporthook, user_data=self, flags=gio.FILE_COPY_OVERWRITE)261 slidefile.copy_async(destfile, download_done, reporthook, cancellable=cancellable, user_data=(self, slideurl, page, cancellable), flags=gio.FILE_COPY_OVERWRITE)
262 self._cancellable = cancellable
210 except gio.Error, information:263 except gio.Error, information:
211 Statusbar.push_message(_('An error was encountered while downloading slides'), 'slidesession')264 Statusbar.push_message(_('An error was encountered while downloading slides'), 'slidesession', duration=120)
212 logging.debug('Error when downloading slides from %s; %s' % (slideurl, information))265 logging.debug('Error when downloading slides from %s; %s' % (slideurl, information))
213266
214 def _session_changed(self, schedule, session):267 def _session_changed(self, schedule, session):
268 if self._slide_retry:
269 glib.source_remove(self._slide_retry)
270 self._slide_retry = None
271 if self._cancellable:
272 self._cancellable.cancel()
273 self._cancellable = None
215 Statusbar.pop_message('slidesession')274 Statusbar.pop_message('slidesession')
216 if session.slides:275 if session.slides:
217 self._download_slides(session.slides, 1)276 self._download_slides(session.slides, 1)
@@ -222,9 +281,15 @@
222 if self._slidebutton_cb:281 if self._slidebutton_cb:
223 self._slidebutton.disconnect(self._slidebutton_cb)282 self._slidebutton.disconnect(self._slidebutton_cb)
224 self._slidebutton_cb = None283 self._slidebutton_cb = None
225 Statusbar.push_message(_('This session does not use slides'), 'slidesession')284 Statusbar.push_message(_('This session does not use slides'), 'slidesession', duration=10)
226285
227 def _session_ended(self, schedule):286 def _session_ended(self, schedule):
287 if self._slide_retry:
288 glib.source_remove(self._slide_retry)
289 self._slide_retry = None
290 if self._cancellable:
291 self._cancellable.cancel()
292 self._cancellable = None
228 self._image.clear()293 self._image.clear()
229 self.hide()294 self.hide()
230 Statusbar.pop_message('slidesession')295 Statusbar.pop_message('slidesession')
@@ -234,4 +299,4 @@
234 self._slidebutton_cb = None299 self._slidebutton_cb = None
235300
236 def _open_slides_in_browser(self, widget, url):301 def _open_slides_in_browser(self, widget, url):
237 webbrowser.open_new_tab(url)302 gtk.show_uri(None, url, gtk.gdk.CURRENT_TIME)
238303
=== modified file 'po/af.po'
--- po/af.po 2010-08-30 04:10:04 +0000
+++ po/af.po 2012-05-07 00:49:19 +0000
@@ -8,21 +8,22 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2010-08-29 13:53+0000\n"11"PO-Revision-Date: 2011-06-04 11:37+0000\n"
12"Last-Translator: Andre Hugo <Unknown>\n"12"Last-Translator: John S. Gruber <JohnSGruber@gmail.com>\n"
13"Language-Team: Afrikaans <af@li.org>\n"13"Language-Team: Afrikaans <af@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2010-08-30 04:10+0000\n"18"X-Launchpad-Export-Date: 2011-06-05 04:50+0000\n"
19"X-Generator: Launchpad (build Unknown)\n"19"X-Generator: Launchpad (build 12959)\n"
2020
21#: ../data/ui/AboutLernidDialog.ui.h:121#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"22msgid "translator-credits"
23msgstr ""23msgstr ""
24"Launchpad Contributions:\n"24"Launchpad Contributions:\n"
25" Andre Hugo https://launchpad.net/~cortexhugo"25" Andre Hugo https://launchpad.net/~cortexhugo\n"
26" John S. Gruber https://launchpad.net/~jsjgruber"
2627
27#: ../data/ui/PasswordDialog.ui.h:128#: ../data/ui/PasswordDialog.ui.h:1
28msgid "Invalid password"29msgid "Invalid password"
2930
=== modified file 'po/ar.po'
--- po/ar.po 2010-08-03 03:57:01 +0000
+++ po/ar.po 2012-05-07 00:49:19 +0000
@@ -8,7 +8,7 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2010-08-02 16:46+0000\n"11"PO-Revision-Date: 2011-06-04 11:31+0000\n"
12"Last-Translator: Michael Budde <mbudde@gmail.com>\n"12"Last-Translator: Michael Budde <mbudde@gmail.com>\n"
13"Language-Team: Arabic <ar@li.org>\n"13"Language-Team: Arabic <ar@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
@@ -16,15 +16,15 @@
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "17"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
18"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"18"3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
19"X-Launchpad-Export-Date: 2010-08-03 03:56+0000\n"19"X-Launchpad-Export-Date: 2011-06-05 04:50+0000\n"
20"X-Generator: Launchpad (build Unknown)\n"20"X-Generator: Launchpad (build 12959)\n"
2121
22#: ../data/ui/AboutLernidDialog.ui.h:122#: ../data/ui/AboutLernidDialog.ui.h:1
23msgid "translator-credits"23msgid "translator-credits"
24msgstr ""24msgstr ""
25"Launchpad Contributions:\n"25"Launchpad Contributions:\n"
26" MaXo https://launchpad.net/~mahmood-188\n"26" MaXo https://launchpad.net/~mahmood-188\n"
27" Majd Aldin Almontaser https://launchpad.net/~ttmtt-team\n"27" Magd Addin M. Almuntaser https://launchpad.net/~ttmtt-team\n"
28" Michael Budde https://launchpad.net/~mbudde\n"28" Michael Budde https://launchpad.net/~mbudde\n"
29" Yazin Alhamdi https://launchpad.net/~yazin-alhamdi\n"29" Yazin Alhamdi https://launchpad.net/~yazin-alhamdi\n"
30" m.ayad https://launchpad.net/~m-ayad"30" m.ayad https://launchpad.net/~m-ayad"
3131
=== modified file 'po/da.po'
--- po/da.po 2010-09-07 05:01:51 +0000
+++ po/da.po 2012-05-07 00:49:19 +0000
@@ -8,15 +8,15 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2010-09-06 15:36+0000\n"11"PO-Revision-Date: 2011-07-06 08:46+0000\n"
12"Last-Translator: AJenbo <anders@jenbo.dk>\n"12"Last-Translator: Michael Budde <mbudde@gmail.com>\n"
13"Language-Team: Danish <da@li.org>\n"13"Language-Team: Danish <da@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2010-09-07 05:01+0000\n"18"X-Launchpad-Export-Date: 2011-07-07 04:52+0000\n"
19"X-Generator: Launchpad (build Unknown)\n"19"X-Generator: Launchpad (build 13168)\n"
2020
21#: ../data/ui/AboutLernidDialog.ui.h:121#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"22msgid "translator-credits"
@@ -219,7 +219,7 @@
219219
220#: ../data/ui/BrowserWidget.ui.h:1220#: ../data/ui/BrowserWidget.ui.h:1
221msgid "Stop browser from changing page"221msgid "Stop browser from changing page"
222msgstr ""222msgstr "Stop browser fra at skifte side"
223223
224#: ../lernid/widgets/Classroom.py:78224#: ../lernid/widgets/Classroom.py:78
225msgid "Joined classroom"225msgid "Joined classroom"
@@ -311,6 +311,18 @@
311#~ msgid "gtk-ok"311#~ msgid "gtk-ok"
312#~ msgstr "gtk-ok"312#~ msgstr "gtk-ok"
313313
314#~ msgid "<b>Resources</b>"
315#~ msgstr "<b>Ressourcer</b>"
316
317#~ msgid "<b>Classroom</b>"
318#~ msgstr "Klasseværelse"
319
320#~ msgid "<b>Chatroom</b>"
321#~ msgstr "Chatrum"
322
323#~ msgid "<b>Schedule</b>"
324#~ msgstr "Kursus-plan"
325
314#~ msgid "David Planella <david.planella@ubuntu.com>"326#~ msgid "David Planella <david.planella@ubuntu.com>"
315#~ msgstr "David Planella <david.planella@ubuntu.com>"327#~ msgstr "David Planella <david.planella@ubuntu.com>"
316328
317329
=== modified file 'po/de.po'
--- po/de.po 2011-05-17 19:55:17 +0000
+++ po/de.po 2012-05-07 00:49:19 +0000
@@ -8,15 +8,15 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2010-10-24 13:24+0000\n"11"PO-Revision-Date: 2011-06-04 12:11+0000\n"
12"Last-Translator: cmdrhenner <cmdrhenner@gmail.com>\n"12"Last-Translator: cmdrhenner <cmdrhenner@gmail.com>\n"
13"Language-Team: German <de@li.org>\n"13"Language-Team: German <de@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2010-10-25 04:46+0000\n"18"X-Launchpad-Export-Date: 2011-06-05 04:50+0000\n"
19"X-Generator: Launchpad (build Unknown)\n"19"X-Generator: Launchpad (build 12959)\n"
2020
21#: ../data/ui/AboutLernidDialog.ui.h:121#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"22msgid "translator-credits"
@@ -24,14 +24,15 @@
24"Launchpad Contributions:\n"24"Launchpad Contributions:\n"
25" AnSc https://launchpad.net/~spam2-anschitech\n"25" AnSc https://launchpad.net/~spam2-anschitech\n"
26" Bernd Schlapsi https://launchpad.net/~bernd-sch\n"26" Bernd Schlapsi https://launchpad.net/~bernd-sch\n"
27" BuZZ-dEE https://launchpad.net/~buzz-dee\n"
28" Dennis Lichtenthäler https://launchpad.net/~pvbcharon\n"27" Dennis Lichtenthäler https://launchpad.net/~pvbcharon\n"
29" Jakob Kramer https://launchpad.net/~jakobk\n"28" Jakob Kramer https://launchpad.net/~jakobk\n"
30" Johannes Möller https://launchpad.net/~jojo-moeller\n"29" Johannes Möller https://launchpad.net/~jojo-moeller\n"
31" Michael Keppler https://launchpad.net/~bananeweizen\n"30" Michael Keppler https://launchpad.net/~bananeweizen\n"
32" MixCool https://launchpad.net/~mixcool\n"
33" Nico Gulden https://launchpad.net/~ngulden\n"31" Nico Gulden https://launchpad.net/~ngulden\n"
32" Sebastian Schlatow https://launchpad.net/~buzz-dee\n"
33" SpaceCafé https://launchpad.net/~spacecafe\n"
34" Tobias Baldauf https://launchpad.net/~technopagan\n"34" Tobias Baldauf https://launchpad.net/~technopagan\n"
35" cmdrhenner https://launchpad.net/~cmdrhenner\n"
35" mogli https://launchpad.net/~patrick-kohan\n"36" mogli https://launchpad.net/~patrick-kohan\n"
36" sebastian-s https://launchpad.net/~sebastian-s"37" sebastian-s https://launchpad.net/~sebastian-s"
3738
@@ -365,6 +366,12 @@
365#~ msgid "Browser"366#~ msgid "Browser"
366#~ msgstr "Browser"367#~ msgstr "Browser"
367368
369#~ msgid "Use vertical window layout"
370#~ msgstr "Benutze vertikales Fensterlayout"
371
372#~ msgid "Nick can not contain other characters that A-Z"
373#~ msgstr "Spitzname kann keine anderen Zeichen als A-Z enthalten"
374
368#~ msgid "Even_t"375#~ msgid "Even_t"
369#~ msgstr "_Veranstaltung"376#~ msgstr "_Veranstaltung"
370377
371378
=== modified file 'po/en_AU.po'
--- po/en_AU.po 2009-12-28 04:53:45 +0000
+++ po/en_AU.po 2012-05-07 00:49:19 +0000
@@ -7,126 +7,324 @@
7msgstr ""7msgstr ""
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2009-12-23 02:11-0800\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2009-12-27 06:11+0000\n"11"PO-Revision-Date: 2011-08-01 05:00+0000\n"
12"Last-Translator: Martin Alderson <martin.alderson@limepath.com>\n"12"Last-Translator: Jared Norris <jrnorris@gmail.com>\n"
13"Language-Team: English (Australia) <en_AU@li.org>\n"13"Language-Team: English (Australia) <en_AU@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"X-Launchpad-Export-Date: 2009-12-28 04:53+0000\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Generator: Launchpad (build Unknown)\n"18"X-Launchpad-Export-Date: 2011-08-02 04:47+0000\n"
19"X-Generator: Launchpad (build 13552)\n"
20
21#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"
23msgstr ""
24"Launchpad Contributions:\n"
25" Colin Dean https://launchpad.net/~colindean\n"
26" Daniel Bell https://launchpad.net/~danielbell\n"
27" Jared Norris https://launchpad.net/~jarednorris\n"
28" Martin Alderson https://launchpad.net/~martinalderson\n"
29" Steve Garton https://launchpad.net/~sheepeatingtaz"
30
31#: ../data/ui/PasswordDialog.ui.h:1
32msgid "Invalid password"
33msgstr "Invalid password"
34
35#: ../data/ui/PasswordDialog.ui.h:2
36msgid ""
37"The NickServ password you entered was invalid.\n"
38"Please enter the correct password:"
39msgstr ""
40"The NickServ password you entered was invalid.\n"
41"Please enter the correct password:"
42
43#. Translators: Local time representation
44#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:55
45#: ../lernid/Sessions.py:60
46msgid "%H:%M"
47msgstr "%H:%M"
48
49#: ../data/ui/PreferencesLernidDialog.ui.h:1
50msgid ""
51"<i>You need to restart Lernid for some of the changes to take effect.</i>"
52msgstr ""
53"<i>You need to restart Lernid for some of the changes to take effect.</i>"
54
55#: ../data/ui/PreferencesLernidDialog.ui.h:2
56msgid "Show an icon in the notification area"
57msgstr "Show an icon in the notification area"
58
59#: ../data/ui/PreferencesLernidDialog.ui.h:3
60msgid "Show time in classroom and chatroom"
61msgstr "Show time in classroom and chatroom"
62
63#: ../data/ui/PreferencesLernidDialog.ui.h:4
64msgid "Use vertical layout"
65msgstr "Use vertical layout"
66
67#: ../lernid/EventManager.py:96
68msgid "Connecting to event"
69msgstr "Connecting to event"
70
71#: ../lernid/EventManager.py:104
72msgid "Your nickname is now identified"
73msgstr "Your nickname is now identified"
74
75#: ../lernid/EventManager.py:139
76msgid "Disconnecting from event"
77msgstr "Disconnecting from event"
78
79#: ../lernid/widgets/Slide.py:109
80msgid "An error was encountered while trying to load slide number {0}"
81msgstr "An error was encountered while trying to load slide number {0}"
82
83#: ../lernid/widgets/Slide.py:148
84#, python-format
85msgid "Downloading session slides ({0} % of {1:.1} MB)..."
86msgstr "Downloading session slides ({0} % of {1:.1} MB)..."
87
88#: ../lernid/widgets/Slide.py:151
89msgid "Slides have been downloaded"
90msgstr "Slides have been downloaded"
91
92#: ../lernid/widgets/Slide.py:156
93msgid "An error was encountered while downloading slides"
94msgstr "An error was encountered while downloading slides"
95
96#: ../lernid/widgets/Slide.py:168
97msgid "This session does not use slides"
98msgstr "This session does not use slides"
1999
20#: ../data/ui/LernidWindow.ui.h:1100#: ../data/ui/LernidWindow.ui.h:1
21msgid "Browser"101msgid "Classroom"
22msgstr "Browser"102msgstr "Classroom"
23103
24#: ../data/ui/LernidWindow.ui.h:2104#: ../data/ui/LernidWindow.ui.h:2
25msgid "Chatroom"105msgid "Enter the address you would like to open in the browser:"
26msgstr "Chatroom"106msgstr "Enter the address you would like to open in the browser:"
27107
28#: ../data/ui/LernidWindow.ui.h:3108#: ../data/ui/LernidWindow.ui.h:3
29msgid "Classroom"109msgid "Eve_nt"
30msgstr "Classroom"110msgstr "Eve_nt"
31111
32#: ../data/ui/LernidWindow.ui.h:4 ../lernid.desktop.in.h:1112#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130
113#: ../lernid.desktop.in.h:1
33msgid "Lernid"114msgid "Lernid"
34msgstr "Lernid"115msgstr "Lernid"
35116
36#: ../data/ui/LernidWindow.ui.h:5117#: ../data/ui/LernidWindow.ui.h:5
37msgid "Not Connected."118msgid "Open _URL..."
38msgstr "Not Connected."119msgstr "Open _URL..."
39120
40#: ../data/ui/LernidWindow.ui.h:6121#: ../data/ui/LernidWindow.ui.h:6
41msgid "Session"122msgid "Tweet current session"
42msgstr "Session"123msgstr "Tweet current session"
43124
44#: ../data/ui/LernidWindow.ui.h:7125#: ../data/ui/LernidWindow.ui.h:7
45msgid "_Event"126msgid "_Chatroom"
46msgstr "_Event"127msgstr "_Chatroom"
47128
48#: ../data/ui/LernidWindow.ui.h:8129#: ../data/ui/LernidWindow.ui.h:8
130msgid "_Edit"
131msgstr "_Edit"
132
133#: ../data/ui/LernidWindow.ui.h:9
134msgid "_Fullscreen"
135msgstr "_Fullscreen"
136
137#: ../data/ui/LernidWindow.ui.h:10
49msgid "_Help"138msgid "_Help"
50msgstr "_Help"139msgstr "_Help"
51140
52#: ../data/ui/AboutLernidDialog.ui.h:1141#: ../data/ui/LernidWindow.ui.h:11
53msgid "Connect to a world of online tutorials quickly and easily."142msgid "_Statusbar"
54msgstr "Connect to a world of online tutorials quickly and easily."143msgstr "_Statusbar"
55144
56#: ../data/ui/AboutLernidDialog.ui.h:2145#: ../data/ui/LernidWindow.ui.h:12
57msgid ""146msgid "_View"
58"Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"147msgstr "_View"
59"This program is free software: you can redistribute it and/or modify it "148
60"under the terms of the GNU General Public License version 3, as published by "149#: ../bin/lernid.py:141 ../bin/lernid.py:144 ../bin/lernid.py:199
61"the Free Software Foundation.\n"150msgid "_Session"
62"\n"151msgstr "_Session"
63"This program is distributed in the hope that it will be useful, but WITHOUT "152
64"ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "153#: ../bin/lernid.py:208
65"SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "154msgid "Sche_dule"
66"General Public License for more details.\n"155msgstr "Sche_dule"
67"\n"156
68"You should have received a copy of the GNU General Public License along "157#: ../bin/lernid.py:215
69"with this program. If not, see <http://www.gnu.org/licenses/>."158msgid "_Terminal"
70msgstr ""159msgstr "_Terminal"
71"Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"160
72"This program is free software: you can redistribute it and/or modify it "161#: ../bin/lernid.py:226
73"under the terms of the GNU General Public License version 3, as published by "162msgid "({0} user)"
74"the Free Software Foundation.\n"163msgid_plural "({0} users)"
75"\n"164msgstr[0] "({0} user)"
76"This program is distributed in the hope that it will be useful, but WITHOUT "165msgstr[1] "({0} users)"
77"ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "166
78"SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "167#: ../bin/lernid.py:290
79"General Public License for more details.\n"168msgid "_Show Lernid"
80"\n"169msgstr "_Show Lernid"
81"You should have received a copy of the GNU General Public License along "170
82"with this program. If not, see <http://www.gnu.org/licenses/>."171#: ../bin/lernid.py:333
83172msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."
84#: ../data/ui/AboutLernidDialog.ui.h:8173msgstr "The session \"{0}\" has started in #ubuntu-classroom on freenode."
85msgid "translator-credits"174
86msgstr ""175#: ../bin/lernid.py:424
87"Launchpad Contributions:\n"176msgid "Show debug messages"
88" Colin Dean https://launchpad.net/~colindean\n"177msgstr "Show debug messages"
89" Martin Alderson https://launchpad.net/~martinalderson\n"178
90" Steve Garton https://launchpad.net/~sheepeatingtaz"179#: ../bin/lernid.py:426
91180msgid "Override classroom channel"
92#: ../lernid.desktop.in.h:2181msgstr "Override classroom channel"
93msgid "Participate in online learning events"182
94msgstr "Participate in online learning events"183#: ../bin/lernid.py:428
184msgid "Filename or URL to Lernid config file"
185msgstr "Filename or URL to Lernid config file"
186
187#: ../bin/lernid.py:430
188msgid "Use web chat widget instead of the native one"
189msgstr "Use web chat widget instead of the native one"
190
191#: ../lernid/widgets/Schedule.py:80
192msgid "Date"
193msgstr "Date"
194
195#: ../lernid/widgets/Schedule.py:88
196msgid "Starts"
197msgstr "Starts"
198
199#: ../lernid/widgets/Schedule.py:96
200msgid "Ends"
201msgstr "Ends"
202
203#: ../lernid/widgets/Schedule.py:104 ../lernid/widgets/Schedule.py:109
204msgid "Title"
205msgstr "Title"
206
207#: ../lernid/widgets/Schedule.py:163
208msgid "Session started"
209msgstr "Session started"
210
211#: ../lernid/widgets/Schedule.py:164
212msgid "The session \"{0}\" has started."
213msgstr "The session \"{0}\" has started."
214
215#: ../lernid/widgets/Schedule.py:173
216msgid "Session upcoming"
217msgstr "Session upcoming"
218
219#: ../lernid/widgets/Schedule.py:174
220msgid "The session \"{0}\" will begin in 10 minutes."
221msgstr "The session \"{0}\" will begin in 10 minutes."
222
223#: ../data/ui/BrowserWidget.ui.h:1
224msgid "Stop browser from changing page"
225msgstr "Stop browser from changing page"
226
227#: ../lernid/widgets/Classroom.py:78
228msgid "Joined classroom"
229msgstr "Joined classroom"
95230
96#: ../data/ui/ConnectDialog.ui.h:1231#: ../data/ui/ConnectDialog.ui.h:1
232msgid "Advanced options"
233msgstr "Advanced options"
234
235#: ../data/ui/ConnectDialog.ui.h:2
97msgid "Choose an event"236msgid "Choose an event"
98msgstr "Choose an event"237msgstr "Choose an event"
99238
100#: ../data/ui/ConnectDialog.ui.h:2
101msgid "Event"
102msgstr "Event"
103
104#: ../data/ui/ConnectDialog.ui.h:3239#: ../data/ui/ConnectDialog.ui.h:3
105msgid "Nickname"240msgid "Event:"
106msgstr "Nickname"241msgstr "Event:"
107242
108#. Translators: this is in strftime format. See http://docs.python.org/library/time.html#time.strftime243#: ../data/ui/ConnectDialog.ui.h:4
109#. This is the format of the displayed date.244msgid "NickServ password:"
110#. The month name is localized: it defaults to something like "15 June 2010" for 'en' or "15 Juin 2009" for 'fr', etc.245msgstr "NickServ password:"
111#: ../bin/lernid.py:205246
247#: ../data/ui/ConnectDialog.ui.h:5
248msgid "Nickname:"
249msgstr "Nickname:"
250
251#: ../lernid.desktop.in.h:2
252msgid "Participate in online learning events"
253msgstr "Participate in online learning events"
254
255#. Translators: Local date representation
256#: ../lernid/Sessions.py:50
112msgid "%d %B %Y"257msgid "%d %B %Y"
113msgstr ""258msgstr "%d %B %Y"
114259
115#: ../bin/lernid.py:244260#: ../lernid/ConnectDialog.py:111
116msgid "' session is starting..."261msgid "Nick can not be blank"
117msgstr "' session is starting..."262msgstr "Nick can not be blank"
118263
119#: ../bin/lernid.py:364 ../bin/lernid.py:365264#: ../lernid/ConnectDialog.py:115
120msgid "Connected to "265#, python-format
121msgstr "Connected to "266msgid "Nick can not begin with: %s"
122267msgstr "Nick can not begin with: %s"
123#: ../bin/lernid.py:394268
124msgid "Disconnecting from "269#: ../lernid/ConnectDialog.py:119
125msgstr "Disconnecting from "270msgid "Nick can not contain blank spaces."
126271msgstr "Nick can not contain blank spaces."
127#: ../bin/lernid.py:486272
128msgid "Show debug messages"273#: ../lernid/ConnectDialog.py:119
129msgstr "Show debug messages"274#, python-format
275msgid "Nick can not contain: %s"
276msgstr "Nick can not contain: %s"
277
278#: ../lernid/ConnectDialog.py:122
279msgid "Nick can only contain English alphabet characters"
280msgstr "Nick can only contain English alphabet characters"
281
282#: ../lernid/lernidconfig.py:33
283msgid "Connect to a world of online tutorials quickly and easily."
284msgstr "Connect to a world of online tutorials quickly and easily."
285
286#: ../lernid/widgets/NativeChatroom.py:164
287msgid "IRC commands are not yet supported."
288msgstr "IRC commands are not yet supported."
289
290#~ msgid "Not Connected."
291#~ msgstr "Not Connected."
292
293#~ msgid "_Event"
294#~ msgstr "_Event"
295
296#~ msgid "Nickname"
297#~ msgstr "Nickname"
298
299#~ msgid ""
300#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
301#~ "This program is free software: you can redistribute it and/or modify it "
302#~ "under the terms of the GNU General Public License version 3, as published by "
303#~ "the Free Software Foundation.\n"
304#~ "\n"
305#~ "This program is distributed in the hope that it will be useful, but WITHOUT "
306#~ "ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
307#~ "SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
308#~ "General Public License for more details.\n"
309#~ "\n"
310#~ "You should have received a copy of the GNU General Public License along "
311#~ "with this program. If not, see <http://www.gnu.org/licenses/>."
312#~ msgstr ""
313#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
314#~ "This program is free software: you can redistribute it and/or modify it "
315#~ "under the terms of the GNU General Public License version 3, as published by "
316#~ "the Free Software Foundation.\n"
317#~ "\n"
318#~ "This program is distributed in the hope that it will be useful, but WITHOUT "
319#~ "ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
320#~ "SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
321#~ "General Public License for more details.\n"
322#~ "\n"
323#~ "You should have received a copy of the GNU General Public License along "
324#~ "with this program. If not, see <http://www.gnu.org/licenses/>."
325
326#~ msgid "Event"
327#~ msgstr "Event"
130328
131#~ msgid "Lernid application"329#~ msgid "Lernid application"
132#~ msgstr "Lernid application"330#~ msgstr "Lernid application"
@@ -137,8 +335,38 @@
137#~ msgid "gtk-ok"335#~ msgid "gtk-ok"
138#~ msgstr "gtk-ok"336#~ msgstr "gtk-ok"
139337
338#~ msgid "<b>Resources</b>"
339#~ msgstr "<b>Resources</b>"
340
341#~ msgid "<b>Classroom</b>"
342#~ msgstr "<b>Classroom</b>"
343
344#~ msgid "<b>Chatroom</b>"
345#~ msgstr "<b>Chatroom</b>"
346
347#~ msgid "<b>Schedule</b>"
348#~ msgstr "<b>Schedule</b>"
349
140#~ msgid "David Planella <david.planella@ubuntu.com>"350#~ msgid "David Planella <david.planella@ubuntu.com>"
141#~ msgstr "David Planella <david.planella@ubuntu.com>"351#~ msgstr "David Planella <david.planella@ubuntu.com>"
142352
353#~ msgid "Connected to "
354#~ msgstr "Connected to "
355
356#~ msgid "Disconnecting from "
357#~ msgstr "Disconnecting from "
358
359#~ msgid "Chatroom"
360#~ msgstr "Chatroom"
361
362#~ msgid "Browser"
363#~ msgstr "Browser"
364
143#~ msgid "Schedule"365#~ msgid "Schedule"
144#~ msgstr "Schedule"366#~ msgstr "Schedule"
367
368#~ msgid "Session"
369#~ msgstr "Session"
370
371#~ msgid "' session is starting..."
372#~ msgstr "' session is starting..."
145373
=== modified file 'po/en_CA.po'
--- po/en_CA.po 2010-09-04 04:57:57 +0000
+++ po/en_CA.po 2012-05-07 00:49:19 +0000
@@ -8,15 +8,15 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2010-09-03 11:40+0000\n"11"PO-Revision-Date: 2011-06-04 11:44+0000\n"
12"Last-Translator: Ken Sharp <Unknown>\n"12"Last-Translator: John S. Gruber <JohnSGruber@gmail.com>\n"
13"Language-Team: English (Canada) <en_CA@li.org>\n"13"Language-Team: English (Canada) <en_CA@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2010-09-04 04:57+0000\n"18"X-Launchpad-Export-Date: 2011-06-05 04:50+0000\n"
19"X-Generator: Launchpad (build Unknown)\n"19"X-Generator: Launchpad (build 12959)\n"
2020
21#: ../data/ui/AboutLernidDialog.ui.h:121#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"22msgid "translator-credits"
@@ -24,6 +24,7 @@
24"Launchpad Contributions:\n"24"Launchpad Contributions:\n"
25" Colin Dean https://launchpad.net/~colindean\n"25" Colin Dean https://launchpad.net/~colindean\n"
26" Daniel Bell https://launchpad.net/~danielbell\n"26" Daniel Bell https://launchpad.net/~danielbell\n"
27" John S. Gruber https://launchpad.net/~jsjgruber\n"
27" Jono Bacon https://launchpad.net/~jonobacon\n"28" Jono Bacon https://launchpad.net/~jonobacon\n"
28" Ken Sharp https://launchpad.net/~kennybobs\n"29" Ken Sharp https://launchpad.net/~kennybobs\n"
29" Luke Hollins https://launchpad.net/~lwh\n"30" Luke Hollins https://launchpad.net/~lwh\n"
@@ -340,6 +341,18 @@
340#~ msgid "David Planella <david.planella@ubuntu.com>"341#~ msgid "David Planella <david.planella@ubuntu.com>"
341#~ msgstr "David Planella <david.planella@ubuntu.com>"342#~ msgstr "David Planella <david.planella@ubuntu.com>"
342343
344#~ msgid "<b>Resources</b>"
345#~ msgstr "<b>Resources</b>"
346
347#~ msgid "<b>Classroom</b>"
348#~ msgstr "<b>Classroom</b>"
349
350#~ msgid "<b>Chatroom</b>"
351#~ msgstr "<b>Chatroom</b>"
352
353#~ msgid "<b>Schedule</b>"
354#~ msgstr "<b>Schedule</b>"
355
343#~ msgid "Connected to "356#~ msgid "Connected to "
344#~ msgstr "Connected to "357#~ msgstr "Connected to "
345358
346359
=== modified file 'po/es.po'
--- po/es.po 2010-10-18 05:03:19 +0000
+++ po/es.po 2012-05-07 00:49:19 +0000
@@ -8,15 +8,15 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2010-10-17 12:37+0000\n"11"PO-Revision-Date: 2011-09-12 10:01+0000\n"
12"Last-Translator: DiegoJ <diegojromerolopez@gmail.com>\n"12"Last-Translator: Fitoschido <fitoschido@gmail.com>\n"
13"Language-Team: Spanish <es@li.org>\n"13"Language-Team: Spanish <es@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2010-10-18 05:03+0000\n"18"X-Launchpad-Export-Date: 2011-09-13 04:56+0000\n"
19"X-Generator: Launchpad (build Unknown)\n"19"X-Generator: Launchpad (build 13910)\n"
2020
21#: ../data/ui/AboutLernidDialog.ui.h:121#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"22msgid "translator-credits"
@@ -27,20 +27,18 @@
27" DiegoJ https://launchpad.net/~diegojromerolopez\n"27" DiegoJ https://launchpad.net/~diegojromerolopez\n"
28" EdwinCartagenaH https://launchpad.net/~edwincartagenah\n"28" EdwinCartagenaH https://launchpad.net/~edwincartagenah\n"
29" Emilien Klein https://launchpad.net/~emilien-klein\n"29" Emilien Klein https://launchpad.net/~emilien-klein\n"
30" Hector Louzao https://launchpad.net/~hhlp\n"30" Fitoschido https://launchpad.net/~fitoschido\n"
31" Hollman Enciso https://launchpad.net/~hollman\n"31" Hollman Enciso https://launchpad.net/~hollman\n"
32" Ilan https://launchpad.net/~ilan\n"
33" Jono Bacon https://launchpad.net/~jonobacon\n"32" Jono Bacon https://launchpad.net/~jonobacon\n"
34" Jose Ernesto Davila https://launchpad.net/~josernestodavila\n"33" Jose Ernesto Davila https://launchpad.net/~josernestodavila\n"
35" Julián Alarcón https://launchpad.net/~alarconj\n"
36" Kamus https://launchpad.net/~kamus\n"34" Kamus https://launchpad.net/~kamus\n"
37" Leandro Gómez https://launchpad.net/~leogg\n"35" Leandro Gómez https://launchpad.net/~leogg\n"
38" Monkey https://launchpad.net/~monkey-libre\n"36" Monkey https://launchpad.net/~monkey-libre\n"
39" fgp https://launchpad.net/~komakino"37" hhlp https://launchpad.net/~hhlp"
4038
41#: ../data/ui/PasswordDialog.ui.h:139#: ../data/ui/PasswordDialog.ui.h:1
42msgid "Invalid password"40msgid "Invalid password"
43msgstr "Contraseña incorrecta"41msgstr "Contraseña no válida"
4442
45#: ../data/ui/PasswordDialog.ui.h:243#: ../data/ui/PasswordDialog.ui.h:2
46msgid ""44msgid ""
@@ -60,7 +58,7 @@
60msgid ""58msgid ""
61"<i>You need to restart Lernid for some of the changes to take effect.</i>"59"<i>You need to restart Lernid for some of the changes to take effect.</i>"
62msgstr ""60msgstr ""
63"<i>Ha de reiniciar Lernid para que algunos de los cambios surtan efecto.</i>"61"<i>Debe reiniciar Lernid para que algunos de los cambios surtan efecto.</i>"
6462
65#: ../data/ui/PreferencesLernidDialog.ui.h:263#: ../data/ui/PreferencesLernidDialog.ui.h:2
66msgid "Show an icon in the notification area"64msgid "Show an icon in the notification area"
@@ -93,7 +91,7 @@
93#: ../lernid/widgets/Slide.py:14891#: ../lernid/widgets/Slide.py:148
94#, python-format92#, python-format
95msgid "Downloading session slides ({0} % of {1:.1} MB)..."93msgid "Downloading session slides ({0} % of {1:.1} MB)..."
96msgstr ""94msgstr "Descargando diapositivas de sesión ({0} % de {1:.1} MB)..."
9795
98#: ../lernid/widgets/Slide.py:15196#: ../lernid/widgets/Slide.py:151
99msgid "Slides have been downloaded"97msgid "Slides have been downloaded"
@@ -296,84 +294,3 @@
296#: ../lernid/widgets/NativeChatroom.py:164294#: ../lernid/widgets/NativeChatroom.py:164
297msgid "IRC commands are not yet supported."295msgid "IRC commands are not yet supported."
298msgstr "Las órdenes del IRC todavía no están soportadas."296msgstr "Las órdenes del IRC todavía no están soportadas."
299
300#~ msgid "Event"
301#~ msgstr "Evento"
302
303#~ msgid "Nickname"
304#~ msgstr "Apodo"
305
306#~ msgid "_Event"
307#~ msgstr "_Evento"
308
309#~ msgid "gtk-ok"
310#~ msgstr "gtk-ok"
311
312#~ msgid "Lernid application"
313#~ msgstr "Aplicación Lernid"
314
315#~ msgid "gtk-cancel"
316#~ msgstr "gtk-cancel"
317
318#~ msgid "Not Connected."
319#~ msgstr "No conectado."
320
321#~ msgid "Chat Room"
322#~ msgstr "Salón de Charla"
323
324#~ msgid "Schedule"
325#~ msgstr "Horario"
326
327#~ msgid "Connected to "
328#~ msgstr "Conectado a "
329
330#~ msgid "Disconnecting from "
331#~ msgstr "Desconectando de "
332
333#~ msgid "David Planella <david.planella@ubuntu.com>"
334#~ msgstr "David Planella <david.planella@ubuntu.com>"
335
336#~ msgid "Chatroom"
337#~ msgstr "Sala de Chat"
338
339#~ msgid ""
340#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
341#~ "This program is free software: you can redistribute it and/or modify it "
342#~ "under the terms of the GNU General Public License version 3, as published by "
343#~ "the Free Software Foundation.\n"
344#~ "\n"
345#~ "This program is distributed in the hope that it will be useful, but WITHOUT "
346#~ "ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
347#~ "SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
348#~ "General Public License for more details.\n"
349#~ "\n"
350#~ "You should have received a copy of the GNU General Public License along "
351#~ "with this program. If not, see <http://www.gnu.org/licenses/>."
352#~ msgstr ""
353#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
354#~ "Este programa es libre: puedes distribuirlo y/o modificarlo bajo los "
355#~ "términos de la licencia GNU General Public version 3, como fue publicado por "
356#~ "la Free Software Foundation.\n"
357#~ "\n"
358#~ "Este programa es distruibuido con la esperanza que será útil, pero SIN "
359#~ "NINGUNA GARANTIA; sin siquiera la garantía implícita \n"
360#~ "de comerciabilidad, calidad de satisfacción, o apto para un propósito en "
361#~ "particular. Vea la licencia GNU General para obtener más detalles.\n"
362#~ "\n"
363#~ "Debería haber recibido una copia de la licencia GNU General Public junto con "
364#~ "este programa. De lo contrario, vea <http://www.gnu.org/licenses/>."
365
366#~ msgid "Browser"
367#~ msgstr "Navegador"
368
369#~ msgid "Participate in online Ubuntu learning events"
370#~ msgstr "Participar en eventos de aprendizaje en línea de Ubuntu"
371
372#~ msgid "Session"
373#~ msgstr "Sesión"
374
375#~ msgid "' session is starting..."
376#~ msgstr "' la sesión está empezando..."
377
378#~ msgid "Downloading session slides..."
379#~ msgstr "Descargando diapositivas de la sesión..."
380297
=== modified file 'po/eu.po'
--- po/eu.po 2010-08-03 03:57:01 +0000
+++ po/eu.po 2012-05-07 00:49:19 +0000
@@ -8,15 +8,15 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: Oier Mees <oier89rider@gmail.com>\n"9"Report-Msgid-Bugs-To: Oier Mees <oier89rider@gmail.com>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2010-08-02 15:51+0000\n"11"PO-Revision-Date: 2011-06-05 13:52+0000\n"
12"Last-Translator: Michael Budde <mbudde@gmail.com>\n"12"Last-Translator: Oier Mees <Unknown>\n"
13"Language-Team: LANGUAGE <LL@li.org>\n"13"Language-Team: LANGUAGE <LL@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2010-08-03 03:56+0000\n"18"X-Launchpad-Export-Date: 2011-06-06 04:47+0000\n"
19"X-Generator: Launchpad (build Unknown)\n"19"X-Generator: Launchpad (build 12959)\n"
2020
21#: ../data/ui/AboutLernidDialog.ui.h:121#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"22msgid "translator-credits"
@@ -251,7 +251,7 @@
251#. Translators: Local date representation251#. Translators: Local date representation
252#: ../lernid/Sessions.py:50252#: ../lernid/Sessions.py:50
253msgid "%d %B %Y"253msgid "%d %B %Y"
254msgstr "%d %B %Y"254msgstr "%Y(e)ko %Bk %d"
255255
256#: ../lernid/ConnectDialog.py:111256#: ../lernid/ConnectDialog.py:111
257msgid "Nick can not be blank"257msgid "Nick can not be blank"
@@ -283,5 +283,38 @@
283msgid "IRC commands are not yet supported."283msgid "IRC commands are not yet supported."
284msgstr "IRC komandoak oraindik ez dira onartzen."284msgstr "IRC komandoak oraindik ez dira onartzen."
285285
286#~ msgid ""
287#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
288#~ "This program is free software: you can redistribute it and/or modify it "
289#~ "under the terms of the GNU General Public License version 3, as published by "
290#~ "the Free Software Foundation.\n"
291#~ "\n"
292#~ "This program is distributed in the hope that it will be useful, but WITHOUT "
293#~ "ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
294#~ "SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
295#~ "General Public License for more details.\n"
296#~ "\n"
297#~ "You should have received a copy of the GNU General Public License along "
298#~ "with this program. If not, see <http://www.gnu.org/licenses/>."
299#~ msgstr ""
300#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
301#~ "Programa hau software librea da: birbanatzea edo/eta aldatzea daukazuFree "
302#~ "Software Foundation-ek argitaratutako GNU General Public License-ren "
303#~ "3bertsioaren baldintzenpean.\n"
304#~ "\n"
305#~ "Programa hau erabilgarri izango delakoan banatzen dugu, baina INONGO "
306#~ "BERMERIK GABE; ezta ere hurrengo berme implizitukin MERKATURATZETASUNA, "
307#~ "KALITATE EGOKIA, edo INTENTZIO JAKIN BATERAKO EGOKITASUNA. Ikusi GNU "
308#~ "General Public License xehetasun gehiagorentzat.\n"
309#~ "\n"
310#~ "GNU General Public License-eren kopia bat jaso beharko zenuke "
311#~ "programahonekin batera. Ezezkoan, ikusi <http://www.gnu.org/licenses/>."
312
313#~ msgid "Even_t"
314#~ msgstr "Ekitaldia_t"
315
316#~ msgid "_Hide Lernid"
317#~ msgstr "_Ezkutatu Lernid"
318
286#~ msgid "Downloading session slides..."319#~ msgid "Downloading session slides..."
287#~ msgstr "Saioko gardenkiak jaisten..."320#~ msgstr "Saioko gardenkiak jaisten..."
288321
=== modified file 'po/he.po'
--- po/he.po 2010-08-03 03:57:01 +0000
+++ po/he.po 2012-05-07 00:49:19 +0000
@@ -8,15 +8,15 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2010-08-02 16:01+0000\n"11"PO-Revision-Date: 2011-06-08 06:46+0000\n"
12"Last-Translator: Ilan <ilan@fonz.net>\n"12"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
13"Language-Team: Hebrew <he@li.org>\n"13"Language-Team: Hebrew <he@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2010-08-03 03:56+0000\n"18"X-Launchpad-Export-Date: 2011-06-09 04:43+0000\n"
19"X-Generator: Launchpad (build Unknown)\n"19"X-Generator: Launchpad (build 13168)\n"
2020
21#: ../data/ui/AboutLernidDialog.ui.h:121#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"22msgid "translator-credits"
@@ -25,17 +25,21 @@
25" Ddorda https://launchpad.net/~ddorda\n"25" Ddorda https://launchpad.net/~ddorda\n"
26" Ilan https://launchpad.net/~ilan\n"26" Ilan https://launchpad.net/~ilan\n"
27" SB https://launchpad.net/~sonny-benshimon\n"27" SB https://launchpad.net/~sonny-benshimon\n"
28" Uri Shabtay https://launchpad.net/~uri.shabtay"28" Uri Shabtay https://launchpad.net/~uri.shabtay\n"
29" Yaron https://launchpad.net/~sh-yaron\n"
30" serfus https://launchpad.net/~serfus"
2931
30#: ../data/ui/PasswordDialog.ui.h:132#: ../data/ui/PasswordDialog.ui.h:1
31msgid "Invalid password"33msgid "Invalid password"
32msgstr "הסיסמה שגויה"34msgstr "הססמה שגויה"
3335
34#: ../data/ui/PasswordDialog.ui.h:236#: ../data/ui/PasswordDialog.ui.h:2
35msgid ""37msgid ""
36"The NickServ password you entered was invalid.\n"38"The NickServ password you entered was invalid.\n"
37"Please enter the correct password:"39"Please enter the correct password:"
38msgstr ""40msgstr ""
41"ססמת ה־NickServ שהוזנה אינה תקנית.\n"
42"נא להזין את הססמה הנכונה:"
3943
40#. Translators: Local time representation44#. Translators: Local time representation
41#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:5545#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:55
@@ -46,52 +50,52 @@
46#: ../data/ui/PreferencesLernidDialog.ui.h:150#: ../data/ui/PreferencesLernidDialog.ui.h:1
47msgid ""51msgid ""
48"<i>You need to restart Lernid for some of the changes to take effect.</i>"52"<i>You need to restart Lernid for some of the changes to take effect.</i>"
49msgstr ""53msgstr "עליך להפעיל את Lernid מחדש כדי שחלק מהשינויים יכנסו לתוקף."
5054
51#: ../data/ui/PreferencesLernidDialog.ui.h:255#: ../data/ui/PreferencesLernidDialog.ui.h:2
52msgid "Show an icon in the notification area"56msgid "Show an icon in the notification area"
53msgstr ""57msgstr "הצגת סמל באזור הדיווחים"
5458
55#: ../data/ui/PreferencesLernidDialog.ui.h:359#: ../data/ui/PreferencesLernidDialog.ui.h:3
56msgid "Show time in classroom and chatroom"60msgid "Show time in classroom and chatroom"
57msgstr ""61msgstr "הצגת השעה בכיתה ובחדר הצ׳אט"
5862
59#: ../data/ui/PreferencesLernidDialog.ui.h:463#: ../data/ui/PreferencesLernidDialog.ui.h:4
60msgid "Use vertical layout"64msgid "Use vertical layout"
61msgstr ""65msgstr "שימוש בסידור אנכי"
6266
63#: ../lernid/EventManager.py:9667#: ../lernid/EventManager.py:96
64msgid "Connecting to event"68msgid "Connecting to event"
65msgstr ""69msgstr "בהתחברות לאירוע"
6670
67#: ../lernid/EventManager.py:10471#: ../lernid/EventManager.py:104
68msgid "Your nickname is now identified"72msgid "Your nickname is now identified"
69msgstr ""73msgstr "הכינוי שלך מזוהה כעת"
7074
71#: ../lernid/EventManager.py:13975#: ../lernid/EventManager.py:139
72msgid "Disconnecting from event"76msgid "Disconnecting from event"
73msgstr ""77msgstr "בניתוק מאירוע"
7478
75#: ../lernid/widgets/Slide.py:10979#: ../lernid/widgets/Slide.py:109
76msgid "An error was encountered while trying to load slide number {0}"80msgid "An error was encountered while trying to load slide number {0}"
77msgstr ""81msgstr "אירעה שגיאה במהלך הניסיון לטעינת שקופית מספר {0}"
7882
79#: ../lernid/widgets/Slide.py:14883#: ../lernid/widgets/Slide.py:148
80#, python-format84#, python-format
81msgid "Downloading session slides ({0} % of {1:.1} MB)..."85msgid "Downloading session slides ({0} % of {1:.1} MB)..."
82msgstr ""86msgstr "שקופיות המפגש מתקבלות ({0} % oמתוך {1:.1} מ״ב)..."
8387
84#: ../lernid/widgets/Slide.py:15188#: ../lernid/widgets/Slide.py:151
85msgid "Slides have been downloaded"89msgid "Slides have been downloaded"
86msgstr ""90msgstr "הורדת השקופיות הושלמה"
8791
88#: ../lernid/widgets/Slide.py:15692#: ../lernid/widgets/Slide.py:156
89msgid "An error was encountered while downloading slides"93msgid "An error was encountered while downloading slides"
90msgstr ""94msgstr "אירעה שגיאה במהלך הורדת השקופיות"
9195
92#: ../lernid/widgets/Slide.py:16896#: ../lernid/widgets/Slide.py:168
93msgid "This session does not use slides"97msgid "This session does not use slides"
94msgstr ""98msgstr "מפגש זה אינו דורש שימוש בשקופיות"
9599
96#: ../data/ui/LernidWindow.ui.h:1100#: ../data/ui/LernidWindow.ui.h:1
97msgid "Classroom"101msgid "Classroom"
@@ -99,11 +103,11 @@
99103
100#: ../data/ui/LernidWindow.ui.h:2104#: ../data/ui/LernidWindow.ui.h:2
101msgid "Enter the address you would like to open in the browser:"105msgid "Enter the address you would like to open in the browser:"
102msgstr ""106msgstr "נא להזין את הכתובת אותה ברצונך לפתוח בדפדפן:"
103107
104#: ../data/ui/LernidWindow.ui.h:3108#: ../data/ui/LernidWindow.ui.h:3
105msgid "Eve_nt"109msgid "Eve_nt"
106msgstr ""110msgstr "_אירוע"
107111
108#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130112#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130
109#: ../lernid.desktop.in.h:1113#: ../lernid.desktop.in.h:1
@@ -112,19 +116,19 @@
112116
113#: ../data/ui/LernidWindow.ui.h:5117#: ../data/ui/LernidWindow.ui.h:5
114msgid "Open _URL..."118msgid "Open _URL..."
115msgstr ""119msgstr "פתיחת _כתובת...."
116120
117#: ../data/ui/LernidWindow.ui.h:6121#: ../data/ui/LernidWindow.ui.h:6
118msgid "Tweet current session"122msgid "Tweet current session"
119msgstr ""123msgstr "ציוץ המפגש הנוכחי"
120124
121#: ../data/ui/LernidWindow.ui.h:7125#: ../data/ui/LernidWindow.ui.h:7
122msgid "_Chatroom"126msgid "_Chatroom"
123msgstr ""127msgstr "_חדר צ׳אט"
124128
125#: ../data/ui/LernidWindow.ui.h:8129#: ../data/ui/LernidWindow.ui.h:8
126msgid "_Edit"130msgid "_Edit"
127msgstr "_ערוך"131msgstr "ע_ריכה"
128132
129#: ../data/ui/LernidWindow.ui.h:9133#: ../data/ui/LernidWindow.ui.h:9
130msgid "_Fullscreen"134msgid "_Fullscreen"
@@ -148,25 +152,25 @@
148152
149#: ../bin/lernid.py:208153#: ../bin/lernid.py:208
150msgid "Sche_dule"154msgid "Sche_dule"
151msgstr ""155msgstr "לוח _זמנים"
152156
153#: ../bin/lernid.py:215157#: ../bin/lernid.py:215
154msgid "_Terminal"158msgid "_Terminal"
155msgstr "_מסוף"159msgstr "מ_סוף"
156160
157#: ../bin/lernid.py:226161#: ../bin/lernid.py:226
158msgid "({0} user)"162msgid "({0} user)"
159msgid_plural "({0} users)"163msgid_plural "({0} users)"
160msgstr[0] ""164msgstr[0] "(משתמש {0})"
161msgstr[1] ""165msgstr[1] "({0} משתמשים)"
162166
163#: ../bin/lernid.py:290167#: ../bin/lernid.py:290
164msgid "_Show Lernid"168msgid "_Show Lernid"
165msgstr ""169msgstr "ה_צגת Lernid"
166170
167#: ../bin/lernid.py:333171#: ../bin/lernid.py:333
168msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."172msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."
169msgstr ""173msgstr "השיעור \"{0}\" החל בערוץ ‎#ubuntu-classroom בשרת freenode."
170174
171#: ../bin/lernid.py:424175#: ../bin/lernid.py:424
172msgid "Show debug messages"176msgid "Show debug messages"
@@ -174,15 +178,15 @@
174178
175#: ../bin/lernid.py:426179#: ../bin/lernid.py:426
176msgid "Override classroom channel"180msgid "Override classroom channel"
177msgstr ""181msgstr "עקיפת ערוץ הכיתה"
178182
179#: ../bin/lernid.py:428183#: ../bin/lernid.py:428
180msgid "Filename or URL to Lernid config file"184msgid "Filename or URL to Lernid config file"
181msgstr ""185msgstr "שם הקובץ או הכתובת לקובץ ההגדרות של Lernid"
182186
183#: ../bin/lernid.py:430187#: ../bin/lernid.py:430
184msgid "Use web chat widget instead of the native one"188msgid "Use web chat widget instead of the native one"
185msgstr ""189msgstr "שימוש בחלונית צ׳אט במקום במובנה"
186190
187#: ../lernid/widgets/Schedule.py:80191#: ../lernid/widgets/Schedule.py:80
188msgid "Date"192msgid "Date"
@@ -202,27 +206,27 @@
202206
203#: ../lernid/widgets/Schedule.py:163207#: ../lernid/widgets/Schedule.py:163
204msgid "Session started"208msgid "Session started"
205msgstr ""209msgstr "המפגש החל"
206210
207#: ../lernid/widgets/Schedule.py:164211#: ../lernid/widgets/Schedule.py:164
208msgid "The session \"{0}\" has started."212msgid "The session \"{0}\" has started."
209msgstr ""213msgstr "המפגש \"{0}\" החל"
210214
211#: ../lernid/widgets/Schedule.py:173215#: ../lernid/widgets/Schedule.py:173
212msgid "Session upcoming"216msgid "Session upcoming"
213msgstr ""217msgstr "מפגשים בהמשך"
214218
215#: ../lernid/widgets/Schedule.py:174219#: ../lernid/widgets/Schedule.py:174
216msgid "The session \"{0}\" will begin in 10 minutes."220msgid "The session \"{0}\" will begin in 10 minutes."
217msgstr ""221msgstr "המפגש \"{0}\" יתחיל בעוד 10 דקות."
218222
219#: ../data/ui/BrowserWidget.ui.h:1223#: ../data/ui/BrowserWidget.ui.h:1
220msgid "Stop browser from changing page"224msgid "Stop browser from changing page"
221msgstr ""225msgstr "מניעת אפשרות העברת העמוד מהדפדפן"
222226
223#: ../lernid/widgets/Classroom.py:78227#: ../lernid/widgets/Classroom.py:78
224msgid "Joined classroom"228msgid "Joined classroom"
225msgstr ""229msgstr "הצטרפת למפגש"
226230
227#: ../data/ui/ConnectDialog.ui.h:1231#: ../data/ui/ConnectDialog.ui.h:1
228msgid "Advanced options"232msgid "Advanced options"
@@ -230,15 +234,15 @@
230234
231#: ../data/ui/ConnectDialog.ui.h:2235#: ../data/ui/ConnectDialog.ui.h:2
232msgid "Choose an event"236msgid "Choose an event"
233msgstr "בחרו אירוע"237msgstr "נא לבחור באירוע"
234238
235#: ../data/ui/ConnectDialog.ui.h:3239#: ../data/ui/ConnectDialog.ui.h:3
236msgid "Event:"240msgid "Event:"
237msgstr ""241msgstr "אירוע:"
238242
239#: ../data/ui/ConnectDialog.ui.h:4243#: ../data/ui/ConnectDialog.ui.h:4
240msgid "NickServ password:"244msgid "NickServ password:"
241msgstr ""245msgstr "ססמת ה־NickServ:"
242246
243#: ../data/ui/ConnectDialog.ui.h:5247#: ../data/ui/ConnectDialog.ui.h:5
244msgid "Nickname:"248msgid "Nickname:"
@@ -246,42 +250,42 @@
246250
247#: ../lernid.desktop.in.h:2251#: ../lernid.desktop.in.h:2
248msgid "Participate in online learning events"252msgid "Participate in online learning events"
249msgstr ""253msgstr "השתתפות באירועי למידה מקוונים"
250254
251#. Translators: Local date representation255#. Translators: Local date representation
252#: ../lernid/Sessions.py:50256#: ../lernid/Sessions.py:50
253msgid "%d %B %Y"257msgid "%d %B %Y"
254msgstr "%d %B %Y"258msgstr "%d ב%B %Y"
255259
256#: ../lernid/ConnectDialog.py:111260#: ../lernid/ConnectDialog.py:111
257msgid "Nick can not be blank"261msgid "Nick can not be blank"
258msgstr "הכינוי לא יכול להשאר ריק"262msgstr "כינוי לא יכול להישאר ריק"
259263
260#: ../lernid/ConnectDialog.py:115264#: ../lernid/ConnectDialog.py:115
261#, python-format265#, python-format
262msgid "Nick can not begin with: %s"266msgid "Nick can not begin with: %s"
263msgstr "הכינוי לא יכול להתחיל עם: %s"267msgstr "כינוי לא יכול להתחיל ב־: %s"
264268
265#: ../lernid/ConnectDialog.py:119269#: ../lernid/ConnectDialog.py:119
266msgid "Nick can not contain blank spaces."270msgid "Nick can not contain blank spaces."
267msgstr "הכינוי לא יכול להכיל רווחים."271msgstr "כינוי לא יכול להכיל רווחים."
268272
269#: ../lernid/ConnectDialog.py:119273#: ../lernid/ConnectDialog.py:119
270#, python-format274#, python-format
271msgid "Nick can not contain: %s"275msgid "Nick can not contain: %s"
272msgstr "הכינוי לא יכול להכיל: %s"276msgstr "כינוי לא יכול להכיל: %s"
273277
274#: ../lernid/ConnectDialog.py:122278#: ../lernid/ConnectDialog.py:122
275msgid "Nick can only contain English alphabet characters"279msgid "Nick can only contain English alphabet characters"
276msgstr ""280msgstr "כינוי יכול להכיל אותיות לטיניות (באנגלית) בלבד"
277281
278#: ../lernid/lernidconfig.py:33282#: ../lernid/lernidconfig.py:33
279msgid "Connect to a world of online tutorials quickly and easily."283msgid "Connect to a world of online tutorials quickly and easily."
280msgstr "התחברו לעולם של מדריכים מקוונים בקלות ובמהירות."284msgstr "התחברות לעולם של מדריכים מקוונים בקלות ובמהירות."
281285
282#: ../lernid/widgets/NativeChatroom.py:164286#: ../lernid/widgets/NativeChatroom.py:164
283msgid "IRC commands are not yet supported."287msgid "IRC commands are not yet supported."
284msgstr ""288msgstr "פקודות IRC עדיין לא נתמכות."
285289
286#~ msgid "Not Connected."290#~ msgid "Not Connected."
287#~ msgstr "לא מחובר"291#~ msgstr "לא מחובר"
@@ -304,6 +308,18 @@
304#~ msgid "David Planella <david.planella@ubuntu.com>"308#~ msgid "David Planella <david.planella@ubuntu.com>"
305#~ msgstr "David Planella <david.planella@ubuntu.com>"309#~ msgstr "David Planella <david.planella@ubuntu.com>"
306310
311#~ msgid "<b>Resources</b>"
312#~ msgstr "<b>מקורות</b>"
313
314#~ msgid "<b>Classroom</b>"
315#~ msgstr "<b>כיתה</b>"
316
317#~ msgid "<b>Chatroom</b>"
318#~ msgstr "<b>חדר שיחה</b>"
319
320#~ msgid "<b>Schedule</b>"
321#~ msgstr "<b>לוח זמנים</b>"
322
307#~ msgid "Event"323#~ msgid "Event"
308#~ msgstr "אירוע"324#~ msgstr "אירוע"
309325
310326
=== modified file 'po/hr.po'
--- po/hr.po 2010-08-03 03:57:01 +0000
+++ po/hr.po 2012-05-07 00:49:19 +0000
@@ -8,21 +8,22 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2010-08-02 15:52+0000\n"11"PO-Revision-Date: 2012-04-06 19:24+0000\n"
12"Last-Translator: nafterburner <nafterburner@gmail.com>\n"12"Last-Translator: gogo <trebelnik2@gmail.com>\n"
13"Language-Team: Croatian <hr@li.org>\n"13"Language-Team: Croatian <hr@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "17"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"18"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19"X-Launchpad-Export-Date: 2010-08-03 03:56+0000\n"19"X-Launchpad-Export-Date: 2012-04-07 05:00+0000\n"
20"X-Generator: Launchpad (build Unknown)\n"20"X-Generator: Launchpad (build 15060)\n"
2121
22#: ../data/ui/AboutLernidDialog.ui.h:122#: ../data/ui/AboutLernidDialog.ui.h:1
23msgid "translator-credits"23msgid "translator-credits"
24msgstr ""24msgstr ""
25"Launchpad Contributions:\n"25"Launchpad Contributions:\n"
26" gogo https://launchpad.net/~trebelnik-stefina\n"
26" nafterburner https://launchpad.net/~nafterburner"27" nafterburner https://launchpad.net/~nafterburner"
2728
28#: ../data/ui/PasswordDialog.ui.h:129#: ../data/ui/PasswordDialog.ui.h:1
@@ -170,7 +171,7 @@
170171
171#: ../bin/lernid.py:424172#: ../bin/lernid.py:424
172msgid "Show debug messages"173msgid "Show debug messages"
173msgstr "Prikaži debug poruke"174msgstr "Prikaži poruke otklanjanja greške"
174175
175#: ../bin/lernid.py:426176#: ../bin/lernid.py:426
176msgid "Override classroom channel"177msgid "Override classroom channel"
@@ -282,60 +283,3 @@
282#: ../lernid/widgets/NativeChatroom.py:164283#: ../lernid/widgets/NativeChatroom.py:164
283msgid "IRC commands are not yet supported."284msgid "IRC commands are not yet supported."
284msgstr "IRC naredbe još uvijek nisu podržane."285msgstr "IRC naredbe još uvijek nisu podržane."
285
286#~ msgid "Chatroom"
287#~ msgstr "Chatroom"
288
289#~ msgid "Session"
290#~ msgstr "Sesija"
291
292#~ msgid "Browser"
293#~ msgstr "Preglednik"
294
295#~ msgid "Nickname"
296#~ msgstr "Nadimak"
297
298#~ msgid "_Event"
299#~ msgstr "_Događaj"
300
301#~ msgid "Event"
302#~ msgstr "Događaj"
303
304#~ msgid "Connected to "
305#~ msgstr "Priključen na "
306
307#~ msgid "Disconnecting from "
308#~ msgstr "Prekidanje veze s "
309
310#~ msgid "Not Connected."
311#~ msgstr "Nije Povezan."
312
313#~ msgid "' session is starting..."
314#~ msgstr "' sesija započinje..."
315
316#~ msgid ""
317#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
318#~ "This program is free software: you can redistribute it and/or modify it "
319#~ "under the terms of the GNU General Public License version 3, as published by "
320#~ "the Free Software Foundation.\n"
321#~ "\n"
322#~ "This program is distributed in the hope that it will be useful, but WITHOUT "
323#~ "ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
324#~ "SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
325#~ "General Public License for more details.\n"
326#~ "\n"
327#~ "You should have received a copy of the GNU General Public License along "
328#~ "with this program. If not, see <http://www.gnu.org/licenses/>."
329#~ msgstr ""
330#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
331#~ "Ovaj program je slobodan softver: možete ga redistribuirati i/ili "
332#~ "modificirati pod uvjetima GNU General Public License version 3(Opće Javne "
333#~ "Licence verzije 3) kao što je objavio Free Software Foundation.\n"
334#~ "\n"
335#~ "Ovaj program se distribuira u nadi da će biti koristan, ali BEZ BILO KOJE "
336#~ "GARANCIJE; čak i bez impliciranih jamstava PRODAJE, ZADOVOLJAVAJUĆE "
337#~ "KVALITETE ILI PRIKLADNOSTI ZA ODREĐENU NAMJENU. Pogledajte GNU General "
338#~ "Public License (Sveopću Narodnu Dozvolu) za više detalja.\n"
339#~ "\n"
340#~ "Trebali biste dobiti primjerak GNU (Sveopće Narodne Dozvole) zajedno sa ovim "
341#~ "programom. Ako ne, pogledajte <http://www.gnu.org/licenses/>."
342286
=== modified file 'po/it.po'
--- po/it.po 2010-08-18 07:07:31 +0000
+++ po/it.po 2012-05-07 00:49:19 +0000
@@ -8,15 +8,15 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2010-08-17 08:08+0000\n"11"PO-Revision-Date: 2011-10-06 20:30+0000\n"
12"Last-Translator: Paolo Sammicheli <paolo@sammicheli.net>\n"12"Last-Translator: Milo Casagrande <milo@casagrande.name>\n"
13"Language-Team: Italian <it@li.org>\n"13"Language-Team: Italian <it@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2010-08-18 07:07+0000\n"18"X-Launchpad-Export-Date: 2011-10-07 04:42+0000\n"
19"X-Generator: Launchpad (build Unknown)\n"19"X-Generator: Launchpad (build 14085)\n"
2020
21#: ../data/ui/AboutLernidDialog.ui.h:121#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"22msgid "translator-credits"
@@ -26,9 +26,9 @@
26" Giampaolo Bozzali https://launchpad.net/~g.bozzali\n"26" Giampaolo Bozzali https://launchpad.net/~g.bozzali\n"
27" Milo Casagrande https://launchpad.net/~milo\n"27" Milo Casagrande https://launchpad.net/~milo\n"
28" Paolo Sammicheli https://launchpad.net/~xdatap1\n"28" Paolo Sammicheli https://launchpad.net/~xdatap1\n"
29" Riccardo Angelino https://launchpad.net/~rikyinformation\n"29" Riccardo Angelino https://launchpad.net/~riccardoangelino\n"
30" fullo https://launchpad.net/~ffullone\n"30" William Bottini https://launchpad.net/~karminio\n"
31" giorgio130 https://launchpad.net/~gm89"31" fullo https://launchpad.net/~ffullone"
3232
33#: ../data/ui/PasswordDialog.ui.h:133#: ../data/ui/PasswordDialog.ui.h:1
34msgid "Invalid password"34msgid "Invalid password"
@@ -284,90 +284,8 @@
284284
285#: ../lernid/lernidconfig.py:33285#: ../lernid/lernidconfig.py:33
286msgid "Connect to a world of online tutorials quickly and easily."286msgid "Connect to a world of online tutorials quickly and easily."
287msgstr "Connette ad un mondo di lezioni in linea velocemente e facilmente."287msgstr "Connette velocemente e facilmente a un mondo di lezioni in linea."
288288
289#: ../lernid/widgets/NativeChatroom.py:164289#: ../lernid/widgets/NativeChatroom.py:164
290msgid "IRC commands are not yet supported."290msgid "IRC commands are not yet supported."
291msgstr "Comandi IRC non sono ancora supportati."291msgstr "Comandi IRC non sono ancora supportati."
292
293#~ msgid "Not Connected."
294#~ msgstr "Non connesso."
295
296#~ msgid "_Event"
297#~ msgstr "_Evento"
298
299#~ msgid "Lernid application"
300#~ msgstr "Applicazione Lernid"
301
302#~ msgid "Event"
303#~ msgstr "Evento"
304
305#~ msgid "Nickname"
306#~ msgstr "Soprannome"
307
308#~ msgid ""
309#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
310#~ "This program is free software: you can redistribute it and/or modify it "
311#~ "under the terms of the GNU General Public License version 3, as published by "
312#~ "the Free Software Foundation.\n"
313#~ "\n"
314#~ "This program is distributed in the hope that it will be useful, but WITHOUT "
315#~ "ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
316#~ "SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
317#~ "General Public License for more details.\n"
318#~ "\n"
319#~ "You should have received a copy of the GNU General Public License along "
320#~ "with this program. If not, see <http://www.gnu.org/licenses/>."
321#~ msgstr ""
322#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
323#~ "Questo programma è Software Libero: potete distribuirlo e modificarlo sotto "
324#~ "i termini della GNU General Public License versione 3, come pubblicato dalla "
325#~ "Free Software Foundation.\n"
326#~ "\n"
327#~ "Questo programma è distribuito nella speranza che possa essere utile, ma "
328#~ "SENZA NESSUNA GARANZIA, anche senza la garanzia implicita di VENDIBILITÀ, "
329#~ "QUALITÀ SODDISFACENTE, o di ADEGUATEZZA AD UN QUALSIASI USO. Per ulteriori "
330#~ "dettagli consultare la GNU General Public License.\n"
331#~ "\n"
332#~ "La traduzione di questa nota è soltanto a titolo esplicativo e non ha valore "
333#~ "legale. Consultate l'originale in Inglese all'indirizzo "
334#~ "<http://www.gnu.org/licenses/>."
335
336#~ msgid "Chat Room"
337#~ msgstr "Stanza"
338
339#~ msgid "Connected to "
340#~ msgstr "Connesso a "
341
342#~ msgid "Disconnecting from "
343#~ msgstr "Disconnessione da "
344
345#~ msgid "Schedule"
346#~ msgstr "Pianificazione"
347
348#~ msgid "Browser"
349#~ msgstr "Browser web"
350
351#~ msgid "David Planella <david.planella@ubuntu.com>"
352#~ msgstr "Paolo Sammicheli <xdatap1@ubuntu.com>"
353
354#~ msgid "Participate in online Ubuntu learning events"
355#~ msgstr "Partecipa agli eventi di apprendimento online di Ubuntu"
356
357#~ msgid "Chatroom"
358#~ msgstr "Area di discussione"
359
360#~ msgid "Session"
361#~ msgstr "Sessione"
362
363#~ msgid "' session is starting..."
364#~ msgstr "sessione in avvio..."
365
366#~ msgid "_Hide Lernid"
367#~ msgstr "_Nascondi Lernid"
368
369#~ msgid "Even_t"
370#~ msgstr "Even_to"
371
372#~ msgid "Downloading session slides..."
373#~ msgstr "Recupero delle diapositive della sessione..."
374292
=== modified file 'po/lernid.pot'
--- po/lernid.pot 2010-08-02 14:13:24 +0000
+++ po/lernid.pot 2012-05-07 00:49:19 +0000
@@ -8,10 +8,11 @@
8msgstr ""8msgstr ""
9"Project-Id-Version: PACKAGE VERSION\n"9"Project-Id-Version: PACKAGE VERSION\n"
10"Report-Msgid-Bugs-To: \n"10"Report-Msgid-Bugs-To: \n"
11"POT-Creation-Date: 2010-08-02 16:11+0200\n"11"POT-Creation-Date: 2012-05-06 20:44-0400\n"
12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"12"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"13"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14"Language-Team: LANGUAGE <LL@li.org>\n"14"Language-Team: LANGUAGE <LL@li.org>\n"
15"Language: \n"
15"MIME-Version: 1.0\n"16"MIME-Version: 1.0\n"
16"Content-Type: text/plain; charset=CHARSET\n"17"Content-Type: text/plain; charset=CHARSET\n"
17"Content-Transfer-Encoding: 8bit\n"18"Content-Transfer-Encoding: 8bit\n"
@@ -31,19 +32,29 @@
31"Please enter the correct password:"32"Please enter the correct password:"
32msgstr ""33msgstr ""
3334
35#. TRANSLATORS: Future versions will need translations of this word as plugins to match the locale of the target classroom session. The word will prefix questions asked in the chatroom of the instructor
36#: ../data/ui/ChatWidget.ui.h:1 ../lernid/widgets/NativeChatroom.py:90
37msgid "QUESTION:"
38msgstr ""
39
40#: ../data/ui/ChatWidget.ui.h:2
41msgid ""
42"\"QUESTION:\" directs your question to the classroom for an answer from the "
43"instructor"
44msgstr ""
45
34#. Translators: Local time representation46#. Translators: Local time representation
35#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:5547#: ../lernid/widgets/IrcWidget.py:68 ../lernid/Sessions.py:81
36#: ../lernid/Sessions.py:6048#: ../lernid/Sessions.py:86
37msgid "%H:%M"49msgid "%H:%M"
38msgstr ""50msgstr ""
3951
40#: ../data/ui/PreferencesLernidDialog.ui.h:152#: ../data/ui/PreferencesLernidDialog.ui.h:1
41msgid ""53msgid "Show an icon in the notification area"
42"<i>You need to restart Lernid for some of the changes to take effect.</i>"
43msgstr ""54msgstr ""
4455
45#: ../data/ui/PreferencesLernidDialog.ui.h:256#: ../data/ui/PreferencesLernidDialog.ui.h:2
46msgid "Show an icon in the notification area"57msgid "Use vertical layout"
47msgstr ""58msgstr ""
4859
49#: ../data/ui/PreferencesLernidDialog.ui.h:360#: ../data/ui/PreferencesLernidDialog.ui.h:3
@@ -51,77 +62,95 @@
51msgstr ""62msgstr ""
5263
53#: ../data/ui/PreferencesLernidDialog.ui.h:464#: ../data/ui/PreferencesLernidDialog.ui.h:4
54msgid "Use vertical layout"65msgid "Open presentation links in default browser"
55msgstr ""66msgstr ""
5667
57#: ../lernid/EventManager.py:9668#: ../data/ui/PreferencesLernidDialog.ui.h:5
69msgid ""
70"<i>You need to restart Lernid for some of the changes to take effect.</i>"
71msgstr ""
72
73#: ../lernid/EventManager.py:90
74msgid "Cannot retrieve configuration"
75msgstr ""
76
77#: ../lernid/EventManager.py:188
58msgid "Connecting to event"78msgid "Connecting to event"
59msgstr ""79msgstr ""
6080
61#: ../lernid/EventManager.py:10481#: ../lernid/EventManager.py:196
62msgid "Your nickname is now identified"82msgid "Your nickname is now identified"
63msgstr ""83msgstr ""
6484
65#: ../lernid/EventManager.py:13985#: ../lernid/EventManager.py:239
66msgid "Disconnecting from event"86msgid "Disconnecting from event"
67msgstr ""87msgstr ""
6888
69#: ../lernid/widgets/Slide.py:10989#: ../lernid/widgets/Slide.py:83
90msgid "Click to Open in External Browser"
91msgstr ""
92
93#: ../lernid/widgets/Slide.py:86
94msgid ""
95"Click to open the slides in your browser. From there you can browse, "
96"bookmark, or save them."
97msgstr ""
98
99#: ../lernid/widgets/Slide.py:165
70msgid "An error was encountered while trying to load slide number {0}"100msgid "An error was encountered while trying to load slide number {0}"
71msgstr ""101msgstr ""
72102
73#: ../lernid/widgets/Slide.py:148103#: ../lernid/widgets/Slide.py:230
74#, python-format104#, python-format
75msgid "Downloading session slides ({0} % of {1:.1} MB)..."105msgid "Downloading session slides (%i%% of %i KB)..."
76msgstr ""106msgstr ""
77107
78#: ../lernid/widgets/Slide.py:151108#: ../lernid/widgets/Slide.py:238 ../lernid/widgets/Slide.py:264
109msgid "An error was encountered while downloading slides"
110msgstr ""
111
112#: ../lernid/widgets/Slide.py:251
79msgid "Slides have been downloaded"113msgid "Slides have been downloaded"
80msgstr ""114msgstr ""
81115
82#: ../lernid/widgets/Slide.py:156116#: ../lernid/widgets/Slide.py:284
83msgid "An error was encountered while downloading slides"
84msgstr ""
85
86#: ../lernid/widgets/Slide.py:168
87msgid "This session does not use slides"117msgid "This session does not use slides"
88msgstr ""118msgstr ""
89119
90#: ../data/ui/LernidWindow.ui.h:1120#: ../data/ui/LernidWindow.ui.h:1
91msgid "Classroom"121msgid "<b>Classroom</b>"
92msgstr ""122msgstr ""
93123
94#: ../data/ui/LernidWindow.ui.h:2124#: ../data/ui/LernidWindow.ui.h:2
95msgid "Enter the address you would like to open in the browser:"125msgid "<b>_Chatroom</b>"
96msgstr ""126msgstr ""
97127
98#: ../data/ui/LernidWindow.ui.h:3128#: ../data/ui/LernidWindow.ui.h:3
99msgid "Eve_nt"129msgid "Eve_nt"
100msgstr ""130msgstr ""
101131
102#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130132#: ../data/ui/LernidWindow.ui.h:4
103#: ../lernid.desktop.in.h:1133msgid "Open _URL in Lernid..."
104msgid "Lernid"
105msgstr ""134msgstr ""
106135
107#: ../data/ui/LernidWindow.ui.h:5136#: ../data/ui/LernidWindow.ui.h:5
108msgid "Open _URL..."137msgid "Tweet current session"
109msgstr ""138msgstr ""
110139
111#: ../data/ui/LernidWindow.ui.h:6140#: ../data/ui/LernidWindow.ui.h:6
112msgid "Tweet current session"141msgid "_Edit"
113msgstr ""142msgstr ""
114143
115#: ../data/ui/LernidWindow.ui.h:7144#: ../data/ui/LernidWindow.ui.h:7
116msgid "_Chatroom"145msgid "_View"
117msgstr ""146msgstr ""
118147
119#: ../data/ui/LernidWindow.ui.h:8148#: ../data/ui/LernidWindow.ui.h:8
120msgid "_Edit"149msgid "_Fullscreen"
121msgstr ""150msgstr ""
122151
123#: ../data/ui/LernidWindow.ui.h:9152#: ../data/ui/LernidWindow.ui.h:9
124msgid "_Fullscreen"153msgid "_Statusbar"
125msgstr ""154msgstr ""
126155
127#: ../data/ui/LernidWindow.ui.h:10156#: ../data/ui/LernidWindow.ui.h:10
@@ -129,105 +158,187 @@
129msgstr ""158msgstr ""
130159
131#: ../data/ui/LernidWindow.ui.h:11160#: ../data/ui/LernidWindow.ui.h:11
132msgid "_Statusbar"161msgid "Enter the address you would like to open in the browser:"
133msgstr ""162msgstr ""
134163
135#: ../data/ui/LernidWindow.ui.h:12164#: ../lernid/IrcBackend.py:345
136msgid "_View"165#, python-format
137msgstr ""166msgid "Nick assigned by server: %s"
138167msgstr ""
139#: ../bin/lernid.py:141 ../bin/lernid.py:144 ../bin/lernid.py:199168
169#: ../bin/lernid.py:148 ../bin/lernid.py:152 ../bin/lernid.py:263
140msgid "_Session"170msgid "_Session"
141msgstr ""171msgstr ""
142172
143#: ../bin/lernid.py:208173#: ../bin/lernid.py:149
174msgid "Select the Session tab to see classroom learning material"
175msgstr ""
176
177#: ../bin/lernid.py:160
178msgid "Event Connection Interrupted"
179msgstr ""
180
181#: ../bin/lernid.py:160
182msgid ""
183"Please reestablish your Internet connection\n"
184"and reconnect to the event"
185msgstr ""
186
187#: ../bin/lernid.py:165
188msgid ""
189"Event Connection Interrupted -- Please reestablish your Internet connection "
190"and reconnect to the event"
191msgstr ""
192
193#: ../bin/lernid.py:223
194msgid "You can interact with classes held in the classroom"
195msgstr ""
196
197#: ../bin/lernid.py:226
198#, python-format
199msgid ""
200"Add \"%s\" to the beginning of your query to direct it to the classroom "
201"instructor."
202msgstr ""
203
204#: ../bin/lernid.py:272
144msgid "Sche_dule"205msgid "Sche_dule"
145msgstr ""206msgstr ""
146207
147#: ../bin/lernid.py:215208#: ../bin/lernid.py:279
148msgid "_Terminal"209msgid "_Terminal"
149msgstr ""210msgstr ""
150211
151#: ../bin/lernid.py:226212#: ../bin/lernid.py:290
152msgid "({0} user)"213msgid "({0} user)"
153msgid_plural "({0} users)"214msgid_plural "({0} users)"
154msgstr[0] ""215msgstr[0] ""
155msgstr[1] ""216msgstr[1] ""
156217
157#: ../bin/lernid.py:290218#: ../bin/lernid.py:313 ../bin/lernid.py:317
219msgid "Classroom"
220msgstr ""
221
222#. TRANSLATORS: The underscore marks this as a mnemonic accelerator
223#: ../bin/lernid.py:315 ../bin/lernid.py:318
224msgid "_Chatroom"
225msgstr ""
226
227#: ../bin/lernid.py:374
158msgid "_Show Lernid"228msgid "_Show Lernid"
159msgstr ""229msgstr ""
160230
161#: ../bin/lernid.py:333231#: ../bin/lernid.py:417
162msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."232msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."
163msgstr ""233msgstr ""
164234
165#: ../bin/lernid.py:424235#: ../bin/lernid.py:508
166msgid "Show debug messages"236msgid "Show debug messages"
167msgstr ""237msgstr ""
168238
169#: ../bin/lernid.py:426239#: ../bin/lernid.py:509
240msgid "Show debug and classroom management messages"
241msgstr ""
242
243#: ../bin/lernid.py:511
170msgid "Override classroom channel"244msgid "Override classroom channel"
171msgstr ""245msgstr ""
172246
173#: ../bin/lernid.py:428247#: ../bin/lernid.py:513
248msgid "Override chatroom channel"
249msgstr ""
250
251#: ../bin/lernid.py:515
174msgid "Filename or URL to Lernid config file"252msgid "Filename or URL to Lernid config file"
175msgstr ""253msgstr ""
176254
177#: ../bin/lernid.py:430255#: ../bin/lernid.py:517
256msgid "Don't automatically reload the schedule"
257msgstr ""
258
259#: ../bin/lernid.py:519
178msgid "Use web chat widget instead of the native one"260msgid "Use web chat widget instead of the native one"
179msgstr ""261msgstr ""
180262
181#: ../lernid/widgets/Schedule.py:80263#: ../bin/lernid.py:521
264msgid "Unsafe testing option"
265msgstr ""
266
267#: ../bin/lernid.py:523
268msgid "Unused debugging option to avoid desktopcouch"
269msgstr ""
270
271#: ../bin/lernid.py:526
272msgid "Override calendar location"
273msgstr ""
274
275#: ../lernid/widgets/Schedule.py:115
182msgid "Date"276msgid "Date"
183msgstr ""277msgstr ""
184278
185#: ../lernid/widgets/Schedule.py:88279#: ../lernid/widgets/Schedule.py:123
186msgid "Starts"280msgid "Starts"
187msgstr ""281msgstr ""
188282
189#: ../lernid/widgets/Schedule.py:96283#: ../lernid/widgets/Schedule.py:131
190msgid "Ends"284msgid "Ends"
191msgstr ""285msgstr ""
192286
193#: ../lernid/widgets/Schedule.py:104 ../lernid/widgets/Schedule.py:109287#: ../lernid/widgets/Schedule.py:139 ../lernid/widgets/Schedule.py:144
194msgid "Title"288msgid "Title"
195msgstr ""289msgstr ""
196290
197#: ../lernid/widgets/Schedule.py:163291#: ../lernid/widgets/Schedule.py:282
292#, python-format
293msgid "<u>Irc Logs for UTC %s </u><i>(Starting at %s local time)</i>"
294msgstr ""
295
296#: ../lernid/widgets/Schedule.py:364
297msgid "Please keep the Session tab selected to see session learning materials."
298msgstr ""
299
300#: ../lernid/widgets/Schedule.py:368
198msgid "Session started"301msgid "Session started"
199msgstr ""302msgstr ""
200303
201#: ../lernid/widgets/Schedule.py:164304#: ../lernid/widgets/Schedule.py:369
202msgid "The session \"{0}\" has started."305msgid "The session \"{0}\" has started. "
203msgstr ""306msgstr ""
204307
205#: ../lernid/widgets/Schedule.py:173308#: ../lernid/widgets/Schedule.py:381
206msgid "Session upcoming"309msgid "Session upcoming"
207msgstr ""310msgstr ""
208311
209#: ../lernid/widgets/Schedule.py:174312#: ../lernid/widgets/Schedule.py:382
210msgid "The session \"{0}\" will begin in 10 minutes."313msgid "The session \"{0}\" will begin in 10 minutes."
211msgstr ""314msgstr ""
212315
316#: ../lernid/widgets/Schedule.py:424
317msgid "Copy Calendar ICAL URL to Clipboard"
318msgstr ""
319
320#: ../lernid/widgets/Schedule.py:425
321msgid "Open Calendar ICAL URL Using Your Browser"
322msgstr ""
323
213#: ../data/ui/BrowserWidget.ui.h:1324#: ../data/ui/BrowserWidget.ui.h:1
214msgid "Stop browser from changing page"325msgid "Stop browser from changing page"
215msgstr ""326msgstr ""
216327
217#: ../lernid/widgets/Classroom.py:78328#: ../lernid/widgets/Classroom.py:83
218msgid "Joined classroom"329msgid "Joined classroom"
219msgstr ""330msgstr ""
220331
221#: ../data/ui/ConnectDialog.ui.h:1332#: ../data/ui/ConnectDialog.ui.h:1
222msgid "Advanced options"333msgid "Choose an event"
223msgstr ""334msgstr ""
224335
225#: ../data/ui/ConnectDialog.ui.h:2336#: ../data/ui/ConnectDialog.ui.h:2
226msgid "Choose an event"337msgid "Event:"
227msgstr ""338msgstr ""
228339
229#: ../data/ui/ConnectDialog.ui.h:3340#: ../data/ui/ConnectDialog.ui.h:3
230msgid "Event:"341msgid "Nickname:"
231msgstr ""342msgstr ""
232343
233#: ../data/ui/ConnectDialog.ui.h:4344#: ../data/ui/ConnectDialog.ui.h:4
@@ -235,7 +346,15 @@
235msgstr ""346msgstr ""
236347
237#: ../data/ui/ConnectDialog.ui.h:5348#: ../data/ui/ConnectDialog.ui.h:5
238msgid "Nickname:"349msgid "Advanced options"
350msgstr ""
351
352#: ../data/ui/ConnectDialog.ui.h:6
353msgid "Connecting to the classroom may take up to one minute"
354msgstr ""
355
356#: ../lernid.desktop.in.h:1
357msgid "Lernid"
239msgstr ""358msgstr ""
240359
241#: ../lernid.desktop.in.h:2360#: ../lernid.desktop.in.h:2
@@ -243,36 +362,58 @@
243msgstr ""362msgstr ""
244363
245#. Translators: Local date representation364#. Translators: Local date representation
246#: ../lernid/Sessions.py:50365#: ../lernid/Sessions.py:76
247msgid "%d %B %Y"366msgid "%d %B %Y"
248msgstr ""367msgstr ""
249368
250#: ../lernid/ConnectDialog.py:111369#: ../lernid/Sessions.py:127
370#, python-format
371msgid "Unable to load calendar %s\n"
372msgstr ""
373
374#: ../lernid/Sessions.py:171
375#, python-format
376msgid "Unable to parse calendar %s\n"
377msgstr ""
378
379#: ../lernid/Sessions.py:203
380msgid "Missing Session Name"
381msgstr ""
382
383#: ../lernid/ConnectDialog.py:119
251msgid "Nick can not be blank"384msgid "Nick can not be blank"
252msgstr ""385msgstr ""
253386
254#: ../lernid/ConnectDialog.py:115387#: ../lernid/ConnectDialog.py:123
255#, python-format388#, python-format
256msgid "Nick can not begin with: %s"389msgid "Nick can not begin with: %s"
257msgstr ""390msgstr ""
258391
259#: ../lernid/ConnectDialog.py:119392#: ../lernid/ConnectDialog.py:127
260msgid "Nick can not contain blank spaces."393msgid "Nick can not contain blank spaces."
261msgstr ""394msgstr ""
262395
263#: ../lernid/ConnectDialog.py:119396#: ../lernid/ConnectDialog.py:127
264#, python-format397#, python-format
265msgid "Nick can not contain: %s"398msgid "Nick can not contain: %s"
266msgstr ""399msgstr ""
267400
268#: ../lernid/ConnectDialog.py:122401#: ../lernid/ConnectDialog.py:130
269msgid "Nick can only contain English alphabet characters"402msgid "Nick can only contain English alphabet characters"
270msgstr ""403msgstr ""
271404
272#: ../lernid/lernidconfig.py:33405#: ../lernid/lernidconfig.py:35
273msgid "Connect to a world of online tutorials quickly and easily."406msgid "Connect to a world of online tutorials quickly and easily."
274msgstr ""407msgstr ""
275408
276#: ../lernid/widgets/NativeChatroom.py:164409#. TRANSLATORS: %s will be a token from the locale of the target classroom session rather than the student's locale
410#: ../lernid/widgets/NativeChatroom.py:94
411#, python-format
412msgid ""
413"\"%s\" directs your question to the classroom for an answer from the "
414"instructor"
415msgstr ""
416
417#: ../lernid/widgets/NativeChatroom.py:182
277msgid "IRC commands are not yet supported."418msgid "IRC commands are not yet supported."
278msgstr ""419msgstr ""
279420
=== modified file 'po/ms.po'
--- po/ms.po 2009-12-12 04:46:46 +0000
+++ po/ms.po 2012-05-07 00:49:19 +0000
@@ -7,105 +7,278 @@
7msgstr ""7msgstr ""
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2009-12-10 08:57-0800\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2009-12-11 06:43+0000\n"11"PO-Revision-Date: 2011-08-06 02:59+0000\n"
12"Last-Translator: Launchpad Translations Administrators "12"Last-Translator: abuyop <Unknown>\n"
13"<rosetta@launchpad.net>\n"
14"Language-Team: Malay <ms@li.org>\n"13"Language-Team: Malay <ms@li.org>\n"
15"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
16"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
18"X-Launchpad-Export-Date: 2009-12-12 04:46+0000\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
19"X-Generator: Launchpad (build Unknown)\n"18"X-Launchpad-Export-Date: 2011-08-07 04:39+0000\n"
19"X-Generator: Launchpad (build 13613)\n"
20
21#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"
23msgstr ""
24"Launchpad Contributions:\n"
25" abuyop https://launchpad.net/~abuyop"
26
27#: ../data/ui/PasswordDialog.ui.h:1
28msgid "Invalid password"
29msgstr "Kata laluan tidak sah"
30
31#: ../data/ui/PasswordDialog.ui.h:2
32msgid ""
33"The NickServ password you entered was invalid.\n"
34"Please enter the correct password:"
35msgstr ""
36"Kata laluan NickServ yang anda masukkan tidak sah.\n"
37"Sila masukkan kata laluan yang betul:"
38
39#. Translators: Local time representation
40#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:55
41#: ../lernid/Sessions.py:60
42msgid "%H:%M"
43msgstr "%H:%M"
44
45#: ../data/ui/PreferencesLernidDialog.ui.h:1
46msgid ""
47"<i>You need to restart Lernid for some of the changes to take effect.</i>"
48msgstr ""
49"<i>Anda perlu mulakan semula Lernid supaya beberapa perubahan berkesan.<i>"
50
51#: ../data/ui/PreferencesLernidDialog.ui.h:2
52msgid "Show an icon in the notification area"
53msgstr "Papar ikon didalam ruang pemberitahuan"
54
55#: ../data/ui/PreferencesLernidDialog.ui.h:3
56msgid "Show time in classroom and chatroom"
57msgstr "Papar masa didalam kelas dan bilik sembang"
58
59#: ../data/ui/PreferencesLernidDialog.ui.h:4
60msgid "Use vertical layout"
61msgstr "Guna bentangan menegak"
62
63#: ../lernid/EventManager.py:96
64msgid "Connecting to event"
65msgstr "Menyambung ke acara"
66
67#: ../lernid/EventManager.py:104
68msgid "Your nickname is now identified"
69msgstr "Gelaran anda kini dikenalpasti"
70
71#: ../lernid/EventManager.py:139
72msgid "Disconnecting from event"
73msgstr "Putuskan dari acara"
74
75#: ../lernid/widgets/Slide.py:109
76msgid "An error was encountered while trying to load slide number {0}"
77msgstr "Ralat berlaku semasa cuba memuatkan slaid bernombor {0}"
78
79#: ../lernid/widgets/Slide.py:148
80#, python-format
81msgid "Downloading session slides ({0} % of {1:.1} MB)..."
82msgstr "Memuat turun sesi slaid ({0} % dari {1:.1} MB)..."
83
84#: ../lernid/widgets/Slide.py:151
85msgid "Slides have been downloaded"
86msgstr "Slaid telah dimuat turun"
87
88#: ../lernid/widgets/Slide.py:156
89msgid "An error was encountered while downloading slides"
90msgstr "Ralat berlaku semasa memuat turun slaid"
91
92#: ../lernid/widgets/Slide.py:168
93msgid "This session does not use slides"
94msgstr "Sesi ini tidak menggunakan slaid"
2095
21#: ../data/ui/LernidWindow.ui.h:196#: ../data/ui/LernidWindow.ui.h:1
22msgid "Browser"97msgid "Classroom"
23msgstr ""98msgstr "Kelas"
2499
25#: ../data/ui/LernidWindow.ui.h:2100#: ../data/ui/LernidWindow.ui.h:2
26msgid "Chatroom"101msgid "Enter the address you would like to open in the browser:"
27msgstr ""102msgstr "Masukkan alamat yang anda ingin buka didalam pelayar:"
28103
29#: ../data/ui/LernidWindow.ui.h:3104#: ../data/ui/LernidWindow.ui.h:3
30msgid "Classroom"105msgid "Eve_nt"
31msgstr ""106msgstr "A_cara"
32107
33#: ../data/ui/LernidWindow.ui.h:4 ../lernid.desktop.in.h:1108#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130
109#: ../lernid.desktop.in.h:1
34msgid "Lernid"110msgid "Lernid"
35msgstr "Lernid"111msgstr "Lernid"
36112
37#: ../data/ui/LernidWindow.ui.h:5113#: ../data/ui/LernidWindow.ui.h:5
38msgid "Not Connected."114msgid "Open _URL..."
39msgstr "Tiada Sambungan"115msgstr "Buka _URL..."
40116
41#: ../data/ui/LernidWindow.ui.h:6117#: ../data/ui/LernidWindow.ui.h:6
42msgid "Schedule"118msgid "Tweet current session"
43msgstr ""119msgstr "Tweet sesi semasa"
44120
45#: ../data/ui/LernidWindow.ui.h:7121#: ../data/ui/LernidWindow.ui.h:7
46msgid "_Event"122msgid "_Chatroom"
47msgstr "_Event"123msgstr "_Bilik Sembang"
48124
49#: ../data/ui/LernidWindow.ui.h:8125#: ../data/ui/LernidWindow.ui.h:8
126msgid "_Edit"
127msgstr "_Sunting"
128
129#: ../data/ui/LernidWindow.ui.h:9
130msgid "_Fullscreen"
131msgstr "_Skrin Penuh"
132
133#: ../data/ui/LernidWindow.ui.h:10
50msgid "_Help"134msgid "_Help"
51msgstr "_Bantuan"135msgstr "_Bantuan"
52136
53#: ../data/ui/AboutLernidDialog.ui.h:1137#: ../data/ui/LernidWindow.ui.h:11
54msgid "Connect to a world of online tutorials quickly and easily."138msgid "_Statusbar"
55msgstr ""139msgstr "Palang _Status"
56140
57#: ../data/ui/AboutLernidDialog.ui.h:2141#: ../data/ui/LernidWindow.ui.h:12
58msgid ""142msgid "_View"
59"Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"143msgstr "_Lihat"
60"This program is free software: you can redistribute it and/or modify it "144
61"under the terms of the GNU General Public License version 3, as published by "145#: ../bin/lernid.py:141 ../bin/lernid.py:144 ../bin/lernid.py:199
62"the Free Software Foundation.\n"146msgid "_Session"
63"\n"147msgstr "_Sesi"
64"This program is distributed in the hope that it will be useful, but WITHOUT "148
65"ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "149#: ../bin/lernid.py:208
66"SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "150msgid "Sche_dule"
67"General Public License for more details.\n"151msgstr "Ja_dual"
68"\n"152
69"You should have received a copy of the GNU General Public License along "153#: ../bin/lernid.py:215
70"with this program. If not, see <http://www.gnu.org/licenses/>."154msgid "_Terminal"
71msgstr ""155msgstr "_Terminal"
72156
73#: ../data/ui/AboutLernidDialog.ui.h:8157#: ../bin/lernid.py:226
74msgid "translator-credits"158msgid "({0} user)"
75msgstr ""159msgid_plural "({0} users)"
76"Launchpad Contributions:\n"160msgstr[0] "({0} pengguna)"
77" Khairul Aizat Kamarudzzaman https://launchpad.net/~fenris"161msgstr[1] "({0} pengguna)"
78162
79#: ../lernid.desktop.in.h:2163#: ../bin/lernid.py:290
80msgid "Lernid application"164msgid "_Show Lernid"
81msgstr ""165msgstr "_Papar Lernid"
166
167#: ../bin/lernid.py:333
168msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."
169msgstr "Sesi \"{0}\" telah dimulakan dalam #ubuntu-classroom di freenode."
170
171#: ../bin/lernid.py:424
172msgid "Show debug messages"
173msgstr "Papar mesej nyahpepijat"
174
175#: ../bin/lernid.py:426
176msgid "Override classroom channel"
177msgstr "Batalkan saluran kelas"
178
179#: ../bin/lernid.py:428
180msgid "Filename or URL to Lernid config file"
181msgstr "Nama fail atau URL ke fail konfig Lernid"
182
183#: ../bin/lernid.py:430
184msgid "Use web chat widget instead of the native one"
185msgstr "Guna widget sembang sesawang selain dari yang ada"
186
187#: ../lernid/widgets/Schedule.py:80
188msgid "Date"
189msgstr "Tarikh"
190
191#: ../lernid/widgets/Schedule.py:88
192msgid "Starts"
193msgstr "Mula"
194
195#: ../lernid/widgets/Schedule.py:96
196msgid "Ends"
197msgstr "Tamat"
198
199#: ../lernid/widgets/Schedule.py:104 ../lernid/widgets/Schedule.py:109
200msgid "Title"
201msgstr "Tajuk"
202
203#: ../lernid/widgets/Schedule.py:163
204msgid "Session started"
205msgstr "Sesi bermula"
206
207#: ../lernid/widgets/Schedule.py:164
208msgid "The session \"{0}\" has started."
209msgstr "Sesi \"{0}\" telah bermula."
210
211#: ../lernid/widgets/Schedule.py:173
212msgid "Session upcoming"
213msgstr "Sesi akan datang"
214
215#: ../lernid/widgets/Schedule.py:174
216msgid "The session \"{0}\" will begin in 10 minutes."
217msgstr "Sesi \"{0}\" akan dimulakan dalam tempoh 10 minit."
218
219#: ../data/ui/BrowserWidget.ui.h:1
220msgid "Stop browser from changing page"
221msgstr "Henti pelayar dari mengubah halaman"
222
223#: ../lernid/widgets/Classroom.py:78
224msgid "Joined classroom"
225msgstr "Sertai kelas"
82226
83#: ../data/ui/ConnectDialog.ui.h:1227#: ../data/ui/ConnectDialog.ui.h:1
228msgid "Advanced options"
229msgstr "Pilihan lanjutan"
230
231#: ../data/ui/ConnectDialog.ui.h:2
84msgid "Choose an event"232msgid "Choose an event"
85msgstr "Pilih Acara"233msgstr "Pilih Acara"
86234
87#: ../data/ui/ConnectDialog.ui.h:2
88msgid "Event"
89msgstr "Acara"
90
91#: ../data/ui/ConnectDialog.ui.h:3235#: ../data/ui/ConnectDialog.ui.h:3
92msgid "Nickname"236msgid "Event:"
93msgstr "Nama Panggilan"237msgstr "Acara:"
94238
95#: ../bin/lernid.py:295 ../bin/lernid.py:296239#: ../data/ui/ConnectDialog.ui.h:4
96msgid "Connected to "240msgid "NickServ password:"
97msgstr ""241msgstr "Kata laluan NickServ"
98242
99#: ../bin/lernid.py:325243#: ../data/ui/ConnectDialog.ui.h:5
100msgid "Disconnecting from "244msgid "Nickname:"
101msgstr ""245msgstr "Gelaran:"
102246
103#: ../bin/lernid.py:416247#: ../lernid.desktop.in.h:2
104msgid "Show debug messages"248msgid "Participate in online learning events"
105msgstr ""249msgstr "Sertai acara pembelajaran atas-talian"
106250
107#~ msgid "gtk-cancel"251#. Translators: Local date representation
108#~ msgstr "gtk-batal"252#: ../lernid/Sessions.py:50
109253msgid "%d %B %Y"
110#~ msgid "gtk-ok"254msgstr "%d %B %Y"
111#~ msgstr "gtk-ok"255
256#: ../lernid/ConnectDialog.py:111
257msgid "Nick can not be blank"
258msgstr "Gelaran tidak boleh kosong"
259
260#: ../lernid/ConnectDialog.py:115
261#, python-format
262msgid "Nick can not begin with: %s"
263msgstr "Gelaran tidak boleh dimulakan dengan: %s"
264
265#: ../lernid/ConnectDialog.py:119
266msgid "Nick can not contain blank spaces."
267msgstr "Gelaran tidak boleh mengandungi ruang kosong."
268
269#: ../lernid/ConnectDialog.py:119
270#, python-format
271msgid "Nick can not contain: %s"
272msgstr "Gelaran tidak boleh mengandungi: %s"
273
274#: ../lernid/ConnectDialog.py:122
275msgid "Nick can only contain English alphabet characters"
276msgstr "Gelaran hanya boleh mengandungi aksara abjad Inggeris"
277
278#: ../lernid/lernidconfig.py:33
279msgid "Connect to a world of online tutorials quickly and easily."
280msgstr "Sambung ke dunia tutorial atas-talian yang pantas dan mudah."
281
282#: ../lernid/widgets/NativeChatroom.py:164
283msgid "IRC commands are not yet supported."
284msgstr "Perintah IRC belum lagi disokong."
112285
=== modified file 'po/nb.po'
--- po/nb.po 2011-05-01 05:07:06 +0000
+++ po/nb.po 2012-05-07 00:49:19 +0000
@@ -8,15 +8,15 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2011-04-30 18:21+0000\n"11"PO-Revision-Date: 2011-06-04 12:27+0000\n"
12"Last-Translator: Hans Joachim Desserud <Unknown>\n"12"Last-Translator: John S. Gruber <JohnSGruber@gmail.com>\n"
13"Language-Team: Norwegian Bokmal <nb@li.org>\n"13"Language-Team: Norwegian Bokmal <nb@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2011-05-01 05:07+0000\n"18"X-Launchpad-Export-Date: 2011-06-05 04:50+0000\n"
19"X-Generator: Launchpad (build 12758)\n"19"X-Generator: Launchpad (build 12959)\n"
2020
21#: ../data/ui/AboutLernidDialog.ui.h:121#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"22msgid "translator-credits"
@@ -24,6 +24,7 @@
24"Launchpad Contributions:\n"24"Launchpad Contributions:\n"
25" Fredrik Fallang https://launchpad.net/~fredrik-fallang\n"25" Fredrik Fallang https://launchpad.net/~fredrik-fallang\n"
26" Hans Joachim Desserud https://launchpad.net/~hjd\n"26" Hans Joachim Desserud https://launchpad.net/~hjd\n"
27" John S. Gruber https://launchpad.net/~jsjgruber\n"
27" Lars Åge Kamfjord https://launchpad.net/~laaknor\n"28" Lars Åge Kamfjord https://launchpad.net/~laaknor\n"
28" Michael Budde https://launchpad.net/~mbudde"29" Michael Budde https://launchpad.net/~mbudde"
2930
3031
=== modified file 'po/nl.po'
--- po/nl.po 2010-10-08 04:47:59 +0000
+++ po/nl.po 2012-05-07 00:49:19 +0000
@@ -8,15 +8,15 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2010-10-05 20:12+0000\n"11"PO-Revision-Date: 2011-06-04 12:29+0000\n"
12"Last-Translator: Sense Hofstede <u@sensehofstede.nl>\n"12"Last-Translator: Sense Hofstede <u@sensehofstede.nl>\n"
13"Language-Team: Dutch <nl@li.org>\n"13"Language-Team: Dutch <nl@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2010-10-08 04:47+0000\n"18"X-Launchpad-Export-Date: 2011-06-05 04:50+0000\n"
19"X-Generator: Launchpad (build Unknown)\n"19"X-Generator: Launchpad (build 12959)\n"
2020
21#: ../data/ui/AboutLernidDialog.ui.h:121#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"22msgid "translator-credits"
2323
=== added file 'po/oc.po'
--- po/oc.po 1970-01-01 00:00:00 +0000
+++ po/oc.po 2012-05-07 00:49:19 +0000
@@ -0,0 +1,284 @@
1# Occitan (post 1500) translation for lernid
2# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
3# This file is distributed under the same license as the lernid package.
4# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
5#
6msgid ""
7msgstr ""
8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2011-10-16 16:31+0000\n"
12"Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary@yahoo.fr>\n"
13"Language-Team: Occitan (post 1500) <oc@li.org>\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18"X-Launchpad-Export-Date: 2011-10-17 04:51+0000\n"
19"X-Generator: Launchpad (build 14155)\n"
20
21#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"
23msgstr ""
24"Launchpad Contributions:\n"
25" Cédric VALMARY (Tot en òc) https://launchpad.net/~cvalmary"
26
27#: ../data/ui/PasswordDialog.ui.h:1
28msgid "Invalid password"
29msgstr "Senhal invalid"
30
31#: ../data/ui/PasswordDialog.ui.h:2
32msgid ""
33"The NickServ password you entered was invalid.\n"
34"Please enter the correct password:"
35msgstr ""
36"Lo senhal NickServ qu'avètz picat es invalid.\n"
37"Picatz lo bon senhal :"
38
39#. Translators: Local time representation
40#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:55
41#: ../lernid/Sessions.py:60
42msgid "%H:%M"
43msgstr "%H:%M"
44
45#: ../data/ui/PreferencesLernidDialog.ui.h:1
46msgid ""
47"<i>You need to restart Lernid for some of the changes to take effect.</i>"
48msgstr ""
49"<i>Vos cal reaviar Lernid per que d'unes cambiaments prengan efièch.</i>"
50
51#: ../data/ui/PreferencesLernidDialog.ui.h:2
52msgid "Show an icon in the notification area"
53msgstr "Afichar una icòna dins la zòna de notificacion"
54
55#: ../data/ui/PreferencesLernidDialog.ui.h:3
56msgid "Show time in classroom and chatroom"
57msgstr "Afichar l'ora dins la sala de classa e de discussion"
58
59#: ../data/ui/PreferencesLernidDialog.ui.h:4
60msgid "Use vertical layout"
61msgstr "Utilizar la mesa en pagina verticala"
62
63#: ../lernid/EventManager.py:96
64msgid "Connecting to event"
65msgstr "Connexion a l'eveniment"
66
67#: ../lernid/EventManager.py:104
68msgid "Your nickname is now identified"
69msgstr "Vòstre escais es ara identificat"
70
71#: ../lernid/EventManager.py:139
72msgid "Disconnecting from event"
73msgstr "Desconnexion de l'eveniment"
74
75#: ../lernid/widgets/Slide.py:109
76msgid "An error was encountered while trying to load slide number {0}"
77msgstr ""
78
79#: ../lernid/widgets/Slide.py:148
80#, python-format
81msgid "Downloading session slides ({0} % of {1:.1} MB)..."
82msgstr ""
83
84#: ../lernid/widgets/Slide.py:151
85msgid "Slides have been downloaded"
86msgstr "Las diapositivas son estadas telecargadas"
87
88#: ../lernid/widgets/Slide.py:156
89msgid "An error was encountered while downloading slides"
90msgstr ""
91
92#: ../lernid/widgets/Slide.py:168
93msgid "This session does not use slides"
94msgstr ""
95
96#: ../data/ui/LernidWindow.ui.h:1
97msgid "Classroom"
98msgstr "Sala de classa"
99
100#: ../data/ui/LernidWindow.ui.h:2
101msgid "Enter the address you would like to open in the browser:"
102msgstr ""
103
104#: ../data/ui/LernidWindow.ui.h:3
105msgid "Eve_nt"
106msgstr "Eve_niment"
107
108#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130
109#: ../lernid.desktop.in.h:1
110msgid "Lernid"
111msgstr "Lernid"
112
113#: ../data/ui/LernidWindow.ui.h:5
114msgid "Open _URL..."
115msgstr "Dobrir l'_URL..."
116
117#: ../data/ui/LernidWindow.ui.h:6
118msgid "Tweet current session"
119msgstr "Tweetar la sesilha correnta"
120
121#: ../data/ui/LernidWindow.ui.h:7
122msgid "_Chatroom"
123msgstr "Salon de _chat"
124
125#: ../data/ui/LernidWindow.ui.h:8
126msgid "_Edit"
127msgstr "_Editar"
128
129#: ../data/ui/LernidWindow.ui.h:9
130msgid "_Fullscreen"
131msgstr "Ecran _complet"
132
133#: ../data/ui/LernidWindow.ui.h:10
134msgid "_Help"
135msgstr "_Ajuda"
136
137#: ../data/ui/LernidWindow.ui.h:11
138msgid "_Statusbar"
139msgstr "Barra d'e_stat"
140
141#: ../data/ui/LernidWindow.ui.h:12
142msgid "_View"
143msgstr "_Afichatge"
144
145#: ../bin/lernid.py:141 ../bin/lernid.py:144 ../bin/lernid.py:199
146msgid "_Session"
147msgstr "_Sesilha"
148
149#: ../bin/lernid.py:208
150msgid "Sche_dule"
151msgstr "Emplec _del temps"
152
153#: ../bin/lernid.py:215
154msgid "_Terminal"
155msgstr "_Terminal"
156
157#: ../bin/lernid.py:226
158msgid "({0} user)"
159msgid_plural "({0} users)"
160msgstr[0] "({0} utilizaire)"
161msgstr[1] "({0} utilizaires)"
162
163#: ../bin/lernid.py:290
164msgid "_Show Lernid"
165msgstr "Afichar Lernid"
166
167#: ../bin/lernid.py:333
168msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."
169msgstr "La sesilha « {0} » a començat dins #ubuntu-classroom sus freenode."
170
171#: ../bin/lernid.py:424
172msgid "Show debug messages"
173msgstr "Afichar los messatges de desbugatge"
174
175#: ../bin/lernid.py:426
176msgid "Override classroom channel"
177msgstr "Otrapassar lo canal IRC de la sala de classa"
178
179#: ../bin/lernid.py:428
180msgid "Filename or URL to Lernid config file"
181msgstr "Nom o URL del fichièr de configuracion de Lernid"
182
183#: ../bin/lernid.py:430
184msgid "Use web chat widget instead of the native one"
185msgstr "Utilizar lo widget de chat web al luòc del client natiu"
186
187#: ../lernid/widgets/Schedule.py:80
188msgid "Date"
189msgstr "Data"
190
191#: ../lernid/widgets/Schedule.py:88
192msgid "Starts"
193msgstr "Comença"
194
195#: ../lernid/widgets/Schedule.py:96
196msgid "Ends"
197msgstr "S'acaba lo"
198
199#: ../lernid/widgets/Schedule.py:104 ../lernid/widgets/Schedule.py:109
200msgid "Title"
201msgstr "Títol"
202
203#: ../lernid/widgets/Schedule.py:163
204msgid "Session started"
205msgstr "Sesilha aviada"
206
207#: ../lernid/widgets/Schedule.py:164
208msgid "The session \"{0}\" has started."
209msgstr "La sesilha \"{0}\" a comencat."
210
211#: ../lernid/widgets/Schedule.py:173
212msgid "Session upcoming"
213msgstr "Sesilha venenta"
214
215#: ../lernid/widgets/Schedule.py:174
216msgid "The session \"{0}\" will begin in 10 minutes."
217msgstr "La sesilha \"{0}\" començarà dins 10 minutas."
218
219#: ../data/ui/BrowserWidget.ui.h:1
220msgid "Stop browser from changing page"
221msgstr "Empachar lo navigador de cambiar de pagina"
222
223#: ../lernid/widgets/Classroom.py:78
224msgid "Joined classroom"
225msgstr "Avètz rejunt la sala de classa"
226
227#: ../data/ui/ConnectDialog.ui.h:1
228msgid "Advanced options"
229msgstr "Opcions avançadas"
230
231#: ../data/ui/ConnectDialog.ui.h:2
232msgid "Choose an event"
233msgstr "Causir un eveniment"
234
235#: ../data/ui/ConnectDialog.ui.h:3
236msgid "Event:"
237msgstr "Eveniment :"
238
239#: ../data/ui/ConnectDialog.ui.h:4
240msgid "NickServ password:"
241msgstr "Senhal NickServ :"
242
243#: ../data/ui/ConnectDialog.ui.h:5
244msgid "Nickname:"
245msgstr "Escais :"
246
247#: ../lernid.desktop.in.h:2
248msgid "Participate in online learning events"
249msgstr "Prene part a d'eveniments de formacion en linha"
250
251#. Translators: Local date representation
252#: ../lernid/Sessions.py:50
253msgid "%d %B %Y"
254msgstr "%d %B %Y"
255
256#: ../lernid/ConnectDialog.py:111
257msgid "Nick can not be blank"
258msgstr "L'escais pòt pas èsser void"
259
260#: ../lernid/ConnectDialog.py:115
261#, python-format
262msgid "Nick can not begin with: %s"
263msgstr ""
264
265#: ../lernid/ConnectDialog.py:119
266msgid "Nick can not contain blank spaces."
267msgstr ""
268
269#: ../lernid/ConnectDialog.py:119
270#, python-format
271msgid "Nick can not contain: %s"
272msgstr ""
273
274#: ../lernid/ConnectDialog.py:122
275msgid "Nick can only contain English alphabet characters"
276msgstr ""
277
278#: ../lernid/lernidconfig.py:33
279msgid "Connect to a world of online tutorials quickly and easily."
280msgstr ""
281
282#: ../lernid/widgets/NativeChatroom.py:164
283msgid "IRC commands are not yet supported."
284msgstr ""
0285
=== modified file 'po/pt_BR.po'
--- po/pt_BR.po 2010-08-03 03:57:01 +0000
+++ po/pt_BR.po 2012-05-07 00:49:19 +0000
@@ -8,15 +8,15 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2010-08-02 16:39+0000\n"11"PO-Revision-Date: 2011-06-29 18:22+0000\n"
12"Last-Translator: Daniel Tiecher <morubidu.angeru@gmail.com>\n"12"Last-Translator: André Gondim <Unknown>\n"
13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"13"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n > 1;\n"17"Plural-Forms: nplurals=2; plural=n > 1;\n"
18"X-Launchpad-Export-Date: 2010-08-03 03:57+0000\n"18"X-Launchpad-Export-Date: 2011-06-30 04:47+0000\n"
19"X-Generator: Launchpad (build Unknown)\n"19"X-Generator: Launchpad (build 13168)\n"
2020
21#: ../data/ui/AboutLernidDialog.ui.h:121#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"22msgid "translator-credits"
@@ -84,7 +84,7 @@
84#: ../lernid/widgets/Slide.py:14884#: ../lernid/widgets/Slide.py:148
85#, python-format85#, python-format
86msgid "Downloading session slides ({0} % of {1:.1} MB)..."86msgid "Downloading session slides ({0} % of {1:.1} MB)..."
87msgstr ""87msgstr "Baixando apresetação da sessão ({0} % de {1:.1} MB)..."
8888
89#: ../lernid/widgets/Slide.py:15189#: ../lernid/widgets/Slide.py:151
90msgid "Slides have been downloaded"90msgid "Slides have been downloaded"
@@ -345,6 +345,18 @@
345#~ msgid "David Planella <david.planella@ubuntu.com>"345#~ msgid "David Planella <david.planella@ubuntu.com>"
346#~ msgstr "David Planella <david.planella@ubuntu.com>"346#~ msgstr "David Planella <david.planella@ubuntu.com>"
347347
348#~ msgid "<b>Resources</b>"
349#~ msgstr "Recursos"
350
351#~ msgid "<b>Classroom</b>"
352#~ msgstr "Sala de aula"
353
354#~ msgid "<b>Chatroom</b>"
355#~ msgstr "Sala de bate-papo"
356
357#~ msgid "<b>Schedule</b>"
358#~ msgstr "Agenda"
359
348#~ msgid "Connected to "360#~ msgid "Connected to "
349#~ msgstr "Conectado a "361#~ msgstr "Conectado a "
350362
351363
=== modified file 'po/sv.po'
--- po/sv.po 2010-08-03 03:57:01 +0000
+++ po/sv.po 2012-05-07 00:49:19 +0000
@@ -8,15 +8,15 @@
8"Project-Id-Version: lernid\n"8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2010-08-02 16:23+0000\n"11"PO-Revision-Date: 2011-07-26 11:20+0000\n"
12"Last-Translator: Daniel Nylander <yeager@ubuntu.com>\n"12"Last-Translator: Daniel Nylander <yeager@ubuntu.com>\n"
13"Language-Team: Swedish <sv@li.org>\n"13"Language-Team: Swedish <sv@li.org>\n"
14"MIME-Version: 1.0\n"14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18"X-Launchpad-Export-Date: 2010-08-03 03:56+0000\n"18"X-Launchpad-Export-Date: 2011-07-27 04:38+0000\n"
19"X-Generator: Launchpad (build Unknown)\n"19"X-Generator: Launchpad (build 13405)\n"
2020
21#: ../data/ui/AboutLernidDialog.ui.h:121#: ../data/ui/AboutLernidDialog.ui.h:1
22msgid "translator-credits"22msgid "translator-credits"
@@ -38,6 +38,8 @@
38"The NickServ password you entered was invalid.\n"38"The NickServ password you entered was invalid.\n"
39"Please enter the correct password:"39"Please enter the correct password:"
40msgstr ""40msgstr ""
41"Lösenordet för NickServ som du angav är ogiltigt.\n"
42"Ange det korrekta lösenordet:"
4143
42#. Translators: Local time representation44#. Translators: Local time representation
43#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:5545#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:55
@@ -64,19 +66,19 @@
6466
65#: ../lernid/EventManager.py:9667#: ../lernid/EventManager.py:96
66msgid "Connecting to event"68msgid "Connecting to event"
67msgstr ""69msgstr "Ansluter till aktivitet"
6870
69#: ../lernid/EventManager.py:10471#: ../lernid/EventManager.py:104
70msgid "Your nickname is now identified"72msgid "Your nickname is now identified"
71msgstr ""73msgstr "Ditt smeknamn är nu identifierat"
7274
73#: ../lernid/EventManager.py:13975#: ../lernid/EventManager.py:139
74msgid "Disconnecting from event"76msgid "Disconnecting from event"
75msgstr ""77msgstr "Kopplar från aktivitet"
7678
77#: ../lernid/widgets/Slide.py:10979#: ../lernid/widgets/Slide.py:109
78msgid "An error was encountered while trying to load slide number {0}"80msgid "An error was encountered while trying to load slide number {0}"
79msgstr ""81msgstr "Ett fel inträffade vid försök att läsa in bild nummer {0}"
8082
81#: ../lernid/widgets/Slide.py:14883#: ../lernid/widgets/Slide.py:148
82#, python-format84#, python-format
@@ -85,15 +87,15 @@
8587
86#: ../lernid/widgets/Slide.py:15188#: ../lernid/widgets/Slide.py:151
87msgid "Slides have been downloaded"89msgid "Slides have been downloaded"
88msgstr ""90msgstr "Bilderna har hämtats"
8991
90#: ../lernid/widgets/Slide.py:15692#: ../lernid/widgets/Slide.py:156
91msgid "An error was encountered while downloading slides"93msgid "An error was encountered while downloading slides"
92msgstr ""94msgstr "Ett fel inträffade vid hämtning av bilder"
9395
94#: ../lernid/widgets/Slide.py:16896#: ../lernid/widgets/Slide.py:168
95msgid "This session does not use slides"97msgid "This session does not use slides"
96msgstr ""98msgstr "Denna session använder inte bilder"
9799
98#: ../data/ui/LernidWindow.ui.h:1100#: ../data/ui/LernidWindow.ui.h:1
99msgid "Classroom"101msgid "Classroom"
@@ -101,11 +103,11 @@
101103
102#: ../data/ui/LernidWindow.ui.h:2104#: ../data/ui/LernidWindow.ui.h:2
103msgid "Enter the address you would like to open in the browser:"105msgid "Enter the address you would like to open in the browser:"
104msgstr ""106msgstr "Skriv adressen som du vill öppna i webbläsaren:"
105107
106#: ../data/ui/LernidWindow.ui.h:3108#: ../data/ui/LernidWindow.ui.h:3
107msgid "Eve_nt"109msgid "Eve_nt"
108msgstr ""110msgstr "Eve_nemang"
109111
110#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130112#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130
111#: ../lernid.desktop.in.h:1113#: ../lernid.desktop.in.h:1
@@ -118,7 +120,7 @@
118120
119#: ../data/ui/LernidWindow.ui.h:6121#: ../data/ui/LernidWindow.ui.h:6
120msgid "Tweet current session"122msgid "Tweet current session"
121msgstr ""123msgstr "Twittra aktuell lektion"
122124
123#: ../data/ui/LernidWindow.ui.h:7125#: ../data/ui/LernidWindow.ui.h:7
124msgid "_Chatroom"126msgid "_Chatroom"
@@ -146,11 +148,11 @@
146148
147#: ../bin/lernid.py:141 ../bin/lernid.py:144 ../bin/lernid.py:199149#: ../bin/lernid.py:141 ../bin/lernid.py:144 ../bin/lernid.py:199
148msgid "_Session"150msgid "_Session"
149msgstr ""151msgstr "_Lektion"
150152
151#: ../bin/lernid.py:208153#: ../bin/lernid.py:208
152msgid "Sche_dule"154msgid "Sche_dule"
153msgstr ""155msgstr "Sche_ma"
154156
155#: ../bin/lernid.py:215157#: ../bin/lernid.py:215
156msgid "_Terminal"158msgid "_Terminal"
@@ -168,7 +170,7 @@
168170
169#: ../bin/lernid.py:333171#: ../bin/lernid.py:333
170msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."172msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."
171msgstr ""173msgstr "Lektionen \"{0}\" har börjat i #ubuntu-classroom på freenode."
172174
173#: ../bin/lernid.py:424175#: ../bin/lernid.py:424
174msgid "Show debug messages"176msgid "Show debug messages"
@@ -176,15 +178,15 @@
176178
177#: ../bin/lernid.py:426179#: ../bin/lernid.py:426
178msgid "Override classroom channel"180msgid "Override classroom channel"
179msgstr ""181msgstr "Åsidosätt klassrummets kanal"
180182
181#: ../bin/lernid.py:428183#: ../bin/lernid.py:428
182msgid "Filename or URL to Lernid config file"184msgid "Filename or URL to Lernid config file"
183msgstr ""185msgstr "Filnamn eller URL till konfigurationsfilen för Lernid"
184186
185#: ../bin/lernid.py:430187#: ../bin/lernid.py:430
186msgid "Use web chat widget instead of the native one"188msgid "Use web chat widget instead of the native one"
187msgstr ""189msgstr "Använd widget för webbchatt istället för den inbyggda"
188190
189#: ../lernid/widgets/Schedule.py:80191#: ../lernid/widgets/Schedule.py:80
190msgid "Date"192msgid "Date"
@@ -204,15 +206,15 @@
204206
205#: ../lernid/widgets/Schedule.py:163207#: ../lernid/widgets/Schedule.py:163
206msgid "Session started"208msgid "Session started"
207msgstr ""209msgstr "Lektionen har börjat"
208210
209#: ../lernid/widgets/Schedule.py:164211#: ../lernid/widgets/Schedule.py:164
210msgid "The session \"{0}\" has started."212msgid "The session \"{0}\" has started."
211msgstr ""213msgstr "Lektionen \"{0}\" har börjat."
212214
213#: ../lernid/widgets/Schedule.py:173215#: ../lernid/widgets/Schedule.py:173
214msgid "Session upcoming"216msgid "Session upcoming"
215msgstr ""217msgstr "Kommande lektion"
216218
217#: ../lernid/widgets/Schedule.py:174219#: ../lernid/widgets/Schedule.py:174
218msgid "The session \"{0}\" will begin in 10 minutes."220msgid "The session \"{0}\" will begin in 10 minutes."
@@ -220,7 +222,7 @@
220222
221#: ../data/ui/BrowserWidget.ui.h:1223#: ../data/ui/BrowserWidget.ui.h:1
222msgid "Stop browser from changing page"224msgid "Stop browser from changing page"
223msgstr ""225msgstr "Stoppa webbläsaren från att byta sida"
224226
225#: ../lernid/widgets/Classroom.py:78227#: ../lernid/widgets/Classroom.py:78
226msgid "Joined classroom"228msgid "Joined classroom"
@@ -232,15 +234,15 @@
232234
233#: ../data/ui/ConnectDialog.ui.h:2235#: ../data/ui/ConnectDialog.ui.h:2
234msgid "Choose an event"236msgid "Choose an event"
235msgstr "Välj en händelse"237msgstr "Välj en aktivitet"
236238
237#: ../data/ui/ConnectDialog.ui.h:3239#: ../data/ui/ConnectDialog.ui.h:3
238msgid "Event:"240msgid "Event:"
239msgstr ""241msgstr "Aktivitet:"
240242
241#: ../data/ui/ConnectDialog.ui.h:4243#: ../data/ui/ConnectDialog.ui.h:4
242msgid "NickServ password:"244msgid "NickServ password:"
243msgstr ""245msgstr "Lösenord för NickServ:"
244246
245#: ../data/ui/ConnectDialog.ui.h:5247#: ../data/ui/ConnectDialog.ui.h:5
246msgid "Nickname:"248msgid "Nickname:"
@@ -284,7 +286,7 @@
284286
285#: ../lernid/widgets/NativeChatroom.py:164287#: ../lernid/widgets/NativeChatroom.py:164
286msgid "IRC commands are not yet supported."288msgid "IRC commands are not yet supported."
287msgstr ""289msgstr "IRC-kommandon stöds ännu inte."
288290
289#~ msgid "Not Connected."291#~ msgid "Not Connected."
290#~ msgstr "Inte ansluten."292#~ msgstr "Inte ansluten."
@@ -341,12 +343,24 @@
341#~ msgid "David Planella <david.planella@ubuntu.com>"343#~ msgid "David Planella <david.planella@ubuntu.com>"
342#~ msgstr "David Planella <david.planella@ubuntu.com>"344#~ msgstr "David Planella <david.planella@ubuntu.com>"
343345
346#~ msgid "<b>Resources</b>"
347#~ msgstr "<b>Resurser</b>"
348
349#~ msgid "<b>Classroom</b>"
350#~ msgstr "<b>klassrum</b>"
351
352#~ msgid "<b>Schedule</b>"
353#~ msgstr "<b>Schema</b>"
354
344#~ msgid "Connected to "355#~ msgid "Connected to "
345#~ msgstr "Ansluten till "356#~ msgstr "Ansluten till "
346357
347#~ msgid "Disconnecting from "358#~ msgid "Disconnecting from "
348#~ msgstr "Kopplar från "359#~ msgstr "Kopplar från "
349360
361#~ msgid "<b>Chatroom</b>"
362#~ msgstr "<b>Chatlokal</b>"
363
350#~ msgid "Lernid application"364#~ msgid "Lernid application"
351#~ msgstr "Lernid-tillämpning"365#~ msgstr "Lernid-tillämpning"
352366
353367
=== added file 'po/tr.po'
--- po/tr.po 1970-01-01 00:00:00 +0000
+++ po/tr.po 2012-05-07 00:49:19 +0000
@@ -0,0 +1,280 @@
1# Turkish translation for lernid
2# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
3# This file is distributed under the same license as the lernid package.
4# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
5#
6msgid ""
7msgstr ""
8"Project-Id-Version: lernid\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2010-08-02 16:11+0200\n"
11"PO-Revision-Date: 2011-09-01 07:54+0000\n"
12"Last-Translator: Launchpad Translations Administrators "
13"<rosetta@launchpad.net>\n"
14"Language-Team: Turkish <tr@li.org>\n"
15"MIME-Version: 1.0\n"
16"Content-Type: text/plain; charset=UTF-8\n"
17"Content-Transfer-Encoding: 8bit\n"
18"Plural-Forms: nplurals=1; plural=0;\n"
19"X-Launchpad-Export-Date: 2011-09-02 04:50+0000\n"
20"X-Generator: Launchpad (build 13830)\n"
21
22#: ../data/ui/AboutLernidDialog.ui.h:1
23msgid "translator-credits"
24msgstr ""
25
26#: ../data/ui/PasswordDialog.ui.h:1
27msgid "Invalid password"
28msgstr ""
29
30#: ../data/ui/PasswordDialog.ui.h:2
31msgid ""
32"The NickServ password you entered was invalid.\n"
33"Please enter the correct password:"
34msgstr ""
35
36#. Translators: Local time representation
37#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:55
38#: ../lernid/Sessions.py:60
39msgid "%H:%M"
40msgstr ""
41
42#: ../data/ui/PreferencesLernidDialog.ui.h:1
43msgid ""
44"<i>You need to restart Lernid for some of the changes to take effect.</i>"
45msgstr ""
46
47#: ../data/ui/PreferencesLernidDialog.ui.h:2
48msgid "Show an icon in the notification area"
49msgstr ""
50
51#: ../data/ui/PreferencesLernidDialog.ui.h:3
52msgid "Show time in classroom and chatroom"
53msgstr ""
54
55#: ../data/ui/PreferencesLernidDialog.ui.h:4
56msgid "Use vertical layout"
57msgstr ""
58
59#: ../lernid/EventManager.py:96
60msgid "Connecting to event"
61msgstr ""
62
63#: ../lernid/EventManager.py:104
64msgid "Your nickname is now identified"
65msgstr ""
66
67#: ../lernid/EventManager.py:139
68msgid "Disconnecting from event"
69msgstr ""
70
71#: ../lernid/widgets/Slide.py:109
72msgid "An error was encountered while trying to load slide number {0}"
73msgstr ""
74
75#: ../lernid/widgets/Slide.py:148
76#, python-format
77msgid "Downloading session slides ({0} % of {1:.1} MB)..."
78msgstr ""
79
80#: ../lernid/widgets/Slide.py:151
81msgid "Slides have been downloaded"
82msgstr ""
83
84#: ../lernid/widgets/Slide.py:156
85msgid "An error was encountered while downloading slides"
86msgstr ""
87
88#: ../lernid/widgets/Slide.py:168
89msgid "This session does not use slides"
90msgstr ""
91
92#: ../data/ui/LernidWindow.ui.h:1
93msgid "Classroom"
94msgstr ""
95
96#: ../data/ui/LernidWindow.ui.h:2
97msgid "Enter the address you would like to open in the browser:"
98msgstr ""
99
100#: ../data/ui/LernidWindow.ui.h:3
101msgid "Eve_nt"
102msgstr ""
103
104#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130
105#: ../lernid.desktop.in.h:1
106msgid "Lernid"
107msgstr ""
108
109#: ../data/ui/LernidWindow.ui.h:5
110msgid "Open _URL..."
111msgstr ""
112
113#: ../data/ui/LernidWindow.ui.h:6
114msgid "Tweet current session"
115msgstr ""
116
117#: ../data/ui/LernidWindow.ui.h:7
118msgid "_Chatroom"
119msgstr ""
120
121#: ../data/ui/LernidWindow.ui.h:8
122msgid "_Edit"
123msgstr ""
124
125#: ../data/ui/LernidWindow.ui.h:9
126msgid "_Fullscreen"
127msgstr ""
128
129#: ../data/ui/LernidWindow.ui.h:10
130msgid "_Help"
131msgstr ""
132
133#: ../data/ui/LernidWindow.ui.h:11
134msgid "_Statusbar"
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches