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
1=== modified file 'bin/lernid'
2--- bin/lernid 2011-08-28 13:38:22 +0000
3+++ bin/lernid 2012-05-07 00:49:19 +0000
4@@ -54,7 +54,7 @@
5 fullPath = os.getcwd()
6 sys.path.insert(0, os.path.dirname(fullPath))
7
8-from lernid.CouchDBPreferences import Preferences
9+from lernid.LernidPreferences import Preferences
10 from lernid.LernidOptions import Options
11 from lernid import AboutLernidDialog, PreferencesLernidDialog
12 from lernid.lernidconfig import get_data_path, save_cache_path
13@@ -137,8 +137,12 @@
14 self.TAB_SESSION = 0
15 self.TAB_SCHEDULE = 1
16 self.TAB_TERMINAL = 2
17+ self.ignore_initial_tab_change = True
18
19 def highlight_session_tab(w, url=None):
20+ if self.ignore_initial_tab_change:
21+ self.ignore_initial_tab_change = False
22+ return
23 if self._tabs.get_current_page() != self.TAB_SESSION:
24 eye_catcher = u"<span color='red'>●</span><span color='yellow'>●</span><span color='blue'>●</span>"
25 self._session_label.set_label(eye_catcher + ' %s' % _('_Session'))
26@@ -159,7 +163,7 @@
27 except:
28 logging.error("Notification failed to show for Interrupted Event Message")
29 Statusbar.push_message(_('Event Connection Interrupted -- '
30- 'Please reestablish your Internet connection and reconnect to the event'))
31+ 'Please reestablish your Internet connection and reconnect to the event'), 'interrupt_message')
32 self.emit('event-disconnect', event)
33
34 self._browser.connect('page-changed', highlight_session_tab)
35@@ -209,6 +213,7 @@
36
37 self._eventman.connect('event-interrupted', event_interrupted)
38 def event_connected(self, event):
39+ Statusbar.pop_message('interrupt_message')
40 glib.timeout_add_seconds( 12, event_message, self)
41 return False
42
43@@ -508,13 +513,17 @@
44 help=_('Override chatroom channel'))
45 Options.add_option('--config', action='store', default=None,
46 help=_('Filename or URL to Lernid config file'))
47+ Options.add_option('--no-update', action='store_true', default=False,
48+ help=_("Don't automatically reload the schedule"))
49 Options.add_option('--web-chat', action='store_true', default=False,
50 help=_('Use web chat widget instead of the native one'))
51 Options.add_option('--unsafe-override', action='store_true', default=False,
52 help=_('Unsafe testing option'))
53 Options.add_option('--avoid-desktopcouch', action='store_true', default=False,
54- help=_('Debugging option to avoid desktopcouch'),
55+ help=_('Unused debugging option to avoid desktopcouch'),
56 dest = 'avoid_desktopcouch')
57+ Options.add_option('--calendar', action='store', default=None,
58+ help=_('Override calendar location'))
59 Options.parse_args()
60
61 # Set the logging level to show debug messages
62
63=== modified file 'debian/changelog'
64--- debian/changelog 2011-09-03 19:34:22 +0000
65+++ debian/changelog 2012-05-07 00:49:19 +0000
66@@ -1,3 +1,215 @@
67+lernid (0.8.4.9) precise; urgency=low
68+
69+ * Disable all plugins through webkit settings so they won't crash
70+ lernid. Future webkit releases may run plugins in a separate
71+ process allowing us to reconsider this eventually.
72+ lernid/widgets/Browser.py . Closes LP: #995695.
73+
74+ -- John S Gruber <JohnSGruber@gmail.com> Sun, 06 May 2012 20:38:42 -0400
75+
76+lernid (0.8.4.8) precise; urgency=low
77+
78+ * Don't add irc logs for future events in lernid/widgets/Schedule.py
79+
80+ -- John S Gruber <JohnSGruber@gmail.com> Thu, 03 May 2012 21:14:55 -0400
81+
82+lernid (0.8.4.7) precise; urgency=low
83+
84+ * Change version number and create new version of .pot files
85+
86+ * Fix scrolling case when there are no sessions in the schedule timeframe.
87+
88+ * Underline Irclog entries to make it apparent that they are clickable.
89+
90+ -- John S Gruber <JohnSGruber@gmail.com> Sat, 28 Apr 2012 00:12:17 -0400
91+
92+lernid (0.8.4.6) precise; urgency=low
93+
94+ * Change version number and create new version of .pot files
95+
96+ * Get rid of slide error message more quickly, and when a new attempt
97+ is made to download slides.
98+
99+ -- John S Gruber <JohnSGruber@gmail.com> Mon, 23 Apr 2012 15:10:53 -0400
100+
101+lernid (0.8.4.5) precise; urgency=low
102+
103+ * Don't release the nick--it causes the server to change previous
104+ signons elsewhere to Guestn.
105+
106+ * Add calendar override option for use in testing.
107+
108+ * Create irclog lines for current and future sessions, too.
109+
110+ * If there are no future sessions, scroll to the bottom of the calendar.
111+
112+ * Add the --no-update command line option to supress lernid's
113+ scheduled schedule updates.
114+
115+ * Scramble the calendar domain name before every calendar download
116+
117+ * At disconnect time, be sure schedule _update handle is removed. Don't
118+ let an initial calendar load ending after an event is disconnected
119+ produce schedule the update chain.
120+
121+ * Ignore callbacks from cancelled messages
122+
123+ * Select time to trigger calendar updates from a list. At :06 after
124+ the hour and half hour. Other times are :01, :11, :21, :31, :41, :51
125+
126+ * Add remarks about the schedule buttons in the lernid man page.
127+
128+ * Clean up some corner cases when events are terminated. Schedule._event
129+ is now None when there is no event active. Rename irclog click callback.
130+
131+ * Remove event interrupted message when the next connection is made.
132+
133+ * When a new slide load attempt is made, stop outstanding I/O and retries.
134+
135+ * Add a schedule refresh button
136+
137+ * Clean up and simplify calendar reload scheduling. Only load it every
138+ ten minutes and once a night to produce a new irclog entry in the
139+ schedule.
140+
141+ * Be sure we don't pre-announce the same session twice in a row.
142+
143+ * Make server disconnections more robust
144+
145+ -- John S Gruber <JohnSGruber@gmail.com> Sun, 22 Apr 2012 20:03:52 -0400
146+
147+lernid (0.8.4.4) precise; urgency=low
148+
149+ * New version number; new .pot file. Clear lintian errors
150+
151+ -- John S Gruber <JohnSGruber@gmail.com> Sun, 15 Apr 2012 22:29:02 -0400
152+
153+lernid (0.8.4.3) precise; urgency=low
154+
155+ * Depend on python version 2.6 as lernid uses the io module
156+
157+ * Don't reparse calendar unless it has changed. Simplify
158+ _calendar_refresh parameters.
159+
160+ * Don't scroll schedule unless we have just connected to an event.`
161+
162+ -- John S Gruber <JohnSGruber@gmail.com> Sun, 15 Apr 2012 20:23:07 -0400
163+
164+lernid (0.8.4.2) precise; urgency=low
165+
166+ * Increment release version by .1. Adjust version number in package.
167+ Make python-support a straight build dependency for now to avoid
168+ bug 594916 in launchpad's builder.
169+
170+ -- John S Gruber <JohnSGruber@gmail.com> Wed, 11 Apr 2012 22:39:02 -0400
171+
172+lernid (0.8.4.1) precise; urgency=low
173+
174+ * Correct problem using non-existent event preferences setting; advance
175+ version by .1
176+
177+ -- John S Gruber <JohnSGruber@gmail.com> Wed, 11 Apr 2012 20:56:03 -0400
178+
179+lernid (0.8.4) precise; urgency=low
180+
181+ * Set up new release
182+
183+ -- John S Gruber <JohnSGruber@gmail.com> Wed, 11 Apr 2012 13:20:03 -0400
184+
185+lernid (0.8.2.7) precise; urgency=low
186+
187+ * Create new translation .pot file
188+
189+ -- John S Gruber <JohnSGruber@gmail.com> Wed, 11 Apr 2012 13:17:05 -0400
190+
191+lernid (0.8.2.6) precise; urgency=low
192+
193+ * Merge translations
194+
195+ -- John S Gruber <JohnSGruber@gmail.com> Wed, 11 Apr 2012 13:10:28 -0400
196+
197+lernid (0.8.2.5) precise; urgency=low
198+
199+ * Use nick from connect dialog when reconnecting
200+
201+ * Make nick used in irc rooms reflect the nick assigned by the server and
202+ display a status message when it is changed
203+
204+ -- John S Gruber <JohnSGruber@gmail.com> Wed, 11 Apr 2012 12:31:11 -0400
205+
206+lernid (0.8.2.4) precise; urgency=low
207+
208+ * Correct message insertion into irc text buffers.
209+
210+ -- John S Gruber <JohnSGruber@gmail.com> Tue, 10 Apr 2012 19:26:25 -0400
211+
212+lernid (0.8.2.3) precise; urgency=low
213+
214+ [ Mohammad AbuShady ]
215+ * Fix traceback when issuing error message for attempt at irc command
216+ (LP: #925702)
217+
218+ * Add clasebot to list of classbot names. (LP: #916629)
219+
220+ * Time out the join message after 10 seconds. (LP: #806801)
221+
222+ [ John S Gruber]
223+ * Time out various additional status messages. Avoid initial "learning
224+ material" message. (LP: #806805)
225+
226+ * Disconnect channel signal handlers, if any, when the server connection
227+ is closed. Prevents messages from being repeated after multiple
228+ disconnects and connects.
229+
230+ * Correct default events (classrooms). Use a temporary file to allow the
231+ configparser to read the default config as a utf-8 encoded string --
232+ matching how it reads all other configs from disk or web.
233+
234+ * Simplify nickname handling somewhat. Use version as fullname in initial
235+ sign-on. (LP: #850419, LP: #838557)
236+
237+ * Remove "Question:" unicode space marking.
238+
239+ * Change copyright format-spec: line to current format: line and
240+ update standards to 3.9.3.1
241+
242+ * Convert to debhelper7 from cdbs
243+
244+ * Use dh_python2 for build if available; use python-support if not
245+ (Removes need for python-central). Thanks to Monty Taylor for
246+ the conditional code. (LP: #801281)
247+
248+ * Remove desktopcouch configuration saving as Ubuntu One doesn't support
249+ it. (LP: #893738, LP: #795492)
250+
251+ * In connect dialog default to last event chosen. (LP: #838505)
252+
253+ * Expose the event icalurl in two ways, to the clipboard, and opened using
254+ the default method for the url. Also replace the slide opening function
255+ with the same gtk.show_uri function, removing the need for webbrowser.
256+ Also eliminate the gtk.viewport, tree views are scrollable so this
257+ is redundant (and I think, should have been a child of the scrolling
258+ window, not its parent, if I read the documentation correctly).
259+ (LP: #530054).
260+
261+ * Slide.py have poppler render to a cairo surface and use a trick to
262+ get that into the pixmap. (LP: #972069)
263+ (Technique from diogodivision's "BlingSwitcher" through
264+ http://www.mikedesjardins.net. Thank you.)
265+
266+ * Dynamically load the schedule each minute at 5 seconds past the minute
267+ Addresses LP: #925756, LP: #835806
268+
269+ * Try to reload slides three times at random intervals
270+
271+ * Add a lernid man page and another to describe classroom config files and
272+ calendar event (session) description fields.
273+
274+ * Insert references to irc logs. New config setting logstring provides
275+ the skeleton uri for the logs. LP: #794124
276+
277+ -- John S Gruber <JohnSGruber@gmail.com> Sat, 07 Apr 2012 19:34:43 -0400
278+
279 lernid (0.8.2.2) natty; urgency=low
280
281 * Ready for release
282
283=== modified file 'debian/control'
284--- debian/control 2011-06-27 23:02:17 +0000
285+++ debian/control 2012-05-07 00:49:19 +0000
286@@ -1,18 +1,17 @@
287 Source: lernid
288 Section: net
289 Priority: extra
290-Build-Depends: cdbs (>= 0.4.43),
291- debhelper (>= 6),
292- python,
293- python-central (>= 0.6.11),
294+Build-Depends:
295+ debhelper (>= 7.0.50~),
296+ python (>= 2.6),
297+ python-support
298 Build-Depends-Indep: python-distutils-extra (>= 2.10)
299 Maintainer: John S Gruber <johnsgruber@gmail.com>
300-Standards-Version: 3.9.1
301-XS-Python-Version: current
302+Standards-Version: 3.9.3.1
303+X-Python-Version: >=2.6
304
305 Package: lernid
306 Architecture: all
307-XB-Python-Version: ${python:Versions}
308 Depends: ${misc:Depends},
309 ${python:Depends},
310 telepathy-idle,
311@@ -20,13 +19,11 @@
312 python-telepathy,
313 python-webkit,
314 python-dbus,
315- python-desktopcouch-records,
316 python-notify,
317 python-gobject,
318 python-vobject,
319 python-gtk2,
320 python-poppler,
321- desktopcouch
322 Recommends:
323 python-vte,
324 python-appindicator
325
326=== modified file 'debian/copyright'
327--- debian/copyright 2011-06-27 15:06:48 +0000
328+++ debian/copyright 2012-05-07 00:49:19 +0000
329@@ -1,12 +1,11 @@
330-Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135
331+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
332 Upstream-Name: lernid
333-Upstream-Maintainer: John S Gruber <johnsgruber@gmail.com>
334 Upstream-Source: https://launchpad.net/lernid
335
336 Files: *
337 Copyright: (C) 2009 <Jono Bacon> <jono@ubuntu.com>
338 Copyright: (C) 2010 Michael Budde <mbudde@gmail.com>
339-Copyright (c) 2011 John S Gruber <johnsgruber@gmail.com>
340+Copyright: (C) 2011 John S Gruber <johnsgruber@gmail.com>
341 License: GPL-3+
342 This program is free software; you can redistribute it
343 and/or modify it under the terms of the GNU General Public
344
345=== modified file 'debian/rules'
346--- debian/rules 2011-05-17 03:12:45 +0000
347+++ debian/rules 2012-05-07 00:49:19 +0000
348@@ -1,9 +1,9 @@
349 #!/usr/bin/make -f
350
351-DEB_PYTHON_SYSTEM := pycentral
352-
353-include /usr/share/cdbs/1/rules/debhelper.mk
354-include /usr/share/cdbs/1/class/python-distutils.mk
355-
356-binary-fixup/lernid::
357- find debian/lernid/usr/share/ -type d -empty -delete
358+WITH_PYTHON2 = $(shell test -f /usr/bin/dh_python2 && echo "--with python2")
359+
360+%:
361+ dh $@ ${WITH_PYTHON2}
362+
363+override_dh_installdocs:
364+ dh_installdocs ./AUTHORS
365
366=== added directory 'debian/source'
367=== added file 'debian/source/format'
368--- debian/source/format 1970-01-01 00:00:00 +0000
369+++ debian/source/format 2012-05-07 00:49:19 +0000
370@@ -0,0 +1,1 @@
371+3.0 (native)
372
373=== modified file 'etc/lernid-classrooms.d/ubuntu-charlas'
374--- etc/lernid-classrooms.d/ubuntu-charlas 2011-08-28 13:38:22 +0000
375+++ etc/lernid-classrooms.d/ubuntu-charlas 2012-05-07 00:49:19 +0000
376@@ -3,4 +3,5 @@
377 classroom: ubuntu-charlas
378 Chat:ubuntu-charlas-chat
379 locale: es.ES
380+logstring: http://irclogs.ubuntu.com/%04d/%02d/%02d/%%23ubuntu-charlas.html
381 icalurl: http://www.google.com/calendar/ical/q16aejpuv5kgmoa7b6ridenkpk%40group.calendar.google.com/public/basic.ics
382
383=== modified file 'etc/lernid-classrooms.d/ubuntu-classroom'
384--- etc/lernid-classrooms.d/ubuntu-classroom 2011-08-25 20:00:48 +0000
385+++ etc/lernid-classrooms.d/ubuntu-classroom 2012-05-07 00:49:19 +0000
386@@ -2,4 +2,5 @@
387 homepage: https://wiki.ubuntu.com/Classroom
388 classroom: ubuntu-classroom
389 chat: ubuntu-classroom-chat
390+logstring: http://irclogs.ubuntu.com/%04d/%02d/%02d/%%23ubuntu-classroom.html
391 icalurl: http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics
392
393=== added file 'lernid-classroom.5'
394--- lernid-classroom.5 1970-01-01 00:00:00 +0000
395+++ lernid-classroom.5 2012-05-07 00:49:19 +0000
396@@ -0,0 +1,99 @@
397+.TH lernid-classroom 5 "April 7, 2012" ""
398+.\"Created with GNOME Manpages Editor Wizard
399+.\"http://sourceforge.net/projects/gmanedit2
400+
401+.SH NAME
402+lernid-classroom \- lernid-classroom configuration files
403+
404+.SH DESCRIPTION
405+This manual page explains the
406+lernid-classroom configuraiton files.
407+Each has an arbitrary name and uses the config file syntax.
408+Each is located in /etc/lernid-classrooms.d
409+.PP
410+It is recommended to name each file after the classroom described.
411+.PP
412+The fields are described below.
413+.PP
414+
415+.SH SECTION NAME
416+The section name ("[some name]") beginning the file is the name of the classroom described.
417+
418+.SH FIELDS
419+.br
420+Each field is followed by a colon, a space, and a value.
421+.B
422+.IP "homepage"
423+The initial page that should be displayed by Lernid's web browser.
424+.B
425+.IP "classroom"
426+The IRC room name of the classroom.
427+.B
428+.IP chat
429+The IRC room name of the room for class discussion and questions.
430+.B
431+.IP "icalurl"
432+The url of the calendar containing this classroom's sessions.
433+.B
434+.IP question_token
435+The token that should be used in this classroom to mark questions of the session's
436+instructor.
437+.B
438+.IP "locale"
439+The locale for sessions for the classroom.
440+.B
441+.IP logstring
442+The string used to create the url for accessing the classroom logs. The year,
443+month and day of the month are inserted (in that order).
444+.B
445+.IP "server"
446+IRC server containing the above classrooms.
447+.br
448+.P
449+question_token overrides the default value selected by the locale field. If neither is provided
450+the default question_token is "QUESTION:"
451+.SH FILES
452+vcal calendars contain classroom session names, times, and description items.
453+
454+The vcal calendar event description may contain the following fields:
455+.br
456+Each field is followed by a colon, a space, and a value.
457+.B
458+.IP description
459+The description of the session.
460+.B
461+.IP instructors
462+The IRC nicknames of the instructor or instructors of the session.
463+.B
464+.IP "helpers (optional)"
465+The IRC nicknames of those who may assist with the session and may help
466+control it.
467+.B
468+.IP "slides (optional)"
469+The url of a .pdf file containing the slides to be used. Each is a page of the pdf.
470+.B
471+.IP "event (optional)"
472+The event of which this session is a part.
473+.B
474+.IP "locale (optional)"
475+The locale for the session.
476+.B
477+.IP "question_token (optional)"
478+The token that should be used in this classroom to mark questions of the session's
479+instructor.
480+.P
481+The session's locale and question_token values override those specified for the
482+classroom as a whole, above, and again the question_token value overrides the value
483+implied by the locale.
484+.SH EXAMPLE
485+[#ubuntu-classroom -- In English]
486+.br
487+homepage: https://wiki.ubuntu.com/Classroom
488+.br
489+classroom: ubuntu-classroom
490+.br
491+chat: ubuntu-classroom-chat
492+.br
493+logstring: http://irclogs.ubuntu.com/%04d/%02d/%02d/%%23ubuntu-classroom.html
494+.br
495+icalurl: http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics
496
497=== added file 'lernid.1'
498--- lernid.1 1970-01-01 00:00:00 +0000
499+++ lernid.1 2012-05-07 00:49:19 +0000
500@@ -0,0 +1,82 @@
501+.TH lernid 1 "April 7, 2012" ""
502+.\"Created with GNOME Manpages Editor Wizard
503+.\"http://sourceforge.net/projects/gmanedit2
504+
505+.SH NAME
506+lernid \- program for participating in Ubuntu learning events
507+
508+.SH SYNOPSIS
509+.B lernid
510+.RI [ options ]
511+.br
512+
513+.SH DESCRIPTION
514+This manual page explains the
515+.B lernid
516+program. 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
517+class.
518+.PP
519+You can ask questions to be answered by the instructor as part of the class by
520+preceding 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
521+than English the token may change to match.
522+.PP
523+In 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.
524+.PP
525+Classroom 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.
526+.PP
527+Many 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.
528+.SH OPTIONS
529+.B
530+.IP " -v, --verbose"
531+Show debug messages
532+.B
533+.IP "-d, --debug"
534+Show debug and classroom management messages
535+.B
536+.IP "--classroom"
537+Use alternate classroom
538+.B
539+.IP "--chatroom"
540+Use alternate chatroom
541+.B
542+.IP "--config"
543+Use alternate configuration at this url. If desired, can be specified as, for example, file:///x/y/z . Used for testing.
544+.B
545+.IP "--calendar"
546+Use an alternate calendar at this url. If desired, can be specified as, for example, file:///x/y/z . Used for testing.
547+.B
548+.IP "--no-update"
549+Only update the schedule when connecting to an event, or when the refresh button
550+is pressed
551+.B
552+.IP "--web-chat"
553+Use web browser to connect to IRC chatrooms.
554+.B
555+.IP "--unsafe-override"
556+Allow 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.
557+
558+.SH FILES
559+/etc/lernid-classroom.d/ config files
560+.P
561+vcal files
562+
563+.SH DIRECTIVES
564+As you follow a class, assuming the speaker is listed in the schedule, the
565+browser will follow URL's he or she posts. If slides are being used you may
566+also see the following commands used:
567+.B
568+.IP "[slide n]"
569+This directive from the speaker will cause the slide to change to page
570+.I n
571+.B
572+.IP "[slidefile URL]"
573+This directive will cause lernid to load the PDF at that URL as a set of slides.
574+.B
575+.IP "[slidefile URL n]"
576+This directive will cause lernid to load the PDF at that URL and switch to
577+page
578+.I n
579+.SH "SEE ALSO"
580+.B
581+lernid-classroom(5)
582+config files
583
584=== modified file 'lernid/ConnectDialog.py'
585--- lernid/ConnectDialog.py 2010-03-01 19:51:16 +0000
586+++ lernid/ConnectDialog.py 2012-05-07 00:49:19 +0000
587@@ -56,8 +56,10 @@
588
589 store = gtk.ListStore(gobject.TYPE_STRING)
590 eventman = EventManager.get_instance()
591+ self._eventlist=[]
592 for s in eventman.get_available_events():
593 store.append([s])
594+ self._eventlist += [unicode(s),]
595
596 self.event_combo = self.builder.get_object("event_combo")
597 self.event_combo.set_model(store)
598@@ -98,6 +100,12 @@
599 def get_event(self):
600 return self.builder.get_object('event_combo').get_active_text()
601
602+ def set_event(self, event):
603+ if not event in self._eventlist:
604+ return False
605+ index = self._eventlist.index(event)
606+ return self.builder.get_object('event_combo').set_active(index)
607+
608 def get_password(self):
609 return self.builder.get_object('password').get_text()
610
611
612=== modified file 'lernid/Event.py'
613--- lernid/Event.py 2011-08-18 00:53:17 +0000
614+++ lernid/Event.py 2012-05-07 00:49:19 +0000
615@@ -23,7 +23,7 @@
616 def __init__(self, **kwargs):
617 for k, v in kwargs.iteritems():
618 if k in ('name', 'nick', 'homepage', 'icalurl', 'classroom',
619- 'chat', 'eventstart', 'eventend', 'locale',
620+ 'chat', 'eventstart', 'eventend', 'locale', 'logstring',
621 'question_token', 'server'):
622 setattr(self, '_'+k, v)
623
624@@ -41,7 +41,10 @@
625
626 @property
627 def icalurl(self):
628- return self._icalurl
629+ if self._icalurl.upper().startswith("HTTPS"):
630+ return self._icalurl[0:4] + self._icalurl[5:]
631+ else:
632+ return self._icalurl
633
634 @property
635 def classroom(self):
636@@ -56,6 +59,10 @@
637 return self._locale
638
639 @property
640+ def logstring(self):
641+ return self._logstring
642+
643+ @property
644 def server(self):
645 return self._server
646
647
648=== modified file 'lernid/EventManager.py'
649--- lernid/EventManager.py 2011-08-27 22:20:55 +0000
650+++ lernid/EventManager.py 2012-05-07 00:49:19 +0000
651@@ -19,6 +19,7 @@
652 ### END LICENSE
653
654 import os
655+import tempfile
656 import gtk
657 import glib
658 import gobject
659@@ -31,7 +32,7 @@
660 from lernid.PasswordDialog import PasswordDialog
661 from lernid.lernidconfig import save_cache_path
662 from lernid.lernidconfig import __lernid_data_directory__
663-from lernid.CouchDBPreferences import Preferences
664+from lernid.LernidPreferences import Preferences
665 from lernid.Event import Event
666 from lernid.LernidOptions import Options
667 from lernid.Statusbar import Statusbar
668@@ -66,29 +67,33 @@
669 self._passworddialog = None
670 self._widgets = {}
671 self._config = ConfigParser.ConfigParser()
672- self._defaultconfig = u"""[All Ubuntu Classroom Sessions]
673+ self._defaultconfig = u"""[#ubuntu-classroom -- In English]
674 homepage: https://wiki.ubuntu.com/Classroom
675 classroom: ubuntu-classroom
676 chat: ubuntu-classroom-chat
677 icalurl: http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics
678
679-[Ubuntu Classes in Spanish]
680+[#ubuntu-charlas -- En Español]
681 homepage: https://wiki.ubuntu.com/Classroom
682-classroom: ubuntu-classroom-es
683-Chat: ubuntu-classroom-chat-es
684+classroom: ubuntu-charlas
685+Chat:ubuntu-charlas-chat
686 locale: es.ES
687-icalurl: http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics
688+icalurl: http://www.google.com/calendar/ical/q16aejpuv5kgmoa7b6ridenkpk%40group.calendar.google.com/public/basic.ics
689 """
690
691 # Make sure that these names are lower case
692- self.classbotnames = ['classbot', 'classroombot']
693+ self.classbotnames = ['classbot', 'classroombot', 'clasebot']
694 if Options.get('config'):
695 try:
696 self._configtext = self._read_config()
697 except IOError:
698 Statusbar.push_message(_('Cannot retrieve configuration'))
699 self._configtext = self._defaultconfig
700- self._config.readfp(io.StringIO(unicode(self._configtext)))
701+ tf = tempfile.TemporaryFile()
702+ tf.write(self._configtext)
703+ tf.seek(0)
704+ self._config.readfp(tf)
705+ tf.close()
706 else:
707 if __lernid_data_directory__.startswith('/'):
708 path = '/etc/lernid-classrooms.d'
709@@ -134,6 +139,8 @@
710 icalurl = self._config.get(event, 'icalurl')
711 except:
712 icalurl = "http://www.google.com/calendar/ical/canonical.com_qg6t4s8i7mg8d4lgfu9f93qid4@group.calendar.google.com/public/basic.ics"
713+ if Options.get('calendar'):
714+ icalurl = Options.get('calendar')
715 try:
716 classroom = self._config.get(event, 'classroom')
717 if classroom[0] not in '#&!+':
718@@ -147,6 +154,10 @@
719 except:
720 chat = "#ubuntu-classroom-chat"
721 try:
722+ logstring= self._config.get(event, 'logstring')
723+ except:
724+ logstring = None
725+ try:
726 locale = self._config.get(event, 'locale')
727 except:
728 locale = None
729@@ -170,6 +181,7 @@
730 eventend=eventend,
731 locale = locale,
732 question_token = question_token,
733+ logstring = logstring,
734 server = server
735 )
736 logging.debug('connecting to event {0}'.format(event))
737@@ -181,7 +193,7 @@
738 server = Server.get_server('irc.freenode.net', nick, self)
739 identifier = server.identify_nick(password)
740 def update_statusbar(obj):
741- Statusbar.push_message(_('Your nickname is now identified'), duration=60)
742+ Statusbar.push_message(_('Your nickname is now identified'), duration=15)
743 identifier.connect('identified', update_statusbar)
744 def retry(obj):
745 if not self._passworddialog:
746@@ -198,6 +210,9 @@
747 self._connectdialog = ConnectDialog.NewConnectDialog()
748 self._connectdialog.set_transient_for(parent)
749 self._connectdialog.connect('response', self._connect_dialog_first_response)
750+ config_event = Preferences.get('event')
751+ if config_event:
752+ self._connectdialog.set_event(config_event[1:-1])
753 self._connectdialog.set_nick(Preferences.get('nick'))
754 self._connectdialog.set_transient_for(widget)
755 self._connectdialog.show()
756@@ -209,6 +224,7 @@
757
758 def _connect_dialog_response(self, dialog, response):
759 event = self._connectdialog.get_event()
760+ Preferences.set('event', '"%s"' % event)
761 nick = self._connectdialog.get_nick()
762 Preferences.set('nick', nick)
763 self._connect_event(event, nick)
764
765=== modified file 'lernid/IrcBackend.py'
766--- lernid/IrcBackend.py 2011-08-27 23:01:16 +0000
767+++ lernid/IrcBackend.py 2012-05-07 00:49:19 +0000
768@@ -31,6 +31,8 @@
769
770 import logging
771 from lernid.LernidOptions import Options
772+from lernid.lernidconfig import VERSION
773+from lernid.Statusbar import Statusbar
774
775 DBUS_PROPERTIES = dbus.PROPERTIES_IFACE
776
777@@ -59,6 +61,7 @@
778 gobject.GObject.__init__(self)
779 self._eventman = eventman
780 self._nick = nick
781+ self._temp_nick = nick[0:9] + str(random.randint(0,999999))
782 self._server = server
783 self._channels = {}
784 self._private_channels = {}
785@@ -68,7 +71,7 @@
786 self._unconnected_private_channels = {}
787 self._nickidentifier = None
788 self._load_manager()
789- self._request_connection(server, nick)
790+ self._request_connection(server, self._temp_nick)
791 self._conn_timeout = None
792
793 @property
794@@ -86,7 +89,7 @@
795 if server in _server_instances:
796 server_obj = _server_instances[server]
797 server_obj.nick = nick
798- server_obj._request_connection(server, nick)
799+ server_obj._request_connection(server, server_obj._temp_nick)
800 return server_obj
801 else:
802 obj = cls(server, nick, eventman)
803@@ -131,7 +134,7 @@
804 if self._state == self.DISCONNECTED:
805 self._state = self.CONNECTING
806 self._cm[CONNECTION_MANAGER].RequestConnection('irc',
807- {'account': nick, 'server': server},
808+ {'account': nick, 'server': server, 'fullname': VERSION},
809 reply_handler=self._got_connection,
810 error_handler=self.error)
811 else:
812@@ -142,6 +145,7 @@
813 self._conn = telepathy.client.Connection(
814 bus_name, object_path,
815 ready_handler=self._ready)
816+ self._conn._acquired_nick = ''
817 self._conn[CONNECTION].connect_to_signal('StatusChanged',
818 self._status_changed)
819 self._conn[CONNECTION].Connect(reply_handler=ignore,
820@@ -153,6 +157,9 @@
821 def _ready(self, connection):
822 logging.debug('server ready')
823 self._state = self.CONNECTED
824+ self._conn[CONNECTION_INTERFACE_RENAMING].RequestRename(self._nick)
825+ logging.debug('nick potentially changed in _ready handler to %s' % \
826+ self._nick)
827 glib.source_remove(self._conn_timeout)
828 self._conn_timeout = None
829 for channel in self._unconnected_channels.keys():
830@@ -196,7 +203,11 @@
831 self.emit('connected')
832 elif status == CONNECTION_STATUS_DISCONNECTED:
833 logging.debug('disconnected from server')
834+ if self._conn_timeout:
835+ glib.source_remove(self._conn_timeout)
836+ self._conn_timeout = None
837 for chan in self._channels.values():
838+ chan._c_disconnect()
839 self._unconnected_channels[chan] = True
840 for chan in self._private_channels.values():
841 self._unconnected_private_channels[chan] = True
842@@ -210,9 +221,6 @@
843 self._nick = '{0}{1}'.format(self._nick, random.randint(10, 99))
844 self._request_connection(self._server, self._nick)
845 if reason == CONNECTION_STATUS_REASON_NETWORK_ERROR:
846- if self._conn_timeout:
847- glib.source_remove(self._conn_timeout)
848- self._conn_timeout = None
849 self._eventman.emit('event-interrupted', self._eventman._event)
850
851 def disconnect(self):
852@@ -222,8 +230,13 @@
853 logging.debug("Server Disconnect Done")
854 def disconnect_error_cb(error):
855 pass
856+ if self._conn_timeout:
857+ glib.source_remove(self._conn_timeout)
858+ self._conn_timeont = None
859 self._conn[CONNECTION].Disconnect(reply_handler=disconnect_cb,
860 error_handler=disconnect_error_cb)
861+ self._state = self.DISCONNECTED
862+ self._conn = None
863 self._nickidentifier = None
864
865 def error(self, e):
866@@ -231,7 +244,7 @@
867 self._state = self.DISCONNECTED
868 if e.get_dbus_name() == 'org.freedesktop.DBus.Error.ServiceUnknown':
869 self._load_manager()
870- self._request_connection(self._server, self._nick)
871+ self._request_connection(self._server, self._temp_nick)
872 else:
873 self.disconnect()
874
875@@ -262,6 +275,8 @@
876 logging.debug('channel created')
877 gobject.GObject.__init__(self)
878 self._name = name
879+ self._signal_matches = []
880+ self._my_handle = None
881
882 def do_connect(self, connection, object_path, properties):
883 """Should only be called by Server"""
884@@ -300,19 +315,40 @@
885 def _ready(self, channel):
886 """We have joined the channel."""
887 logging.debug('connected channel %s' % self.name)
888- self._chan[CHANNEL_INTERFACE_GROUP].connect_to_signal('MembersChanged',
889- self._members_changed)
890+ match = self._chan[CHANNEL_INTERFACE_GROUP].connect_to_signal('MembersChanged',
891+ self._members_changed)
892+ self._signal_matches.append(match)
893 self._chan[CHANNEL_INTERFACE_GROUP].GetMembers(reply_handler=self._update_members,
894 error_handler=self._conn.error)
895- self._chan[CHANNEL_TYPE_TEXT].connect_to_signal('Received', self._received_message)
896+ match = self._chan[CHANNEL_TYPE_TEXT].connect_to_signal('Received', self._received_message)
897+ self._signal_matches.append(match)
898 self.emit('joined')
899
900+ def _c_disconnect(self):
901+ for match in self._signal_matches:
902+ match.remove()
903+ self._signal_matches = []
904+
905 def _update_members(self, handles):
906 def update_cb(ids):
907 self._members.update(zip(handles, ids))
908 if Options.get('more_verbose'):
909 logging.debug('members updated')
910 self.emit('members-changed', self.get_members())
911+ if self._my_handle:
912+ try:
913+ my_alias = self._members[self._my_handle]
914+ except:
915+ return
916+ if not my_alias == self._conn._acquired_nick:
917+ self._conn._acquired_nick = my_alias
918+ Statusbar.push_message(_('Nick assigned by server: %s' % my_alias), duration=20)
919+ logging.debug('Nick assigned by server: %s' % my_alias)
920+ def update_my_handle(handle):
921+ self._my_handle = handle
922+ # If this first call doesn't return before the Aliases come back
923+ # we can set our alias name the next time membership in a room changes
924+ self._my_handle = self._conn[CONNECTION].GetSelfHandle(reply_handler=update_my_handle, error_handler=lambda x: None)
925 self._conn[CONNECTION_INTERFACE_ALIASING].RequestAliases(
926 handles,
927 reply_handler=update_cb,
928@@ -397,8 +433,7 @@
929 self.emit('joined')
930
931 def _received_message(self, id, timestamp, sender_handle, msgtype, flags, text):
932- if Options.get('more_verbose'):
933- logging.debug('private message received by %s' % self.target)
934+ logging.debug('private message by %s is %s' % (self.target,text))
935 self.emit('message-received', self.target, text)
936
937
938@@ -437,6 +472,11 @@
939 def _msg_received(self, chan, sender, msg):
940 if msg.startswith('You are now identified'):
941 logging.debug('identified nick')
942+ handle = self._conn[CONNECTION].GetSelfHandle()
943+ logging.debug('our handle before the rename is %s' % self._conn[CONNECTION_INTERFACE_ALIASING].RequestAliases([handle])[0])
944+ self._conn[CONNECTION_INTERFACE_RENAMING].RequestRename(self._nick)
945+ logging.debug('nick potentially changed in ident. handler to %s'% \
946+ self._nick)
947 self.emit('identified')
948 elif msg.startswith('Invalid password'):
949 logging.debug('invalid password')
950
951=== renamed file 'lernid/CouchDBPreferences.py' => 'lernid/LernidPreferences.py'
952--- lernid/CouchDBPreferences.py 2011-08-28 13:38:22 +0000
953+++ lernid/LernidPreferences.py 2012-05-07 00:49:19 +0000
954@@ -18,8 +18,6 @@
955 ### END LICENSE
956
957
958-from desktopcouch.records.server import CouchDatabase
959-from desktopcouch.records.record import Record
960 from ConfigParser import RawConfigParser
961 from lernid.lernidconfig import save_cache_path
962 from lernid.LernidOptions import Options
963@@ -31,24 +29,12 @@
964 _instance = None
965
966 def __init__(self):
967- self._db_name = 'lernid'
968 self._parser = RawConfigParser()
969- self._parser.add_section(self._db_name)
970- try:
971- self._database = CouchDatabase(self._db_name, create=True)
972- except:
973- self._database = False
974- logging.debug('desktopcouch not available')
975- if Options.get('avoid_desktopcouch'):
976- logging.info('avoiding desktopcouch')
977- self._database = False
978- self._record_type = "http://wiki.ubuntu.com/Quickly/RecordTypes/Lernid/Preferences"
979- self._key = None
980+ self._parser.add_section('lernid')
981 self._load_preferences()
982
983 def _load_preferences(self):
984 self._preferences = {
985- 'record_type': self._record_type,
986 'vertical': False,
987 'show_appindicator': True,
988 'main_window_maximize': False,
989@@ -58,52 +44,77 @@
990 'links_in_default_browser': False
991
992 }
993- if self._database:
994- results = self._database.get_records(record_type=self._record_type, create_view=True)
995- if len(results.rows) == 0:
996- #no preferences have ever been saved
997- #save them before returning
998- self._key = self._database.put_record(Record(self._preferences))
999+ file_name = save_cache_path('lernid')+'/config'
1000+ try:
1001+ config_file = open(file_name, 'r')
1002+ except:
1003+ return
1004+ self._parser.readfp(config_file)
1005+ config_file.close()
1006+ for item in self._parser.items('lernid'):
1007+ if item[0] == 'width':
1008+ if 'main_window_size' not in self._preferences:
1009+ self._preferences['main_window_size'] = dict()
1010+ self._preferences['main_window_size']['width'] = int(item[1])
1011+ continue
1012+ if item[0] == 'height':
1013+ if 'main_window_size' not in self._preferences:
1014+ self._preferences['main_window_size'] = dict()
1015+ self._preferences['main_window_size']['height'] = int(item[1])
1016+ continue
1017+ if item[0] == 'hpanesmain':
1018+ if 'hpanes' not in self._preferences:
1019+ self._preferences['hpanes'] = dict()
1020+ self._preferences['hpanes']['main'] = int(item[1])
1021+ continue
1022+ if item[0] == 'hpanessub':
1023+ if 'hpanes' not in self._preferences:
1024+ self._preferences['hpanes'] = dict()
1025+ self._preferences['hpanes']['sub'] = int(item[1])
1026+ continue
1027+ if item[0] == 'vpanesmain':
1028+ if 'vpanes' not in self._preferences:
1029+ self._preferences['vpanes'] = dict()
1030+ self._preferences['vpanes']['main'] = int(item[1])
1031+ continue
1032+ if item[0] == 'vpanessub':
1033+ if 'vpanes' not in self._preferences:
1034+ self._preferences['vpanes'] = dict()
1035+ self._preferences['vpanes']['sub'] = int(item[1])
1036+ continue
1037+ if item[1].startswith('{'): # remove old style unused options
1038+ r = self._parser.remove_option('lernid', item[0])
1039+ continue
1040+ elif item[1] == "True":
1041+ self._preferences[item[0]] = True
1042+ elif item[1] == "False":
1043+ self._preferences[item[0]] = False
1044 else:
1045- prefs = results.rows[0].value
1046- self._preferences.update(prefs)
1047- self._key = prefs["_id"]
1048- self._database.update_fields(self._key, self._preferences)
1049- else:
1050- file_name = save_cache_path('lernid')+'/config'
1051- try:
1052- config_file = open(file_name, 'r')
1053- except:
1054- return
1055- self._parser.readfp(config_file)
1056- config_file.close()
1057- for item in self._parser.items(self._db_name):
1058- if item[1].startswith('{'):
1059- continue
1060- elif item[1] == "True":
1061- self._preferences[item[0]] = True
1062- elif item[1] == "False":
1063- self._preferences[item[0]] = False
1064- else:
1065- self._preferences[item[0]] = item[1]
1066+ self._preferences[item[0]] = item[1]
1067
1068 def _update(self, prefs):
1069- if '_id' in prefs: del prefs['_id']
1070- if '_rev' in prefs: del prefs['_rev']
1071 self._preferences.update(prefs)
1072- if self._database:
1073- self._database.update_fields(self._key, prefs)
1074
1075 def _flush(self):
1076 for item in self._preferences:
1077- if item == '_id':
1078- continue
1079- if item == '_rev':
1080- continue
1081- if item == 'record_type':
1082- continue
1083- self._parser.set(self._db_name, item, self._preferences[item])
1084-
1085+ if item == 'hpanes':
1086+ self._parser.set('lernid', 'hpanesmain',
1087+ self._preferences[item]['main'])
1088+ self._parser.set('lernid', 'hpanessub',
1089+ self._preferences[item]['sub'])
1090+ elif item == 'vpanes':
1091+ self._parser.set('lernid', 'vpanesmain',
1092+ self._preferences[item]['main'])
1093+ self._parser.set('lernid', 'vpanessub',
1094+ self._preferences[item]['sub'])
1095+ elif item == 'main_window_size':
1096+ self._parser.set('lernid', 'width',
1097+ self._preferences[item]['width'])
1098+ self._parser.set('lernid', 'height',
1099+ self._preferences[item]['height'])
1100+ else:
1101+ self._parser.set('lernid', item, self._preferences[item])
1102+
1103 config_file = open(save_cache_path('lernid')+'/config', 'w')
1104 self._parser.write(config_file)
1105 config_file.close()
1106
1107=== modified file 'lernid/PreferencesLernidDialog.py'
1108--- lernid/PreferencesLernidDialog.py 2010-03-08 06:06:05 +0000
1109+++ lernid/PreferencesLernidDialog.py 2012-05-07 00:49:19 +0000
1110@@ -20,7 +20,7 @@
1111 import gtk
1112
1113 from lernid.lernidconfig import get_data_path
1114-from lernid.CouchDBPreferences import Preferences
1115+from lernid.LernidPreferences import Preferences
1116
1117 class PreferencesLernidDialog(gtk.Dialog):
1118 __gtype_name__ = "PreferencesLernidDialog"
1119
1120=== modified file 'lernid/Sessions.py'
1121--- lernid/Sessions.py 2011-08-27 22:20:55 +0000
1122+++ lernid/Sessions.py 2012-05-07 00:49:19 +0000
1123@@ -25,9 +25,10 @@
1124
1125 import lernid.DateTime as dt
1126 import io
1127+import gio, glib
1128 from datetime import timedelta
1129
1130-one_week = timedelta(days=7)
1131+half_year = timedelta(days = 183)
1132
1133 class Session(object):
1134
1135@@ -35,8 +36,15 @@
1136
1137 def __init__(self, **kwargs):
1138 for k, v in kwargs.iteritems():
1139- if k in ('title', 'description', 'instructors', 'helpers', 'local_start', 'local_end', 'slides', 'event', 'locale', 'question_token'):
1140- setattr(self, '_'+k, v)
1141+ if k in ('uid', 'title', 'description', 'instructors',
1142+ 'helpers', 'local_start', 'local_end', 'slides',
1143+ 'event', 'locale',
1144+ 'question_token'):
1145+ setattr(self, '_'+k, v)
1146+
1147+ @property
1148+ def uid(self):
1149+ return self._uid
1150
1151 @property
1152 def title(self):
1153@@ -103,9 +111,13 @@
1154 if now > end:
1155 return self.PAST
1156
1157+def start_read_ical(url, when_done_cb, cancellable, data):
1158+ gfile = gio.File(uri=url)
1159+ r = gfile.load_contents_async(when_done_cb, cancellable=cancellable,
1160+ user_data=data)
1161
1162-def parse_ical(event):
1163- """Parse iCal schedule for event and generate a list of Session objects"""
1164+def read_ical(gfile,result,userdata):
1165+ event, old_ical = userdata
1166 default_cal_error = (
1167 u"""BEGIN:VCALENDAR
1168 BEGIN:VEVENT
1169@@ -115,7 +127,42 @@
1170 SUMMARY: """ + _('Unable to load calendar %s\n') +
1171 u"""END:VEVENT
1172 END:VCALENDAR""") % event.icalurl
1173- default_cal_error2 = (
1174+
1175+ try:
1176+
1177+ ical = unicode(gfile.load_contents_finish(result)[0])
1178+ icf = io.StringIO(ical)
1179+ ical_output = io.StringIO()
1180+ # DTSTAMP is changed for each calendar entry each time, but isn't
1181+ # significant--remove them
1182+ for i in icf.readlines():
1183+ if i[0:8] != u'DTSTAMP:':
1184+ ical_output.write(i)
1185+ ical = ical_output.getvalue()
1186+ icf.close()
1187+ ical_output.close()
1188+ except gio.Error, information:
1189+ if information.code == gio.ERROR_CANCELLED:
1190+ logging.debug('Ignoring the completion of a cancelled cal. load')
1191+ return ''
1192+ logging.error('Unable to open calendar %s' % gfile.get_uri())
1193+ logging.error(information)
1194+ if old_ical:
1195+ ical = old_ical
1196+ else:
1197+ ical = default_cal_error
1198+ except glib.GError, information:
1199+ logging.error('Unable to open calendar %s' % gfile.get_uri())
1200+ logging.error(information)
1201+ if old_ical:
1202+ ical = old_ical
1203+ else:
1204+ ical = default_cal_error
1205+ return ical
1206+
1207+
1208+def parse_ical(event, ical):
1209+ default_cal_error = (
1210 u"""BEGIN:VCALENDAR
1211 BEGIN:VEVENT
1212 DTSTART:20100101T000000Z
1213@@ -124,16 +171,12 @@
1214 SUMMARY: """ + _('Unable to parse calendar %s\n') +
1215 u"""END:VEVENT
1216 END:VCALENDAR""") % event.icalurl
1217- try:
1218- ical = urllib2.urlopen(event.icalurl, None, 30)
1219- except IOError:
1220- logging.error('Unable to open calendar %s' % event.icalurl)
1221- ical = io.StringIO(default_cal_error)
1222- try:
1223- cal = vobject.readOne(ical)
1224+
1225+ try:
1226+ cal = vobject.readOne(io.StringIO(ical))
1227 except:
1228 logging.critical('Error parsing calendar at %s' % event.icalurl)
1229- cal = vobject.readOne(io.StringIO(default_cal_error2))
1230+ cal = vobject.readOne(io.StringIO(default_cal_error))
1231
1232 sessions = []
1233
1234@@ -158,12 +201,17 @@
1235 summary = session.summary.value
1236 else:
1237 summary = _('Missing Session Name')
1238+ if hasattr(session, "uid"):
1239+ uid = session.uid
1240+ else:
1241+ uid = 0
1242 if eventstart_local <= local_start <= eventend_local:
1243- if local_start > dt.now_local() - one_week:
1244+ if local_start > dt.now_local() - half_year:
1245 sessions.append(Session(
1246 title = summary,
1247 local_start = local_start,
1248 local_end = local_end,
1249+ uid = uid,
1250 **session_data))
1251
1252 # reverse the list to get the events in chronological order
1253
1254=== modified file 'lernid/lernidconfig.py'
1255--- lernid/lernidconfig.py 2011-09-03 19:34:22 +0000
1256+++ lernid/lernidconfig.py 2012-05-07 00:49:19 +0000
1257@@ -31,7 +31,7 @@
1258
1259 def _(message): return message
1260
1261-VERSION = '0.8.2.2'
1262+VERSION = '0.8.4.7'
1263 DESCRIPTION = _('Connect to a world of online tutorials quickly and easily.')
1264 WEBSITE = 'http://wiki.ubuntu.com/Lernid'
1265 CONTRIBUTORS = [
1266
1267=== modified file 'lernid/widgets/Browser.py'
1268--- lernid/widgets/Browser.py 2011-08-27 22:15:03 +0000
1269+++ lernid/widgets/Browser.py 2012-05-07 00:49:19 +0000
1270@@ -28,7 +28,7 @@
1271 from lernid.LernidOptions import Options
1272 from urlparse import urlparse
1273 from lernid.lernidconfig import get_data_path, VERSION
1274-from lernid.CouchDBPreferences import Preferences
1275+from lernid.LernidPreferences import Preferences
1276
1277 class Browser(Widget):
1278
1279@@ -58,6 +58,7 @@
1280 parts=useragent.split(' ')
1281 parts[-1]='lernid/'+VERSION
1282 browser_settings.set_property('user-agent', ' '.join(parts))
1283+ browser_settings.set_property('enable-plugins', False)
1284 self._browser.set_settings(browser_settings)
1285
1286 scroll = builder.get_object('browser_scroll')
1287@@ -205,7 +206,7 @@
1288 self.set_location(url)
1289
1290 def _classroom_msg_received(self, classroom, chan, sender, text):
1291- if not Options.get('unsafe-override') and not chan.is_moderated() and not self._on_faculty(sender):
1292+ if not Options.get('unsafe-override') and not self._on_faculty(sender):
1293 return
1294 load, ignore = self._parse_urls(text)
1295 if load and not self._paused:
1296
1297=== modified file 'lernid/widgets/Classroom.py'
1298--- lernid/widgets/Classroom.py 2011-08-27 22:06:13 +0000
1299+++ lernid/widgets/Classroom.py 2012-05-07 00:49:19 +0000
1300@@ -23,7 +23,7 @@
1301 import pango
1302 import time
1303
1304-from lernid.CouchDBPreferences import Preferences
1305+from lernid.LernidPreferences import Preferences
1306 from lernid.widgets.IrcWidget import IrcWidget
1307
1308 from lernid import IrcBackend
1309@@ -78,8 +78,9 @@
1310 if channelname[0] not in '#&!+':
1311 channelname = '#' + channelname
1312 classchan = self._server.get_channel(channelname)
1313+ self._chan = classchan # Save for IRC widget use
1314 def joined(server):
1315- Statusbar.push_message(_('Joined classroom'))
1316+ Statusbar.push_message(_('Joined classroom'), duration=10)
1317 self._textview.set_sensitive(True)
1318 self.event_connect_signal(classchan, 'joined', joined)
1319 self.event_connect_signal(classchan, 'message-received', self._message_received)
1320
1321=== modified file 'lernid/widgets/IrcWidget.py'
1322--- lernid/widgets/IrcWidget.py 2011-08-13 02:05:14 +0000
1323+++ lernid/widgets/IrcWidget.py 2012-05-07 00:49:19 +0000
1324@@ -24,7 +24,7 @@
1325 import re
1326
1327 from lernid.widgets.Widget import Widget
1328-from lernid.CouchDBPreferences import Preferences
1329+from lernid.LernidPreferences import Preferences
1330
1331 from lernid import IrcBackend
1332
1333@@ -77,17 +77,21 @@
1334 else:
1335 if sender:
1336 self._buffer.insert_with_tags_by_name(iend, '<%s> ' % sender, 'gray')
1337- start_pos = iend.get_offset()
1338- if self._nick in text and sender != self._nick:
1339- self._buffer.insert_with_tags_by_name(iend, text, 'highlight')
1340- elif self._on_faculty(sender):
1341- self._buffer.insert_with_tags_by_name(iend, text, 'highlight')
1342- elif sender.lower() in self._classbotnames:
1343- self._buffer.insert_with_tags_by_name(iend, text, 'italicize')
1344+ start_pos = iend.get_offset()
1345+ my_nick = self._chan._conn._acquired_nick
1346+ if my_nick in text and sender != my_nick:
1347+ self._buffer.insert_with_tags_by_name(iend, text, 'highlight')
1348+ elif self._on_faculty(sender):
1349+ self._buffer.insert_with_tags_by_name(iend, text, 'highlight')
1350+ elif sender.lower() in self._classbotnames:
1351+ self._buffer.insert_with_tags_by_name(iend, text, 'italicize')
1352+ else: self._buffer.insert(iend, text)
1353 else:
1354 self._buffer.insert(iend, text)
1355
1356- for url in re.finditer(r"https?://\S+", unicode(text, 'utf-8')):
1357+ if type(text)!=unicode:
1358+ text=unicode(text, 'utf-8')
1359+ for url in re.finditer(r"https?://\S+", text):
1360 self._buffer.apply_tag_by_name('hyperlink',
1361 self._buffer.get_iter_at_offset(start_pos + url.start()),
1362 self._buffer.get_iter_at_offset(start_pos + url.end()))
1363
1364=== modified file 'lernid/widgets/NativeChatroom.py'
1365--- lernid/widgets/NativeChatroom.py 2011-08-27 22:06:13 +0000
1366+++ lernid/widgets/NativeChatroom.py 2012-05-07 00:49:19 +0000
1367@@ -25,7 +25,7 @@
1368 import pango
1369 import time
1370
1371-from lernid.CouchDBPreferences import Preferences
1372+from lernid.LernidPreferences import Preferences
1373 from lernid.widgets.IrcWidget import IrcWidget
1374
1375 from lernid import IrcBackend
1376@@ -83,6 +83,7 @@
1377 if channelname[0] not in '#&!+':
1378 channelname = '#' + channelname
1379 self._chatchan = self._server.get_channel(channelname)
1380+ self._chan = self._chatchan # Save for IRC widget use
1381 schedule = eventman.get_widget_by_name('schedule')
1382 self._get_question_token = schedule.get_question_token
1383 #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
1384@@ -181,7 +182,7 @@
1385 self._append_to_buffer(_('IRC commands are not yet supported.'))
1386 elif self._questioncheckbox.get_active():
1387 self._questioncheckbox.set_active(False)
1388- self._chatchan.send_message(self._get_question_token() + u' ' + u'\u200b\u2006' + unicode(text))
1389+ self._chatchan.send_message(self._get_question_token() + u' ' + unicode(text))
1390 else:
1391 self._chatchan.send_message(text)
1392 self._input.set_text('')
1393@@ -191,7 +192,7 @@
1394
1395 def _message_sent(self, chan, text):
1396 self._adjust.value = self._adjust.upper - self._adjust.page_size
1397- self._append_to_buffer(text, self._nick)
1398+ self._append_to_buffer(text, chan._conn._acquired_nick)
1399
1400 def _scroll(self, textview, alloc):
1401 if self._at_bottom is None:
1402
1403=== modified file 'lernid/widgets/Schedule.py'
1404--- lernid/widgets/Schedule.py 2011-08-28 14:16:52 +0000
1405+++ lernid/widgets/Schedule.py 2012-05-07 00:49:19 +0000
1406@@ -21,8 +21,11 @@
1407 import glib
1408 import gobject
1409 import gtk
1410+import gio
1411 import os
1412 import time
1413+import urlparse
1414+import random
1415 import pynotify
1416 import logging
1417 from datetime import timedelta
1418@@ -30,7 +33,8 @@
1419 import lernid.DateTime as dt
1420 from lernid.widgets.Widget import Widget
1421 from lernid.lernidconfig import get_data_path
1422-from lernid.Sessions import Session, parse_ical
1423+from lernid.Sessions import Session, parse_ical, read_ical, start_read_ical
1424+from lernid.LernidOptions import Options
1425
1426
1427 class Schedule(Widget):
1428@@ -46,20 +50,31 @@
1429 ),
1430 }
1431
1432- COL_ICON, COL_DATE, COL_START, COL_END, COL_TITLE, COL_SESSION = range(6)
1433+ COL_ICON, COL_DATE, COL_START, COL_END, COL_TITLE, COL_SESSION, \
1434+ COL_DATETIME = range(7)
1435
1436 def __init__(self):
1437 Widget.__init__(self, 'schedule')
1438- viewport = gtk.Viewport()
1439+ vbox = gtk.VBox()
1440+ self.add(vbox)
1441 scroll = gtk.ScrolledWindow()
1442 scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
1443- viewport.set_shadow_type(gtk.SHADOW_NONE)
1444- viewport.add(scroll)
1445- self.add(viewport)
1446+ vbox.pack_start(scroll, expand=True)
1447+ hbuttonbox = gtk.HBox(False, 0)
1448+ vbox.pack_start(hbuttonbox, expand=False)
1449+ self._copy_button = gtk.Button()
1450+ self._open_button = gtk.Button()
1451+ self._refresh_button = gtk.ToolButton(gtk.STOCK_REFRESH)
1452+ self._refresh_button.set_expand(False)
1453+ hbuttonbox.pack_start(self._copy_button, True, True, 0)
1454+ hbuttonbox.pack_start(self._open_button, True, True, 0)
1455+ hbuttonbox.pack_start(self._refresh_button, True, True, 0)
1456+ self._button_setup(self._copy_button, self._open_button,
1457+ self._refresh_button)
1458
1459 self._treeview = gtk.TreeView()
1460 scroll.add(self._treeview)
1461- self._model = gtk.ListStore(str, str, str, str, str, object)
1462+ self._model = gtk.ListStore(str, str, str, str, str, object, object)
1463 self._treeview.set_model(self._model)
1464 self._treeview.set_search_column(self.COL_TITLE)
1465 def search_equal_func(model, column, key, iter):
1466@@ -67,6 +82,25 @@
1467 return False
1468 return True
1469 self._treeview.set_search_equal_func(search_equal_func)
1470+ def session_clicked_cb(tv, event, self):
1471+ if not self._event:
1472+ logging.error('Schedule clicked with no event connected')
1473+ return
1474+ logstring = self._event.logstring
1475+ if not logstring:
1476+ logging.debug('Schedule clicked, but no event logging'
1477+ ' specified')
1478+ return
1479+ i = tv.get_path_at_pos(int(event.x), int(event.y))
1480+ if not i:
1481+ return
1482+ row = tv.get_model()[i[0][0]]
1483+ if not row[self.COL_DATETIME]:
1484+ return
1485+ date_time = row[self.COL_DATETIME]
1486+ url = logstring % (date_time.year, date_time.month, date_time.day)
1487+ gtk.show_uri(None, url, gtk.gdk.CURRENT_TIME)
1488+ self._treeview.connect('button-release-event', session_clicked_cb, self)
1489 self._treeview.set_headers_visible(False)
1490
1491 column = gtk.TreeViewColumn()
1492@@ -116,11 +150,114 @@
1493 self._schedule = None
1494 self._current_session = None
1495 self._update_handle = None
1496+ self._ical = None
1497+ self._icalurl = None
1498+ self._connected = False
1499+ self._ircdate = (dt.now_utc() - timedelta(minutes=70)).date()
1500+ self._cancellable = None
1501+ self._event = None
1502
1503 self.show_all()
1504
1505+ def _scramble_case(self, string):
1506+ if '@' in string:
1507+ pstring = string.split('@')
1508+ newstring = pstring[0] + '@'
1509+ string = pstring[1]
1510+ else:
1511+ newstring = ''
1512+ random.seed()
1513+ for s in string:
1514+ if random.random() >= .5:
1515+ newstring += s.upper()
1516+ else:
1517+ newstring += s.lower()
1518+ return newstring
1519+ # scramble the case of the url for this event connection.
1520+ # Avoids occasional problem with gvfsd-http wedging
1521+ # particular url's after loss of connectivity
1522+
1523 def do_event_connect(self, event_man, event):
1524 self._event = event_man.current_event()
1525+ self._connected = True
1526+ self._last_upcoming_announce = None
1527+ def finished_initial_ical_load_cb(gfile, result, unused):
1528+ ical = read_ical(gfile, result, (event,self._ical))
1529+ if ical == '':
1530+ return # Do nothing for cancelled I/O Operation
1531+ self._ical = ical
1532+ logging.debug('Finished initial ical load')
1533+ if not (gfile.get_uri() == self._icalurl): # Sanity Check
1534+ logging.debug('Old I/O completion ignored')
1535+ return
1536+ self._cancellable = None
1537+ if not self._connected or not self._event:
1538+ return
1539+ self._update(event, self._ical, initial=True)
1540+ secs = time.localtime().tm_sec
1541+ self._update_handle = glib.timeout_add_seconds(65-secs, self._calendar_refresh, event)
1542+ parsed = [j for j in urlparse.urlparse(event.icalurl)]
1543+ parsed[1]= self._scramble_case(parsed[1])
1544+ self._icalurl = urlparse.urlunparse(parsed)
1545+ cancellable = gio.Cancellable()
1546+ start_read_ical(self._icalurl, finished_initial_ical_load_cb,
1547+ cancellable, (None, None))
1548+ self._cancellable = cancellable
1549+ logging.debug('Started initial ical load %s' % self._icalurl)
1550+
1551+ def _calendar_refresh(self, event, force_update=False):
1552+ def finished_refresh_ical_load_cb(gfile, result, data):
1553+ force_reload, irclog_force = data
1554+ ical = read_ical(gfile, result, (event, self._ical))
1555+ if ical == '':
1556+ return # Do nothing for a cancelled calendar read
1557+ if not (gfile.get_uri() == self._icalurl): # Sanity Check
1558+ logging.debug('Old I/O completion ignored')
1559+ return
1560+ self._cancellable = None
1561+ logging.debug('Finished ical load')
1562+ if not self._connected or not self._event:
1563+ return
1564+ if ical == self._ical and not irclog_force:
1565+ logging.debug('Skipping Update--Calendar Unchanged')
1566+ self._update_currency()
1567+ else:
1568+ self._ical = ical
1569+ logging.debug('Updating Schedule')
1570+ self._update(event, self._ical)
1571+ secs = time.localtime().tm_sec
1572+ self._update_handle = glib.timeout_add_seconds(65-secs, self._calendar_refresh, event)
1573+ return
1574+
1575+ self._update_handle = None
1576+ irc_force = False
1577+ now = dt.now_utc()
1578+ trigger_time = now.minute in [1, 6, 11, 21, 31, 36, 41, 51]
1579+ trigger_time = trigger_time and not Options.get('no-update')
1580+ # Trigger in time to be done at :50, :00, :20, and :30 so that session
1581+ # announcements will be made on time (bearing in mind low bandwidth
1582+ # connections and the large calendar size
1583+ ircdate = (now - timedelta(minutes=71)).date()
1584+ if ircdate != self._ircdate and trigger_time:
1585+ self._ircdate = ircdate
1586+ irc_force = True
1587+ logging.debug('Daily full calendar update %s' % now)
1588+ if irc_force or force_update or trigger_time:
1589+ parsed = [j for j in urlparse.urlparse(event.icalurl)]
1590+ parsed[1]= self._scramble_case(parsed[1])
1591+ self._icalurl = urlparse.urlunparse(parsed)
1592+ cancellable = gio.Cancellable()
1593+ start_read_ical(self._icalurl, finished_refresh_ical_load_cb,
1594+ cancellable, (force_update, irc_force))
1595+ self._cancellable = cancellable
1596+ logging.debug('Started ical load')
1597+ else:
1598+ self._update_currency()
1599+ secs = time.localtime().tm_sec
1600+ self._update_handle = glib.timeout_add_seconds(65-secs, self._calendar_refresh, event)
1601+ return False
1602+
1603+ def _update(self, event, ical, initial=False):
1604 def quote(text):
1605 quote_table = {
1606 '<' : '&lt;',
1607@@ -133,11 +270,40 @@
1608 for l in text:
1609 return_value= return_value + quote_table.get(l,l)
1610 return return_value
1611+ def insert_log_line(date, session):
1612+ difference = dt.now_utc() - date
1613+ if difference < timedelta(minutes=70):
1614+ return # There may not be a log yet
1615+ sessionrow = ['', '', '', '']
1616+ formatted_date = date.strftime('%x')
1617+ localtime = dt.as_local(date)
1618+ formatted_local = localtime.strftime('%H:00')
1619+ formatted = \
1620+ _('<u>Irc Logs for UTC %s </u><i>(Starting at %s local time)</i>') \
1621+ % (formatted_date, formatted_local)
1622+ sessionrow.append(formatted)
1623+ sessionrow.append(session)
1624+ sessionrow.append(date)
1625+ self._model.append(sessionrow)
1626+
1627+ def insert_blank_lines(number):
1628+ for i in range(number):
1629+ sessionrow = ['', '', '', '', '', None, None]
1630+ self._model.append(sessionrow)
1631
1632- self._schedule = parse_ical(event)
1633+ self._schedule = parse_ical(event, ical)
1634 self._model.clear()
1635 self._scroll_to = None
1636+ self._last_date = None
1637+ current_row = False
1638 for session in self._schedule:
1639+ utc_starttime = dt.as_utc(session.start_datetime)
1640+ utc_date= dt.datetime(utc_starttime.year, utc_starttime.month,
1641+ utc_starttime.day, tzinfo=utc_starttime.tzinfo)
1642+ if (not utc_date == self._last_date):
1643+ self._last_date = utc_date
1644+ if event.logstring:
1645+ insert_log_line(utc_date, session)
1646 sessionrow = []
1647 sessionrow.append('')
1648 sessionrow.append(session.start_local_date)
1649@@ -150,39 +316,47 @@
1650 else:
1651 sessionrow.append(title + '<small>' + instructors + '</small>')
1652 sessionrow.append(session)
1653+ sessionrow.append(None)
1654 current_row = self._model.append(sessionrow)
1655 if not self._scroll_to and session.state in (session.FUTURE, session.NOW):
1656 self._scroll_to = self._model.get_path(current_row)
1657-
1658- self._update()
1659-
1660- if self._scroll_to:
1661+ if not self._scroll_to and current_row:
1662+ self._scroll_to = self._model.get_path(current_row)
1663+ self._update_currency()
1664+
1665+ insert_blank_lines(40)
1666+
1667+ if initial and self._scroll_to:
1668 self._treeview.scroll_to_cell(self._scroll_to, use_align=True, row_align=.2)
1669
1670- def set_timeout():
1671- self._update_handle = glib.timeout_add_seconds(60, self._update)
1672- # Wait at least one minute before updating again,
1673- # to avoid duplicate notifications.
1674- secs = time.localtime().tm_sec
1675- glib.timeout_add_seconds(65-secs, set_timeout)
1676
1677 self._treeview.set_headers_visible(True)
1678
1679 def do_event_disconnect(self, event_man, event):
1680+ self._connected = False
1681 self._schedule = []
1682 self._current_session = None
1683 self._model.clear()
1684 if self._update_handle:
1685 glib.source_remove(self._update_handle)
1686+ self._update_handle = None
1687+ if self._cancellable:
1688+ self._cancellable.cancel()
1689+ self._cancellable = None
1690 self._treeview.set_headers_visible(False)
1691+ self._event = None
1692
1693- def _update(self):
1694+ def _update_currency(self):
1695 ended = False
1696 if self._current_session and self._current_session.state == Session.PAST:
1697 ended = True
1698 self._current_session = None
1699 for i, row in enumerate(self._model):
1700 session = row[self.COL_SESSION]
1701+ if session == None:
1702+ continue
1703+ if self._current_session and self._current_session.uid == session.uid:
1704+ self._current_session = session
1705 if session.state == Session.NOW:
1706 row[self.COL_ICON] = gtk.STOCK_GO_FORWARD
1707 if session != self._current_session:
1708@@ -201,9 +375,11 @@
1709 if session.state == Session.FUTURE:
1710 row[self.COL_ICON] = None
1711 if timedelta(minutes=9) < session.start_datetime - dt.now_local() < timedelta(minutes=10):
1712- self.show_notification(
1713- _('Session upcoming'),
1714- _('The session "{0}" will begin in 10 minutes.').format(session.title)
1715+ if not self._last_upcoming_announce == session.uid:
1716+ self._last_upcoming_announce = session.uid
1717+ self.show_notification(
1718+ _('Session upcoming'),
1719+ _('The session "{0}" will begin in 10 minutes.').format(session.title)
1720 )
1721 if session.state == Session.PAST:
1722 row[self.COL_ICON] = gtk.STOCK_NO
1723@@ -228,10 +404,7 @@
1724 return 'PREGUNTA:'
1725 else:
1726 return 'QUESTIION:'
1727- try:
1728- event = self._event
1729- except:
1730- event = None # Called when no event is opened
1731+ event = self._event
1732 if event and event.question_token:
1733 return event.question_token
1734 if event and event.locale:
1735@@ -246,3 +419,32 @@
1736 n.show()
1737 except:
1738 logging.debug("Notification failed from Schedule Widget")
1739+
1740+ def _button_setup(self, copy_button, open_button, refresh_button):
1741+ copy_button.set_label(_("Copy Calendar ICAL URL to Clipboard"))
1742+ open_button.set_label(_("Open Calendar ICAL URL Using Your Browser"))
1743+ copy_button.connect("clicked", self._copy_button_clicked)
1744+ open_button.connect("clicked", self._open_button_clicked)
1745+ refresh_button.connect("clicked", self._refresh_button_clicked)
1746+
1747+ def _copy_button_clicked(self, widget):
1748+ clipboard = gtk.Clipboard()
1749+ event = self._event
1750+ if not event:
1751+ return
1752+ clipboard.set_text(event.icalurl)
1753+
1754+ def _open_button_clicked(self, widget):
1755+ event = self._event
1756+ if not event:
1757+ return
1758+ gtk.show_uri(None, event.icalurl, gtk.gdk.CURRENT_TIME)
1759+
1760+ def _refresh_button_clicked(self, widget):
1761+ event = self._event
1762+ if not event:
1763+ return
1764+ if self._update_handle:
1765+ glib.source_remove(self._update_handle)
1766+ self._update_handle = None
1767+ self._calendar_refresh(event, force_update=True)
1768
1769=== modified file 'lernid/widgets/Slide.py'
1770--- lernid/widgets/Slide.py 2011-08-22 03:14:02 +0000
1771+++ lernid/widgets/Slide.py 2012-05-07 00:49:19 +0000
1772@@ -25,7 +25,10 @@
1773 import re
1774 import logging
1775 import gio
1776-import webbrowser
1777+import cairo
1778+import StringIO
1779+import glib
1780+import random
1781
1782 from lernid.widgets.Widget import Widget
1783 from lernid.lernidconfig import save_cache_path
1784@@ -87,6 +90,8 @@
1785 viewport.set_shadow_type(gtk.SHADOW_NONE)
1786 self._master_slide = None
1787 self._session_slide_downloaded = False
1788+ self._cancellable = None
1789+ self._slide_retry = None
1790
1791 self.connect('expose-event', self._resize)
1792 self.set_no_show_all(False)
1793@@ -108,22 +113,28 @@
1794 self._slidebutton.disconnect(self._slidebutton_cb)
1795 self._slidebutton_cb = None
1796 Statusbar.pop_message('slidesession')
1797+ if self._slide_retry:
1798+ glib.source_remove(self._slide_retry)
1799+ self._slide_retry = None
1800+ if self._cancellable:
1801+ self._cancellable.cancel()
1802+ self._cancellable = None
1803 self.event_disconnect_signals()
1804
1805 def _classroom_msg_received(self, classroom, chan, sender, text):
1806 matches = re.search(r'\[(?i)SLIDE\s+(\d+).*\]', text)
1807 if matches and self._session_slide_downloaded:
1808- if chan.is_moderated() or self._on_faculty(sender):
1809+ if self._on_faculty(sender):
1810 self._change_slide_page(int(matches.groups()[0]))
1811 return
1812 matches = re.search(r'\[(?i)SLIDEFILE\s+(\S+)\s+(\d+).*\]', text)
1813 if matches:
1814- if chan.is_moderated() or self._on_faculty(sender):
1815+ if self._on_faculty(sender):
1816 self._download_slides(matches.groups()[0], int(matches.groups()[1]))
1817 return
1818 matches = re.search(r'\[(?i)SLIDEFILE\s+(\S+).*\]', text)
1819 if matches:
1820- if chan.is_moderated() or self._on_faculty(sender):
1821+ if self._on_faculty(sender):
1822 self._download_slides(matches.groups()[0], 1)
1823 return
1824
1825@@ -137,10 +148,21 @@
1826 return
1827 page = pdf.get_page(int(pagenumber) - 1)
1828 w, h = page.get_size()
1829- pixbuf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, int(w), int(h))
1830- page.render_to_pixbuf(0,0,int(w),int(h),1,0, pixbuf)
1831+ w, h = (int(w), int(h))
1832+ surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, w, h)
1833+ context = cairo.Context(surface)
1834+ page.render(context)
1835+ # technique from diogodivision's "BlingSwitcher",
1836+ # through http://www.mikedesjardins.net
1837+ temp = StringIO.StringIO()
1838+ surface.write_to_png(temp)
1839+ temp.seek(0)
1840+ loader = gtk.gdk.PixbufLoader()
1841+ loader.write(temp.getvalue())
1842+ loader.close()
1843+ pixbuf = loader.get_pixbuf()
1844 except:
1845- Statusbar.push_message(_('An error was encountered while trying to load slide number {0}'.format(pagenumber)), duration=120)
1846+ Statusbar.push_message(_('An error was encountered while trying to load slide number {0}'.format(pagenumber)), 'slidesession', duration=15)
1847 logging.debug("Something went wrong when loading slide %s" % pagenumber)
1848 return
1849 self._master_slide = pixbuf
1850@@ -173,8 +195,27 @@
1851 self._image.set_from_pixbuf(newpb)
1852 self._image.show()
1853
1854+ @staticmethod
1855+ def _retry(n): # retry generator
1856+ for i in range(n):
1857+ yield random.randint(30,120) # random delay until retry
1858+ while 1: yield False
1859+
1860 def _download_slides(self, slideurl, page):
1861+ if self._slide_retry:
1862+ glib.source_remove(self._slide_retry)
1863+ self._slide_retry = None
1864+ if self._cancellable:
1865+ self._cancellable.cancel()
1866+ self._cancellable = None
1867+ self._retries = self._retry(3).next # retry generator obj. next method
1868+ self._download_slides_attempt(slideurl, page)
1869+
1870+ def _download_slides_attempt(self, slideurl, page):
1871+ self._slide_retry = None
1872+ Statusbar.pop_message('slidesession')
1873 path = os.path.join(save_cache_path('lernid'), 'slides.pdf')
1874+ cancellable = gio.Cancellable()
1875 try:
1876 logging.debug('downloading slides from %s' % slideurl)
1877 slidefile = gio.File(slideurl)
1878@@ -187,16 +228,27 @@
1879 def reporthook(done_so_far, size):
1880 Statusbar.pop_message('slidesession')
1881 msg = _('Downloading session slides (%i%% of %i KB)...') % (100*(float(done_so_far) / float(size)), float(size)/float(1024))
1882- Statusbar.push_message(msg, 'slidesession')
1883- def download_done(giofile, result, self):
1884+ Statusbar.push_message(msg, 'slidesession', duration=3)
1885+ def download_done(giofile, result, stuff):
1886+ self, slideurl, page, cancellable = stuff
1887 try:
1888 giofile.copy_finish(result)
1889+ self._cancellable = None
1890 except gio.Error, information:
1891- Statusbar.push_message(_('An error was encountered while downloading slides'), 'slidesession')
1892+ Statusbar.push_message(_('An error was encountered while downloading slides'), 'slidesession', duration=120)
1893 logging.debug('Error when downloading slides from %s; %s' % (slideurl, information))
1894+ secs = self._retries()
1895+ if secs and not cancellable.is_cancelled():
1896+ logging.error( \
1897+ 'Retrying slide download in %i secs' % secs)
1898+ self._slide_retry = glib.timeout_add_seconds(secs,
1899+ self._download_slides_attempt, slideurl,
1900+ page)
1901+ else:
1902+ logging.error('Slide downloading failed')
1903 return
1904- logging.debug('slide download completed')
1905- Statusbar.push_message(_('Slides have been downloaded'), 'slidesession')
1906+ logging.debug('Slide download completed')
1907+ Statusbar.push_message(_('Slides have been downloaded'), 'slidesession', duration=10)
1908 self._session_slide_downloaded = True
1909 self.emit('slides-downloaded')
1910 self._top.set_tooltip_text(slideurl)
1911@@ -206,12 +258,19 @@
1912 self._open_slides_in_browser,
1913 slideurl)
1914 self._change_slide_page(page)
1915- slidefile.copy_async(destfile, download_done, reporthook, user_data=self, flags=gio.FILE_COPY_OVERWRITE)
1916+ slidefile.copy_async(destfile, download_done, reporthook, cancellable=cancellable, user_data=(self, slideurl, page, cancellable), flags=gio.FILE_COPY_OVERWRITE)
1917+ self._cancellable = cancellable
1918 except gio.Error, information:
1919- Statusbar.push_message(_('An error was encountered while downloading slides'), 'slidesession')
1920+ Statusbar.push_message(_('An error was encountered while downloading slides'), 'slidesession', duration=120)
1921 logging.debug('Error when downloading slides from %s; %s' % (slideurl, information))
1922
1923 def _session_changed(self, schedule, session):
1924+ if self._slide_retry:
1925+ glib.source_remove(self._slide_retry)
1926+ self._slide_retry = None
1927+ if self._cancellable:
1928+ self._cancellable.cancel()
1929+ self._cancellable = None
1930 Statusbar.pop_message('slidesession')
1931 if session.slides:
1932 self._download_slides(session.slides, 1)
1933@@ -222,9 +281,15 @@
1934 if self._slidebutton_cb:
1935 self._slidebutton.disconnect(self._slidebutton_cb)
1936 self._slidebutton_cb = None
1937- Statusbar.push_message(_('This session does not use slides'), 'slidesession')
1938+ Statusbar.push_message(_('This session does not use slides'), 'slidesession', duration=10)
1939
1940 def _session_ended(self, schedule):
1941+ if self._slide_retry:
1942+ glib.source_remove(self._slide_retry)
1943+ self._slide_retry = None
1944+ if self._cancellable:
1945+ self._cancellable.cancel()
1946+ self._cancellable = None
1947 self._image.clear()
1948 self.hide()
1949 Statusbar.pop_message('slidesession')
1950@@ -234,4 +299,4 @@
1951 self._slidebutton_cb = None
1952
1953 def _open_slides_in_browser(self, widget, url):
1954- webbrowser.open_new_tab(url)
1955+ gtk.show_uri(None, url, gtk.gdk.CURRENT_TIME)
1956
1957=== modified file 'po/af.po'
1958--- po/af.po 2010-08-30 04:10:04 +0000
1959+++ po/af.po 2012-05-07 00:49:19 +0000
1960@@ -8,21 +8,22 @@
1961 "Project-Id-Version: lernid\n"
1962 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1963 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
1964-"PO-Revision-Date: 2010-08-29 13:53+0000\n"
1965-"Last-Translator: Andre Hugo <Unknown>\n"
1966+"PO-Revision-Date: 2011-06-04 11:37+0000\n"
1967+"Last-Translator: John S. Gruber <JohnSGruber@gmail.com>\n"
1968 "Language-Team: Afrikaans <af@li.org>\n"
1969 "MIME-Version: 1.0\n"
1970 "Content-Type: text/plain; charset=UTF-8\n"
1971 "Content-Transfer-Encoding: 8bit\n"
1972 "Plural-Forms: nplurals=2; plural=n != 1;\n"
1973-"X-Launchpad-Export-Date: 2010-08-30 04:10+0000\n"
1974-"X-Generator: Launchpad (build Unknown)\n"
1975+"X-Launchpad-Export-Date: 2011-06-05 04:50+0000\n"
1976+"X-Generator: Launchpad (build 12959)\n"
1977
1978 #: ../data/ui/AboutLernidDialog.ui.h:1
1979 msgid "translator-credits"
1980 msgstr ""
1981 "Launchpad Contributions:\n"
1982-" Andre Hugo https://launchpad.net/~cortexhugo"
1983+" Andre Hugo https://launchpad.net/~cortexhugo\n"
1984+" John S. Gruber https://launchpad.net/~jsjgruber"
1985
1986 #: ../data/ui/PasswordDialog.ui.h:1
1987 msgid "Invalid password"
1988
1989=== modified file 'po/ar.po'
1990--- po/ar.po 2010-08-03 03:57:01 +0000
1991+++ po/ar.po 2012-05-07 00:49:19 +0000
1992@@ -8,7 +8,7 @@
1993 "Project-Id-Version: lernid\n"
1994 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
1995 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
1996-"PO-Revision-Date: 2010-08-02 16:46+0000\n"
1997+"PO-Revision-Date: 2011-06-04 11:31+0000\n"
1998 "Last-Translator: Michael Budde <mbudde@gmail.com>\n"
1999 "Language-Team: Arabic <ar@li.org>\n"
2000 "MIME-Version: 1.0\n"
2001@@ -16,15 +16,15 @@
2002 "Content-Transfer-Encoding: 8bit\n"
2003 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n % 100 >= "
2004 "3 && n % 100 <= 10 ? 3 : n % 100 >= 11 && n % 100 <= 99 ? 4 : 5;\n"
2005-"X-Launchpad-Export-Date: 2010-08-03 03:56+0000\n"
2006-"X-Generator: Launchpad (build Unknown)\n"
2007+"X-Launchpad-Export-Date: 2011-06-05 04:50+0000\n"
2008+"X-Generator: Launchpad (build 12959)\n"
2009
2010 #: ../data/ui/AboutLernidDialog.ui.h:1
2011 msgid "translator-credits"
2012 msgstr ""
2013 "Launchpad Contributions:\n"
2014 " MaXo https://launchpad.net/~mahmood-188\n"
2015-" Majd Aldin Almontaser https://launchpad.net/~ttmtt-team\n"
2016+" Magd Addin M. Almuntaser https://launchpad.net/~ttmtt-team\n"
2017 " Michael Budde https://launchpad.net/~mbudde\n"
2018 " Yazin Alhamdi https://launchpad.net/~yazin-alhamdi\n"
2019 " m.ayad https://launchpad.net/~m-ayad"
2020
2021=== modified file 'po/da.po'
2022--- po/da.po 2010-09-07 05:01:51 +0000
2023+++ po/da.po 2012-05-07 00:49:19 +0000
2024@@ -8,15 +8,15 @@
2025 "Project-Id-Version: lernid\n"
2026 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
2027 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
2028-"PO-Revision-Date: 2010-09-06 15:36+0000\n"
2029-"Last-Translator: AJenbo <anders@jenbo.dk>\n"
2030+"PO-Revision-Date: 2011-07-06 08:46+0000\n"
2031+"Last-Translator: Michael Budde <mbudde@gmail.com>\n"
2032 "Language-Team: Danish <da@li.org>\n"
2033 "MIME-Version: 1.0\n"
2034 "Content-Type: text/plain; charset=UTF-8\n"
2035 "Content-Transfer-Encoding: 8bit\n"
2036 "Plural-Forms: nplurals=2; plural=n != 1;\n"
2037-"X-Launchpad-Export-Date: 2010-09-07 05:01+0000\n"
2038-"X-Generator: Launchpad (build Unknown)\n"
2039+"X-Launchpad-Export-Date: 2011-07-07 04:52+0000\n"
2040+"X-Generator: Launchpad (build 13168)\n"
2041
2042 #: ../data/ui/AboutLernidDialog.ui.h:1
2043 msgid "translator-credits"
2044@@ -219,7 +219,7 @@
2045
2046 #: ../data/ui/BrowserWidget.ui.h:1
2047 msgid "Stop browser from changing page"
2048-msgstr ""
2049+msgstr "Stop browser fra at skifte side"
2050
2051 #: ../lernid/widgets/Classroom.py:78
2052 msgid "Joined classroom"
2053@@ -311,6 +311,18 @@
2054 #~ msgid "gtk-ok"
2055 #~ msgstr "gtk-ok"
2056
2057+#~ msgid "<b>Resources</b>"
2058+#~ msgstr "<b>Ressourcer</b>"
2059+
2060+#~ msgid "<b>Classroom</b>"
2061+#~ msgstr "Klasseværelse"
2062+
2063+#~ msgid "<b>Chatroom</b>"
2064+#~ msgstr "Chatrum"
2065+
2066+#~ msgid "<b>Schedule</b>"
2067+#~ msgstr "Kursus-plan"
2068+
2069 #~ msgid "David Planella <david.planella@ubuntu.com>"
2070 #~ msgstr "David Planella <david.planella@ubuntu.com>"
2071
2072
2073=== modified file 'po/de.po'
2074--- po/de.po 2011-05-17 19:55:17 +0000
2075+++ po/de.po 2012-05-07 00:49:19 +0000
2076@@ -8,15 +8,15 @@
2077 "Project-Id-Version: lernid\n"
2078 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
2079 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
2080-"PO-Revision-Date: 2010-10-24 13:24+0000\n"
2081+"PO-Revision-Date: 2011-06-04 12:11+0000\n"
2082 "Last-Translator: cmdrhenner <cmdrhenner@gmail.com>\n"
2083 "Language-Team: German <de@li.org>\n"
2084 "MIME-Version: 1.0\n"
2085 "Content-Type: text/plain; charset=UTF-8\n"
2086 "Content-Transfer-Encoding: 8bit\n"
2087 "Plural-Forms: nplurals=2; plural=n != 1;\n"
2088-"X-Launchpad-Export-Date: 2010-10-25 04:46+0000\n"
2089-"X-Generator: Launchpad (build Unknown)\n"
2090+"X-Launchpad-Export-Date: 2011-06-05 04:50+0000\n"
2091+"X-Generator: Launchpad (build 12959)\n"
2092
2093 #: ../data/ui/AboutLernidDialog.ui.h:1
2094 msgid "translator-credits"
2095@@ -24,14 +24,15 @@
2096 "Launchpad Contributions:\n"
2097 " AnSc https://launchpad.net/~spam2-anschitech\n"
2098 " Bernd Schlapsi https://launchpad.net/~bernd-sch\n"
2099-" BuZZ-dEE https://launchpad.net/~buzz-dee\n"
2100 " Dennis Lichtenthäler https://launchpad.net/~pvbcharon\n"
2101 " Jakob Kramer https://launchpad.net/~jakobk\n"
2102 " Johannes Möller https://launchpad.net/~jojo-moeller\n"
2103 " Michael Keppler https://launchpad.net/~bananeweizen\n"
2104-" MixCool https://launchpad.net/~mixcool\n"
2105 " Nico Gulden https://launchpad.net/~ngulden\n"
2106+" Sebastian Schlatow https://launchpad.net/~buzz-dee\n"
2107+" SpaceCafé https://launchpad.net/~spacecafe\n"
2108 " Tobias Baldauf https://launchpad.net/~technopagan\n"
2109+" cmdrhenner https://launchpad.net/~cmdrhenner\n"
2110 " mogli https://launchpad.net/~patrick-kohan\n"
2111 " sebastian-s https://launchpad.net/~sebastian-s"
2112
2113@@ -365,6 +366,12 @@
2114 #~ msgid "Browser"
2115 #~ msgstr "Browser"
2116
2117+#~ msgid "Use vertical window layout"
2118+#~ msgstr "Benutze vertikales Fensterlayout"
2119+
2120+#~ msgid "Nick can not contain other characters that A-Z"
2121+#~ msgstr "Spitzname kann keine anderen Zeichen als A-Z enthalten"
2122+
2123 #~ msgid "Even_t"
2124 #~ msgstr "_Veranstaltung"
2125
2126
2127=== modified file 'po/en_AU.po'
2128--- po/en_AU.po 2009-12-28 04:53:45 +0000
2129+++ po/en_AU.po 2012-05-07 00:49:19 +0000
2130@@ -7,126 +7,324 @@
2131 msgstr ""
2132 "Project-Id-Version: lernid\n"
2133 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
2134-"POT-Creation-Date: 2009-12-23 02:11-0800\n"
2135-"PO-Revision-Date: 2009-12-27 06:11+0000\n"
2136-"Last-Translator: Martin Alderson <martin.alderson@limepath.com>\n"
2137+"POT-Creation-Date: 2010-08-02 16:11+0200\n"
2138+"PO-Revision-Date: 2011-08-01 05:00+0000\n"
2139+"Last-Translator: Jared Norris <jrnorris@gmail.com>\n"
2140 "Language-Team: English (Australia) <en_AU@li.org>\n"
2141 "MIME-Version: 1.0\n"
2142 "Content-Type: text/plain; charset=UTF-8\n"
2143 "Content-Transfer-Encoding: 8bit\n"
2144-"X-Launchpad-Export-Date: 2009-12-28 04:53+0000\n"
2145-"X-Generator: Launchpad (build Unknown)\n"
2146+"Plural-Forms: nplurals=2; plural=n != 1;\n"
2147+"X-Launchpad-Export-Date: 2011-08-02 04:47+0000\n"
2148+"X-Generator: Launchpad (build 13552)\n"
2149+
2150+#: ../data/ui/AboutLernidDialog.ui.h:1
2151+msgid "translator-credits"
2152+msgstr ""
2153+"Launchpad Contributions:\n"
2154+" Colin Dean https://launchpad.net/~colindean\n"
2155+" Daniel Bell https://launchpad.net/~danielbell\n"
2156+" Jared Norris https://launchpad.net/~jarednorris\n"
2157+" Martin Alderson https://launchpad.net/~martinalderson\n"
2158+" Steve Garton https://launchpad.net/~sheepeatingtaz"
2159+
2160+#: ../data/ui/PasswordDialog.ui.h:1
2161+msgid "Invalid password"
2162+msgstr "Invalid password"
2163+
2164+#: ../data/ui/PasswordDialog.ui.h:2
2165+msgid ""
2166+"The NickServ password you entered was invalid.\n"
2167+"Please enter the correct password:"
2168+msgstr ""
2169+"The NickServ password you entered was invalid.\n"
2170+"Please enter the correct password:"
2171+
2172+#. Translators: Local time representation
2173+#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:55
2174+#: ../lernid/Sessions.py:60
2175+msgid "%H:%M"
2176+msgstr "%H:%M"
2177+
2178+#: ../data/ui/PreferencesLernidDialog.ui.h:1
2179+msgid ""
2180+"<i>You need to restart Lernid for some of the changes to take effect.</i>"
2181+msgstr ""
2182+"<i>You need to restart Lernid for some of the changes to take effect.</i>"
2183+
2184+#: ../data/ui/PreferencesLernidDialog.ui.h:2
2185+msgid "Show an icon in the notification area"
2186+msgstr "Show an icon in the notification area"
2187+
2188+#: ../data/ui/PreferencesLernidDialog.ui.h:3
2189+msgid "Show time in classroom and chatroom"
2190+msgstr "Show time in classroom and chatroom"
2191+
2192+#: ../data/ui/PreferencesLernidDialog.ui.h:4
2193+msgid "Use vertical layout"
2194+msgstr "Use vertical layout"
2195+
2196+#: ../lernid/EventManager.py:96
2197+msgid "Connecting to event"
2198+msgstr "Connecting to event"
2199+
2200+#: ../lernid/EventManager.py:104
2201+msgid "Your nickname is now identified"
2202+msgstr "Your nickname is now identified"
2203+
2204+#: ../lernid/EventManager.py:139
2205+msgid "Disconnecting from event"
2206+msgstr "Disconnecting from event"
2207+
2208+#: ../lernid/widgets/Slide.py:109
2209+msgid "An error was encountered while trying to load slide number {0}"
2210+msgstr "An error was encountered while trying to load slide number {0}"
2211+
2212+#: ../lernid/widgets/Slide.py:148
2213+#, python-format
2214+msgid "Downloading session slides ({0} % of {1:.1} MB)..."
2215+msgstr "Downloading session slides ({0} % of {1:.1} MB)..."
2216+
2217+#: ../lernid/widgets/Slide.py:151
2218+msgid "Slides have been downloaded"
2219+msgstr "Slides have been downloaded"
2220+
2221+#: ../lernid/widgets/Slide.py:156
2222+msgid "An error was encountered while downloading slides"
2223+msgstr "An error was encountered while downloading slides"
2224+
2225+#: ../lernid/widgets/Slide.py:168
2226+msgid "This session does not use slides"
2227+msgstr "This session does not use slides"
2228
2229 #: ../data/ui/LernidWindow.ui.h:1
2230-msgid "Browser"
2231-msgstr "Browser"
2232+msgid "Classroom"
2233+msgstr "Classroom"
2234
2235 #: ../data/ui/LernidWindow.ui.h:2
2236-msgid "Chatroom"
2237-msgstr "Chatroom"
2238+msgid "Enter the address you would like to open in the browser:"
2239+msgstr "Enter the address you would like to open in the browser:"
2240
2241 #: ../data/ui/LernidWindow.ui.h:3
2242-msgid "Classroom"
2243-msgstr "Classroom"
2244+msgid "Eve_nt"
2245+msgstr "Eve_nt"
2246
2247-#: ../data/ui/LernidWindow.ui.h:4 ../lernid.desktop.in.h:1
2248+#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130
2249+#: ../lernid.desktop.in.h:1
2250 msgid "Lernid"
2251 msgstr "Lernid"
2252
2253 #: ../data/ui/LernidWindow.ui.h:5
2254-msgid "Not Connected."
2255-msgstr "Not Connected."
2256+msgid "Open _URL..."
2257+msgstr "Open _URL..."
2258
2259 #: ../data/ui/LernidWindow.ui.h:6
2260-msgid "Session"
2261-msgstr "Session"
2262+msgid "Tweet current session"
2263+msgstr "Tweet current session"
2264
2265 #: ../data/ui/LernidWindow.ui.h:7
2266-msgid "_Event"
2267-msgstr "_Event"
2268+msgid "_Chatroom"
2269+msgstr "_Chatroom"
2270
2271 #: ../data/ui/LernidWindow.ui.h:8
2272+msgid "_Edit"
2273+msgstr "_Edit"
2274+
2275+#: ../data/ui/LernidWindow.ui.h:9
2276+msgid "_Fullscreen"
2277+msgstr "_Fullscreen"
2278+
2279+#: ../data/ui/LernidWindow.ui.h:10
2280 msgid "_Help"
2281 msgstr "_Help"
2282
2283-#: ../data/ui/AboutLernidDialog.ui.h:1
2284-msgid "Connect to a world of online tutorials quickly and easily."
2285-msgstr "Connect to a world of online tutorials quickly and easily."
2286-
2287-#: ../data/ui/AboutLernidDialog.ui.h:2
2288-msgid ""
2289-"Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
2290-"This program is free software: you can redistribute it and/or modify it "
2291-"under the terms of the GNU General Public License version 3, as published by "
2292-"the Free Software Foundation.\n"
2293-"\n"
2294-"This program is distributed in the hope that it will be useful, but WITHOUT "
2295-"ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
2296-"SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
2297-"General Public License for more details.\n"
2298-"\n"
2299-"You should have received a copy of the GNU General Public License along "
2300-"with this program. If not, see <http://www.gnu.org/licenses/>."
2301-msgstr ""
2302-"Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
2303-"This program is free software: you can redistribute it and/or modify it "
2304-"under the terms of the GNU General Public License version 3, as published by "
2305-"the Free Software Foundation.\n"
2306-"\n"
2307-"This program is distributed in the hope that it will be useful, but WITHOUT "
2308-"ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
2309-"SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
2310-"General Public License for more details.\n"
2311-"\n"
2312-"You should have received a copy of the GNU General Public License along "
2313-"with this program. If not, see <http://www.gnu.org/licenses/>."
2314-
2315-#: ../data/ui/AboutLernidDialog.ui.h:8
2316-msgid "translator-credits"
2317-msgstr ""
2318-"Launchpad Contributions:\n"
2319-" Colin Dean https://launchpad.net/~colindean\n"
2320-" Martin Alderson https://launchpad.net/~martinalderson\n"
2321-" Steve Garton https://launchpad.net/~sheepeatingtaz"
2322-
2323-#: ../lernid.desktop.in.h:2
2324-msgid "Participate in online learning events"
2325-msgstr "Participate in online learning events"
2326+#: ../data/ui/LernidWindow.ui.h:11
2327+msgid "_Statusbar"
2328+msgstr "_Statusbar"
2329+
2330+#: ../data/ui/LernidWindow.ui.h:12
2331+msgid "_View"
2332+msgstr "_View"
2333+
2334+#: ../bin/lernid.py:141 ../bin/lernid.py:144 ../bin/lernid.py:199
2335+msgid "_Session"
2336+msgstr "_Session"
2337+
2338+#: ../bin/lernid.py:208
2339+msgid "Sche_dule"
2340+msgstr "Sche_dule"
2341+
2342+#: ../bin/lernid.py:215
2343+msgid "_Terminal"
2344+msgstr "_Terminal"
2345+
2346+#: ../bin/lernid.py:226
2347+msgid "({0} user)"
2348+msgid_plural "({0} users)"
2349+msgstr[0] "({0} user)"
2350+msgstr[1] "({0} users)"
2351+
2352+#: ../bin/lernid.py:290
2353+msgid "_Show Lernid"
2354+msgstr "_Show Lernid"
2355+
2356+#: ../bin/lernid.py:333
2357+msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."
2358+msgstr "The session \"{0}\" has started in #ubuntu-classroom on freenode."
2359+
2360+#: ../bin/lernid.py:424
2361+msgid "Show debug messages"
2362+msgstr "Show debug messages"
2363+
2364+#: ../bin/lernid.py:426
2365+msgid "Override classroom channel"
2366+msgstr "Override classroom channel"
2367+
2368+#: ../bin/lernid.py:428
2369+msgid "Filename or URL to Lernid config file"
2370+msgstr "Filename or URL to Lernid config file"
2371+
2372+#: ../bin/lernid.py:430
2373+msgid "Use web chat widget instead of the native one"
2374+msgstr "Use web chat widget instead of the native one"
2375+
2376+#: ../lernid/widgets/Schedule.py:80
2377+msgid "Date"
2378+msgstr "Date"
2379+
2380+#: ../lernid/widgets/Schedule.py:88
2381+msgid "Starts"
2382+msgstr "Starts"
2383+
2384+#: ../lernid/widgets/Schedule.py:96
2385+msgid "Ends"
2386+msgstr "Ends"
2387+
2388+#: ../lernid/widgets/Schedule.py:104 ../lernid/widgets/Schedule.py:109
2389+msgid "Title"
2390+msgstr "Title"
2391+
2392+#: ../lernid/widgets/Schedule.py:163
2393+msgid "Session started"
2394+msgstr "Session started"
2395+
2396+#: ../lernid/widgets/Schedule.py:164
2397+msgid "The session \"{0}\" has started."
2398+msgstr "The session \"{0}\" has started."
2399+
2400+#: ../lernid/widgets/Schedule.py:173
2401+msgid "Session upcoming"
2402+msgstr "Session upcoming"
2403+
2404+#: ../lernid/widgets/Schedule.py:174
2405+msgid "The session \"{0}\" will begin in 10 minutes."
2406+msgstr "The session \"{0}\" will begin in 10 minutes."
2407+
2408+#: ../data/ui/BrowserWidget.ui.h:1
2409+msgid "Stop browser from changing page"
2410+msgstr "Stop browser from changing page"
2411+
2412+#: ../lernid/widgets/Classroom.py:78
2413+msgid "Joined classroom"
2414+msgstr "Joined classroom"
2415
2416 #: ../data/ui/ConnectDialog.ui.h:1
2417+msgid "Advanced options"
2418+msgstr "Advanced options"
2419+
2420+#: ../data/ui/ConnectDialog.ui.h:2
2421 msgid "Choose an event"
2422 msgstr "Choose an event"
2423
2424-#: ../data/ui/ConnectDialog.ui.h:2
2425-msgid "Event"
2426-msgstr "Event"
2427-
2428 #: ../data/ui/ConnectDialog.ui.h:3
2429-msgid "Nickname"
2430-msgstr "Nickname"
2431-
2432-#. Translators: this is in strftime format. See http://docs.python.org/library/time.html#time.strftime
2433-#. This is the format of the displayed date.
2434-#. The month name is localized: it defaults to something like "15 June 2010" for 'en' or "15 Juin 2009" for 'fr', etc.
2435-#: ../bin/lernid.py:205
2436+msgid "Event:"
2437+msgstr "Event:"
2438+
2439+#: ../data/ui/ConnectDialog.ui.h:4
2440+msgid "NickServ password:"
2441+msgstr "NickServ password:"
2442+
2443+#: ../data/ui/ConnectDialog.ui.h:5
2444+msgid "Nickname:"
2445+msgstr "Nickname:"
2446+
2447+#: ../lernid.desktop.in.h:2
2448+msgid "Participate in online learning events"
2449+msgstr "Participate in online learning events"
2450+
2451+#. Translators: Local date representation
2452+#: ../lernid/Sessions.py:50
2453 msgid "%d %B %Y"
2454-msgstr ""
2455-
2456-#: ../bin/lernid.py:244
2457-msgid "' session is starting..."
2458-msgstr "' session is starting..."
2459-
2460-#: ../bin/lernid.py:364 ../bin/lernid.py:365
2461-msgid "Connected to "
2462-msgstr "Connected to "
2463-
2464-#: ../bin/lernid.py:394
2465-msgid "Disconnecting from "
2466-msgstr "Disconnecting from "
2467-
2468-#: ../bin/lernid.py:486
2469-msgid "Show debug messages"
2470-msgstr "Show debug messages"
2471+msgstr "%d %B %Y"
2472+
2473+#: ../lernid/ConnectDialog.py:111
2474+msgid "Nick can not be blank"
2475+msgstr "Nick can not be blank"
2476+
2477+#: ../lernid/ConnectDialog.py:115
2478+#, python-format
2479+msgid "Nick can not begin with: %s"
2480+msgstr "Nick can not begin with: %s"
2481+
2482+#: ../lernid/ConnectDialog.py:119
2483+msgid "Nick can not contain blank spaces."
2484+msgstr "Nick can not contain blank spaces."
2485+
2486+#: ../lernid/ConnectDialog.py:119
2487+#, python-format
2488+msgid "Nick can not contain: %s"
2489+msgstr "Nick can not contain: %s"
2490+
2491+#: ../lernid/ConnectDialog.py:122
2492+msgid "Nick can only contain English alphabet characters"
2493+msgstr "Nick can only contain English alphabet characters"
2494+
2495+#: ../lernid/lernidconfig.py:33
2496+msgid "Connect to a world of online tutorials quickly and easily."
2497+msgstr "Connect to a world of online tutorials quickly and easily."
2498+
2499+#: ../lernid/widgets/NativeChatroom.py:164
2500+msgid "IRC commands are not yet supported."
2501+msgstr "IRC commands are not yet supported."
2502+
2503+#~ msgid "Not Connected."
2504+#~ msgstr "Not Connected."
2505+
2506+#~ msgid "_Event"
2507+#~ msgstr "_Event"
2508+
2509+#~ msgid "Nickname"
2510+#~ msgstr "Nickname"
2511+
2512+#~ msgid ""
2513+#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
2514+#~ "This program is free software: you can redistribute it and/or modify it "
2515+#~ "under the terms of the GNU General Public License version 3, as published by "
2516+#~ "the Free Software Foundation.\n"
2517+#~ "\n"
2518+#~ "This program is distributed in the hope that it will be useful, but WITHOUT "
2519+#~ "ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
2520+#~ "SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
2521+#~ "General Public License for more details.\n"
2522+#~ "\n"
2523+#~ "You should have received a copy of the GNU General Public License along "
2524+#~ "with this program. If not, see <http://www.gnu.org/licenses/>."
2525+#~ msgstr ""
2526+#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
2527+#~ "This program is free software: you can redistribute it and/or modify it "
2528+#~ "under the terms of the GNU General Public License version 3, as published by "
2529+#~ "the Free Software Foundation.\n"
2530+#~ "\n"
2531+#~ "This program is distributed in the hope that it will be useful, but WITHOUT "
2532+#~ "ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
2533+#~ "SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
2534+#~ "General Public License for more details.\n"
2535+#~ "\n"
2536+#~ "You should have received a copy of the GNU General Public License along "
2537+#~ "with this program. If not, see <http://www.gnu.org/licenses/>."
2538+
2539+#~ msgid "Event"
2540+#~ msgstr "Event"
2541
2542 #~ msgid "Lernid application"
2543 #~ msgstr "Lernid application"
2544@@ -137,8 +335,38 @@
2545 #~ msgid "gtk-ok"
2546 #~ msgstr "gtk-ok"
2547
2548+#~ msgid "<b>Resources</b>"
2549+#~ msgstr "<b>Resources</b>"
2550+
2551+#~ msgid "<b>Classroom</b>"
2552+#~ msgstr "<b>Classroom</b>"
2553+
2554+#~ msgid "<b>Chatroom</b>"
2555+#~ msgstr "<b>Chatroom</b>"
2556+
2557+#~ msgid "<b>Schedule</b>"
2558+#~ msgstr "<b>Schedule</b>"
2559+
2560 #~ msgid "David Planella <david.planella@ubuntu.com>"
2561 #~ msgstr "David Planella <david.planella@ubuntu.com>"
2562
2563+#~ msgid "Connected to "
2564+#~ msgstr "Connected to "
2565+
2566+#~ msgid "Disconnecting from "
2567+#~ msgstr "Disconnecting from "
2568+
2569+#~ msgid "Chatroom"
2570+#~ msgstr "Chatroom"
2571+
2572+#~ msgid "Browser"
2573+#~ msgstr "Browser"
2574+
2575 #~ msgid "Schedule"
2576 #~ msgstr "Schedule"
2577+
2578+#~ msgid "Session"
2579+#~ msgstr "Session"
2580+
2581+#~ msgid "' session is starting..."
2582+#~ msgstr "' session is starting..."
2583
2584=== modified file 'po/en_CA.po'
2585--- po/en_CA.po 2010-09-04 04:57:57 +0000
2586+++ po/en_CA.po 2012-05-07 00:49:19 +0000
2587@@ -8,15 +8,15 @@
2588 "Project-Id-Version: lernid\n"
2589 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
2590 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
2591-"PO-Revision-Date: 2010-09-03 11:40+0000\n"
2592-"Last-Translator: Ken Sharp <Unknown>\n"
2593+"PO-Revision-Date: 2011-06-04 11:44+0000\n"
2594+"Last-Translator: John S. Gruber <JohnSGruber@gmail.com>\n"
2595 "Language-Team: English (Canada) <en_CA@li.org>\n"
2596 "MIME-Version: 1.0\n"
2597 "Content-Type: text/plain; charset=UTF-8\n"
2598 "Content-Transfer-Encoding: 8bit\n"
2599 "Plural-Forms: nplurals=2; plural=n != 1;\n"
2600-"X-Launchpad-Export-Date: 2010-09-04 04:57+0000\n"
2601-"X-Generator: Launchpad (build Unknown)\n"
2602+"X-Launchpad-Export-Date: 2011-06-05 04:50+0000\n"
2603+"X-Generator: Launchpad (build 12959)\n"
2604
2605 #: ../data/ui/AboutLernidDialog.ui.h:1
2606 msgid "translator-credits"
2607@@ -24,6 +24,7 @@
2608 "Launchpad Contributions:\n"
2609 " Colin Dean https://launchpad.net/~colindean\n"
2610 " Daniel Bell https://launchpad.net/~danielbell\n"
2611+" John S. Gruber https://launchpad.net/~jsjgruber\n"
2612 " Jono Bacon https://launchpad.net/~jonobacon\n"
2613 " Ken Sharp https://launchpad.net/~kennybobs\n"
2614 " Luke Hollins https://launchpad.net/~lwh\n"
2615@@ -340,6 +341,18 @@
2616 #~ msgid "David Planella <david.planella@ubuntu.com>"
2617 #~ msgstr "David Planella <david.planella@ubuntu.com>"
2618
2619+#~ msgid "<b>Resources</b>"
2620+#~ msgstr "<b>Resources</b>"
2621+
2622+#~ msgid "<b>Classroom</b>"
2623+#~ msgstr "<b>Classroom</b>"
2624+
2625+#~ msgid "<b>Chatroom</b>"
2626+#~ msgstr "<b>Chatroom</b>"
2627+
2628+#~ msgid "<b>Schedule</b>"
2629+#~ msgstr "<b>Schedule</b>"
2630+
2631 #~ msgid "Connected to "
2632 #~ msgstr "Connected to "
2633
2634
2635=== modified file 'po/es.po'
2636--- po/es.po 2010-10-18 05:03:19 +0000
2637+++ po/es.po 2012-05-07 00:49:19 +0000
2638@@ -8,15 +8,15 @@
2639 "Project-Id-Version: lernid\n"
2640 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
2641 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
2642-"PO-Revision-Date: 2010-10-17 12:37+0000\n"
2643-"Last-Translator: DiegoJ <diegojromerolopez@gmail.com>\n"
2644+"PO-Revision-Date: 2011-09-12 10:01+0000\n"
2645+"Last-Translator: Fitoschido <fitoschido@gmail.com>\n"
2646 "Language-Team: Spanish <es@li.org>\n"
2647 "MIME-Version: 1.0\n"
2648 "Content-Type: text/plain; charset=UTF-8\n"
2649 "Content-Transfer-Encoding: 8bit\n"
2650 "Plural-Forms: nplurals=2; plural=n != 1;\n"
2651-"X-Launchpad-Export-Date: 2010-10-18 05:03+0000\n"
2652-"X-Generator: Launchpad (build Unknown)\n"
2653+"X-Launchpad-Export-Date: 2011-09-13 04:56+0000\n"
2654+"X-Generator: Launchpad (build 13910)\n"
2655
2656 #: ../data/ui/AboutLernidDialog.ui.h:1
2657 msgid "translator-credits"
2658@@ -27,20 +27,18 @@
2659 " DiegoJ https://launchpad.net/~diegojromerolopez\n"
2660 " EdwinCartagenaH https://launchpad.net/~edwincartagenah\n"
2661 " Emilien Klein https://launchpad.net/~emilien-klein\n"
2662-" Hector Louzao https://launchpad.net/~hhlp\n"
2663+" Fitoschido https://launchpad.net/~fitoschido\n"
2664 " Hollman Enciso https://launchpad.net/~hollman\n"
2665-" Ilan https://launchpad.net/~ilan\n"
2666 " Jono Bacon https://launchpad.net/~jonobacon\n"
2667 " Jose Ernesto Davila https://launchpad.net/~josernestodavila\n"
2668-" Julián Alarcón https://launchpad.net/~alarconj\n"
2669 " Kamus https://launchpad.net/~kamus\n"
2670 " Leandro Gómez https://launchpad.net/~leogg\n"
2671 " Monkey https://launchpad.net/~monkey-libre\n"
2672-" fgp https://launchpad.net/~komakino"
2673+" hhlp https://launchpad.net/~hhlp"
2674
2675 #: ../data/ui/PasswordDialog.ui.h:1
2676 msgid "Invalid password"
2677-msgstr "Contraseña incorrecta"
2678+msgstr "Contraseña no válida"
2679
2680 #: ../data/ui/PasswordDialog.ui.h:2
2681 msgid ""
2682@@ -60,7 +58,7 @@
2683 msgid ""
2684 "<i>You need to restart Lernid for some of the changes to take effect.</i>"
2685 msgstr ""
2686-"<i>Ha de reiniciar Lernid para que algunos de los cambios surtan efecto.</i>"
2687+"<i>Debe reiniciar Lernid para que algunos de los cambios surtan efecto.</i>"
2688
2689 #: ../data/ui/PreferencesLernidDialog.ui.h:2
2690 msgid "Show an icon in the notification area"
2691@@ -93,7 +91,7 @@
2692 #: ../lernid/widgets/Slide.py:148
2693 #, python-format
2694 msgid "Downloading session slides ({0} % of {1:.1} MB)..."
2695-msgstr ""
2696+msgstr "Descargando diapositivas de sesión ({0} % de {1:.1} MB)..."
2697
2698 #: ../lernid/widgets/Slide.py:151
2699 msgid "Slides have been downloaded"
2700@@ -296,84 +294,3 @@
2701 #: ../lernid/widgets/NativeChatroom.py:164
2702 msgid "IRC commands are not yet supported."
2703 msgstr "Las órdenes del IRC todavía no están soportadas."
2704-
2705-#~ msgid "Event"
2706-#~ msgstr "Evento"
2707-
2708-#~ msgid "Nickname"
2709-#~ msgstr "Apodo"
2710-
2711-#~ msgid "_Event"
2712-#~ msgstr "_Evento"
2713-
2714-#~ msgid "gtk-ok"
2715-#~ msgstr "gtk-ok"
2716-
2717-#~ msgid "Lernid application"
2718-#~ msgstr "Aplicación Lernid"
2719-
2720-#~ msgid "gtk-cancel"
2721-#~ msgstr "gtk-cancel"
2722-
2723-#~ msgid "Not Connected."
2724-#~ msgstr "No conectado."
2725-
2726-#~ msgid "Chat Room"
2727-#~ msgstr "Salón de Charla"
2728-
2729-#~ msgid "Schedule"
2730-#~ msgstr "Horario"
2731-
2732-#~ msgid "Connected to "
2733-#~ msgstr "Conectado a "
2734-
2735-#~ msgid "Disconnecting from "
2736-#~ msgstr "Desconectando de "
2737-
2738-#~ msgid "David Planella <david.planella@ubuntu.com>"
2739-#~ msgstr "David Planella <david.planella@ubuntu.com>"
2740-
2741-#~ msgid "Chatroom"
2742-#~ msgstr "Sala de Chat"
2743-
2744-#~ msgid ""
2745-#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
2746-#~ "This program is free software: you can redistribute it and/or modify it "
2747-#~ "under the terms of the GNU General Public License version 3, as published by "
2748-#~ "the Free Software Foundation.\n"
2749-#~ "\n"
2750-#~ "This program is distributed in the hope that it will be useful, but WITHOUT "
2751-#~ "ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
2752-#~ "SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
2753-#~ "General Public License for more details.\n"
2754-#~ "\n"
2755-#~ "You should have received a copy of the GNU General Public License along "
2756-#~ "with this program. If not, see <http://www.gnu.org/licenses/>."
2757-#~ msgstr ""
2758-#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
2759-#~ "Este programa es libre: puedes distribuirlo y/o modificarlo bajo los "
2760-#~ "términos de la licencia GNU General Public version 3, como fue publicado por "
2761-#~ "la Free Software Foundation.\n"
2762-#~ "\n"
2763-#~ "Este programa es distruibuido con la esperanza que será útil, pero SIN "
2764-#~ "NINGUNA GARANTIA; sin siquiera la garantía implícita \n"
2765-#~ "de comerciabilidad, calidad de satisfacción, o apto para un propósito en "
2766-#~ "particular. Vea la licencia GNU General para obtener más detalles.\n"
2767-#~ "\n"
2768-#~ "Debería haber recibido una copia de la licencia GNU General Public junto con "
2769-#~ "este programa. De lo contrario, vea <http://www.gnu.org/licenses/>."
2770-
2771-#~ msgid "Browser"
2772-#~ msgstr "Navegador"
2773-
2774-#~ msgid "Participate in online Ubuntu learning events"
2775-#~ msgstr "Participar en eventos de aprendizaje en línea de Ubuntu"
2776-
2777-#~ msgid "Session"
2778-#~ msgstr "Sesión"
2779-
2780-#~ msgid "' session is starting..."
2781-#~ msgstr "' la sesión está empezando..."
2782-
2783-#~ msgid "Downloading session slides..."
2784-#~ msgstr "Descargando diapositivas de la sesión..."
2785
2786=== modified file 'po/eu.po'
2787--- po/eu.po 2010-08-03 03:57:01 +0000
2788+++ po/eu.po 2012-05-07 00:49:19 +0000
2789@@ -8,15 +8,15 @@
2790 "Project-Id-Version: lernid\n"
2791 "Report-Msgid-Bugs-To: Oier Mees <oier89rider@gmail.com>\n"
2792 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
2793-"PO-Revision-Date: 2010-08-02 15:51+0000\n"
2794-"Last-Translator: Michael Budde <mbudde@gmail.com>\n"
2795+"PO-Revision-Date: 2011-06-05 13:52+0000\n"
2796+"Last-Translator: Oier Mees <Unknown>\n"
2797 "Language-Team: LANGUAGE <LL@li.org>\n"
2798 "MIME-Version: 1.0\n"
2799 "Content-Type: text/plain; charset=UTF-8\n"
2800 "Content-Transfer-Encoding: 8bit\n"
2801 "Plural-Forms: nplurals=2; plural=n != 1;\n"
2802-"X-Launchpad-Export-Date: 2010-08-03 03:56+0000\n"
2803-"X-Generator: Launchpad (build Unknown)\n"
2804+"X-Launchpad-Export-Date: 2011-06-06 04:47+0000\n"
2805+"X-Generator: Launchpad (build 12959)\n"
2806
2807 #: ../data/ui/AboutLernidDialog.ui.h:1
2808 msgid "translator-credits"
2809@@ -251,7 +251,7 @@
2810 #. Translators: Local date representation
2811 #: ../lernid/Sessions.py:50
2812 msgid "%d %B %Y"
2813-msgstr "%d %B %Y"
2814+msgstr "%Y(e)ko %Bk %d"
2815
2816 #: ../lernid/ConnectDialog.py:111
2817 msgid "Nick can not be blank"
2818@@ -283,5 +283,38 @@
2819 msgid "IRC commands are not yet supported."
2820 msgstr "IRC komandoak oraindik ez dira onartzen."
2821
2822+#~ msgid ""
2823+#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
2824+#~ "This program is free software: you can redistribute it and/or modify it "
2825+#~ "under the terms of the GNU General Public License version 3, as published by "
2826+#~ "the Free Software Foundation.\n"
2827+#~ "\n"
2828+#~ "This program is distributed in the hope that it will be useful, but WITHOUT "
2829+#~ "ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
2830+#~ "SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
2831+#~ "General Public License for more details.\n"
2832+#~ "\n"
2833+#~ "You should have received a copy of the GNU General Public License along "
2834+#~ "with this program. If not, see <http://www.gnu.org/licenses/>."
2835+#~ msgstr ""
2836+#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
2837+#~ "Programa hau software librea da: birbanatzea edo/eta aldatzea daukazuFree "
2838+#~ "Software Foundation-ek argitaratutako GNU General Public License-ren "
2839+#~ "3bertsioaren baldintzenpean.\n"
2840+#~ "\n"
2841+#~ "Programa hau erabilgarri izango delakoan banatzen dugu, baina INONGO "
2842+#~ "BERMERIK GABE; ezta ere hurrengo berme implizitukin MERKATURATZETASUNA, "
2843+#~ "KALITATE EGOKIA, edo INTENTZIO JAKIN BATERAKO EGOKITASUNA. Ikusi GNU "
2844+#~ "General Public License xehetasun gehiagorentzat.\n"
2845+#~ "\n"
2846+#~ "GNU General Public License-eren kopia bat jaso beharko zenuke "
2847+#~ "programahonekin batera. Ezezkoan, ikusi <http://www.gnu.org/licenses/>."
2848+
2849+#~ msgid "Even_t"
2850+#~ msgstr "Ekitaldia_t"
2851+
2852+#~ msgid "_Hide Lernid"
2853+#~ msgstr "_Ezkutatu Lernid"
2854+
2855 #~ msgid "Downloading session slides..."
2856 #~ msgstr "Saioko gardenkiak jaisten..."
2857
2858=== modified file 'po/he.po'
2859--- po/he.po 2010-08-03 03:57:01 +0000
2860+++ po/he.po 2012-05-07 00:49:19 +0000
2861@@ -8,15 +8,15 @@
2862 "Project-Id-Version: lernid\n"
2863 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
2864 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
2865-"PO-Revision-Date: 2010-08-02 16:01+0000\n"
2866-"Last-Translator: Ilan <ilan@fonz.net>\n"
2867+"PO-Revision-Date: 2011-06-08 06:46+0000\n"
2868+"Last-Translator: Yaron <sh.yaron@gmail.com>\n"
2869 "Language-Team: Hebrew <he@li.org>\n"
2870 "MIME-Version: 1.0\n"
2871 "Content-Type: text/plain; charset=UTF-8\n"
2872 "Content-Transfer-Encoding: 8bit\n"
2873 "Plural-Forms: nplurals=2; plural=n != 1;\n"
2874-"X-Launchpad-Export-Date: 2010-08-03 03:56+0000\n"
2875-"X-Generator: Launchpad (build Unknown)\n"
2876+"X-Launchpad-Export-Date: 2011-06-09 04:43+0000\n"
2877+"X-Generator: Launchpad (build 13168)\n"
2878
2879 #: ../data/ui/AboutLernidDialog.ui.h:1
2880 msgid "translator-credits"
2881@@ -25,17 +25,21 @@
2882 " Ddorda https://launchpad.net/~ddorda\n"
2883 " Ilan https://launchpad.net/~ilan\n"
2884 " SB https://launchpad.net/~sonny-benshimon\n"
2885-" Uri Shabtay https://launchpad.net/~uri.shabtay"
2886+" Uri Shabtay https://launchpad.net/~uri.shabtay\n"
2887+" Yaron https://launchpad.net/~sh-yaron\n"
2888+" serfus https://launchpad.net/~serfus"
2889
2890 #: ../data/ui/PasswordDialog.ui.h:1
2891 msgid "Invalid password"
2892-msgstr "הסיסמה שגויה"
2893+msgstr "הססמה שגויה"
2894
2895 #: ../data/ui/PasswordDialog.ui.h:2
2896 msgid ""
2897 "The NickServ password you entered was invalid.\n"
2898 "Please enter the correct password:"
2899 msgstr ""
2900+"ססמת ה־NickServ שהוזנה אינה תקנית.\n"
2901+"נא להזין את הססמה הנכונה:"
2902
2903 #. Translators: Local time representation
2904 #: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:55
2905@@ -46,52 +50,52 @@
2906 #: ../data/ui/PreferencesLernidDialog.ui.h:1
2907 msgid ""
2908 "<i>You need to restart Lernid for some of the changes to take effect.</i>"
2909-msgstr ""
2910+msgstr "עליך להפעיל את Lernid מחדש כדי שחלק מהשינויים יכנסו לתוקף."
2911
2912 #: ../data/ui/PreferencesLernidDialog.ui.h:2
2913 msgid "Show an icon in the notification area"
2914-msgstr ""
2915+msgstr "הצגת סמל באזור הדיווחים"
2916
2917 #: ../data/ui/PreferencesLernidDialog.ui.h:3
2918 msgid "Show time in classroom and chatroom"
2919-msgstr ""
2920+msgstr "הצגת השעה בכיתה ובחדר הצ׳אט"
2921
2922 #: ../data/ui/PreferencesLernidDialog.ui.h:4
2923 msgid "Use vertical layout"
2924-msgstr ""
2925+msgstr "שימוש בסידור אנכי"
2926
2927 #: ../lernid/EventManager.py:96
2928 msgid "Connecting to event"
2929-msgstr ""
2930+msgstr "בהתחברות לאירוע"
2931
2932 #: ../lernid/EventManager.py:104
2933 msgid "Your nickname is now identified"
2934-msgstr ""
2935+msgstr "הכינוי שלך מזוהה כעת"
2936
2937 #: ../lernid/EventManager.py:139
2938 msgid "Disconnecting from event"
2939-msgstr ""
2940+msgstr "בניתוק מאירוע"
2941
2942 #: ../lernid/widgets/Slide.py:109
2943 msgid "An error was encountered while trying to load slide number {0}"
2944-msgstr ""
2945+msgstr "אירעה שגיאה במהלך הניסיון לטעינת שקופית מספר {0}"
2946
2947 #: ../lernid/widgets/Slide.py:148
2948 #, python-format
2949 msgid "Downloading session slides ({0} % of {1:.1} MB)..."
2950-msgstr ""
2951+msgstr "שקופיות המפגש מתקבלות ({0} % oמתוך {1:.1} מ״ב)..."
2952
2953 #: ../lernid/widgets/Slide.py:151
2954 msgid "Slides have been downloaded"
2955-msgstr ""
2956+msgstr "הורדת השקופיות הושלמה"
2957
2958 #: ../lernid/widgets/Slide.py:156
2959 msgid "An error was encountered while downloading slides"
2960-msgstr ""
2961+msgstr "אירעה שגיאה במהלך הורדת השקופיות"
2962
2963 #: ../lernid/widgets/Slide.py:168
2964 msgid "This session does not use slides"
2965-msgstr ""
2966+msgstr "מפגש זה אינו דורש שימוש בשקופיות"
2967
2968 #: ../data/ui/LernidWindow.ui.h:1
2969 msgid "Classroom"
2970@@ -99,11 +103,11 @@
2971
2972 #: ../data/ui/LernidWindow.ui.h:2
2973 msgid "Enter the address you would like to open in the browser:"
2974-msgstr ""
2975+msgstr "נא להזין את הכתובת אותה ברצונך לפתוח בדפדפן:"
2976
2977 #: ../data/ui/LernidWindow.ui.h:3
2978 msgid "Eve_nt"
2979-msgstr ""
2980+msgstr "_אירוע"
2981
2982 #: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130
2983 #: ../lernid.desktop.in.h:1
2984@@ -112,19 +116,19 @@
2985
2986 #: ../data/ui/LernidWindow.ui.h:5
2987 msgid "Open _URL..."
2988-msgstr ""
2989+msgstr "פתיחת _כתובת...."
2990
2991 #: ../data/ui/LernidWindow.ui.h:6
2992 msgid "Tweet current session"
2993-msgstr ""
2994+msgstr "ציוץ המפגש הנוכחי"
2995
2996 #: ../data/ui/LernidWindow.ui.h:7
2997 msgid "_Chatroom"
2998-msgstr ""
2999+msgstr "_חדר צ׳אט"
3000
3001 #: ../data/ui/LernidWindow.ui.h:8
3002 msgid "_Edit"
3003-msgstr "_ערוך"
3004+msgstr "ע_ריכה"
3005
3006 #: ../data/ui/LernidWindow.ui.h:9
3007 msgid "_Fullscreen"
3008@@ -148,25 +152,25 @@
3009
3010 #: ../bin/lernid.py:208
3011 msgid "Sche_dule"
3012-msgstr ""
3013+msgstr "לוח _זמנים"
3014
3015 #: ../bin/lernid.py:215
3016 msgid "_Terminal"
3017-msgstr "_מסוף"
3018+msgstr "מ_סוף"
3019
3020 #: ../bin/lernid.py:226
3021 msgid "({0} user)"
3022 msgid_plural "({0} users)"
3023-msgstr[0] ""
3024-msgstr[1] ""
3025+msgstr[0] "(משתמש {0})"
3026+msgstr[1] "({0} משתמשים)"
3027
3028 #: ../bin/lernid.py:290
3029 msgid "_Show Lernid"
3030-msgstr ""
3031+msgstr "ה_צגת Lernid"
3032
3033 #: ../bin/lernid.py:333
3034 msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."
3035-msgstr ""
3036+msgstr "השיעור \"{0}\" החל בערוץ ‎#ubuntu-classroom בשרת freenode."
3037
3038 #: ../bin/lernid.py:424
3039 msgid "Show debug messages"
3040@@ -174,15 +178,15 @@
3041
3042 #: ../bin/lernid.py:426
3043 msgid "Override classroom channel"
3044-msgstr ""
3045+msgstr "עקיפת ערוץ הכיתה"
3046
3047 #: ../bin/lernid.py:428
3048 msgid "Filename or URL to Lernid config file"
3049-msgstr ""
3050+msgstr "שם הקובץ או הכתובת לקובץ ההגדרות של Lernid"
3051
3052 #: ../bin/lernid.py:430
3053 msgid "Use web chat widget instead of the native one"
3054-msgstr ""
3055+msgstr "שימוש בחלונית צ׳אט במקום במובנה"
3056
3057 #: ../lernid/widgets/Schedule.py:80
3058 msgid "Date"
3059@@ -202,27 +206,27 @@
3060
3061 #: ../lernid/widgets/Schedule.py:163
3062 msgid "Session started"
3063-msgstr ""
3064+msgstr "המפגש החל"
3065
3066 #: ../lernid/widgets/Schedule.py:164
3067 msgid "The session \"{0}\" has started."
3068-msgstr ""
3069+msgstr "המפגש \"{0}\" החל"
3070
3071 #: ../lernid/widgets/Schedule.py:173
3072 msgid "Session upcoming"
3073-msgstr ""
3074+msgstr "מפגשים בהמשך"
3075
3076 #: ../lernid/widgets/Schedule.py:174
3077 msgid "The session \"{0}\" will begin in 10 minutes."
3078-msgstr ""
3079+msgstr "המפגש \"{0}\" יתחיל בעוד 10 דקות."
3080
3081 #: ../data/ui/BrowserWidget.ui.h:1
3082 msgid "Stop browser from changing page"
3083-msgstr ""
3084+msgstr "מניעת אפשרות העברת העמוד מהדפדפן"
3085
3086 #: ../lernid/widgets/Classroom.py:78
3087 msgid "Joined classroom"
3088-msgstr ""
3089+msgstr "הצטרפת למפגש"
3090
3091 #: ../data/ui/ConnectDialog.ui.h:1
3092 msgid "Advanced options"
3093@@ -230,15 +234,15 @@
3094
3095 #: ../data/ui/ConnectDialog.ui.h:2
3096 msgid "Choose an event"
3097-msgstr "בחרו אירוע"
3098+msgstr "נא לבחור באירוע"
3099
3100 #: ../data/ui/ConnectDialog.ui.h:3
3101 msgid "Event:"
3102-msgstr ""
3103+msgstr "אירוע:"
3104
3105 #: ../data/ui/ConnectDialog.ui.h:4
3106 msgid "NickServ password:"
3107-msgstr ""
3108+msgstr "ססמת ה־NickServ:"
3109
3110 #: ../data/ui/ConnectDialog.ui.h:5
3111 msgid "Nickname:"
3112@@ -246,42 +250,42 @@
3113
3114 #: ../lernid.desktop.in.h:2
3115 msgid "Participate in online learning events"
3116-msgstr ""
3117+msgstr "השתתפות באירועי למידה מקוונים"
3118
3119 #. Translators: Local date representation
3120 #: ../lernid/Sessions.py:50
3121 msgid "%d %B %Y"
3122-msgstr "%d %B %Y"
3123+msgstr "%d ב%B %Y"
3124
3125 #: ../lernid/ConnectDialog.py:111
3126 msgid "Nick can not be blank"
3127-msgstr "הכינוי לא יכול להשאר ריק"
3128+msgstr "כינוי לא יכול להישאר ריק"
3129
3130 #: ../lernid/ConnectDialog.py:115
3131 #, python-format
3132 msgid "Nick can not begin with: %s"
3133-msgstr "הכינוי לא יכול להתחיל עם: %s"
3134+msgstr "כינוי לא יכול להתחיל ב־: %s"
3135
3136 #: ../lernid/ConnectDialog.py:119
3137 msgid "Nick can not contain blank spaces."
3138-msgstr "הכינוי לא יכול להכיל רווחים."
3139+msgstr "כינוי לא יכול להכיל רווחים."
3140
3141 #: ../lernid/ConnectDialog.py:119
3142 #, python-format
3143 msgid "Nick can not contain: %s"
3144-msgstr "הכינוי לא יכול להכיל: %s"
3145+msgstr "כינוי לא יכול להכיל: %s"
3146
3147 #: ../lernid/ConnectDialog.py:122
3148 msgid "Nick can only contain English alphabet characters"
3149-msgstr ""
3150+msgstr "כינוי יכול להכיל אותיות לטיניות (באנגלית) בלבד"
3151
3152 #: ../lernid/lernidconfig.py:33
3153 msgid "Connect to a world of online tutorials quickly and easily."
3154-msgstr "התחברו לעולם של מדריכים מקוונים בקלות ובמהירות."
3155+msgstr "התחברות לעולם של מדריכים מקוונים בקלות ובמהירות."
3156
3157 #: ../lernid/widgets/NativeChatroom.py:164
3158 msgid "IRC commands are not yet supported."
3159-msgstr ""
3160+msgstr "פקודות IRC עדיין לא נתמכות."
3161
3162 #~ msgid "Not Connected."
3163 #~ msgstr "לא מחובר"
3164@@ -304,6 +308,18 @@
3165 #~ msgid "David Planella <david.planella@ubuntu.com>"
3166 #~ msgstr "David Planella <david.planella@ubuntu.com>"
3167
3168+#~ msgid "<b>Resources</b>"
3169+#~ msgstr "<b>מקורות</b>"
3170+
3171+#~ msgid "<b>Classroom</b>"
3172+#~ msgstr "<b>כיתה</b>"
3173+
3174+#~ msgid "<b>Chatroom</b>"
3175+#~ msgstr "<b>חדר שיחה</b>"
3176+
3177+#~ msgid "<b>Schedule</b>"
3178+#~ msgstr "<b>לוח זמנים</b>"
3179+
3180 #~ msgid "Event"
3181 #~ msgstr "אירוע"
3182
3183
3184=== modified file 'po/hr.po'
3185--- po/hr.po 2010-08-03 03:57:01 +0000
3186+++ po/hr.po 2012-05-07 00:49:19 +0000
3187@@ -8,21 +8,22 @@
3188 "Project-Id-Version: lernid\n"
3189 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
3190 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
3191-"PO-Revision-Date: 2010-08-02 15:52+0000\n"
3192-"Last-Translator: nafterburner <nafterburner@gmail.com>\n"
3193+"PO-Revision-Date: 2012-04-06 19:24+0000\n"
3194+"Last-Translator: gogo <trebelnik2@gmail.com>\n"
3195 "Language-Team: Croatian <hr@li.org>\n"
3196 "MIME-Version: 1.0\n"
3197 "Content-Type: text/plain; charset=UTF-8\n"
3198 "Content-Transfer-Encoding: 8bit\n"
3199 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
3200 "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
3201-"X-Launchpad-Export-Date: 2010-08-03 03:56+0000\n"
3202-"X-Generator: Launchpad (build Unknown)\n"
3203+"X-Launchpad-Export-Date: 2012-04-07 05:00+0000\n"
3204+"X-Generator: Launchpad (build 15060)\n"
3205
3206 #: ../data/ui/AboutLernidDialog.ui.h:1
3207 msgid "translator-credits"
3208 msgstr ""
3209 "Launchpad Contributions:\n"
3210+" gogo https://launchpad.net/~trebelnik-stefina\n"
3211 " nafterburner https://launchpad.net/~nafterburner"
3212
3213 #: ../data/ui/PasswordDialog.ui.h:1
3214@@ -170,7 +171,7 @@
3215
3216 #: ../bin/lernid.py:424
3217 msgid "Show debug messages"
3218-msgstr "Prikaži debug poruke"
3219+msgstr "Prikaži poruke otklanjanja greške"
3220
3221 #: ../bin/lernid.py:426
3222 msgid "Override classroom channel"
3223@@ -282,60 +283,3 @@
3224 #: ../lernid/widgets/NativeChatroom.py:164
3225 msgid "IRC commands are not yet supported."
3226 msgstr "IRC naredbe još uvijek nisu podržane."
3227-
3228-#~ msgid "Chatroom"
3229-#~ msgstr "Chatroom"
3230-
3231-#~ msgid "Session"
3232-#~ msgstr "Sesija"
3233-
3234-#~ msgid "Browser"
3235-#~ msgstr "Preglednik"
3236-
3237-#~ msgid "Nickname"
3238-#~ msgstr "Nadimak"
3239-
3240-#~ msgid "_Event"
3241-#~ msgstr "_Događaj"
3242-
3243-#~ msgid "Event"
3244-#~ msgstr "Događaj"
3245-
3246-#~ msgid "Connected to "
3247-#~ msgstr "Priključen na "
3248-
3249-#~ msgid "Disconnecting from "
3250-#~ msgstr "Prekidanje veze s "
3251-
3252-#~ msgid "Not Connected."
3253-#~ msgstr "Nije Povezan."
3254-
3255-#~ msgid "' session is starting..."
3256-#~ msgstr "' sesija započinje..."
3257-
3258-#~ msgid ""
3259-#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
3260-#~ "This program is free software: you can redistribute it and/or modify it "
3261-#~ "under the terms of the GNU General Public License version 3, as published by "
3262-#~ "the Free Software Foundation.\n"
3263-#~ "\n"
3264-#~ "This program is distributed in the hope that it will be useful, but WITHOUT "
3265-#~ "ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
3266-#~ "SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
3267-#~ "General Public License for more details.\n"
3268-#~ "\n"
3269-#~ "You should have received a copy of the GNU General Public License along "
3270-#~ "with this program. If not, see <http://www.gnu.org/licenses/>."
3271-#~ msgstr ""
3272-#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
3273-#~ "Ovaj program je slobodan softver: možete ga redistribuirati i/ili "
3274-#~ "modificirati pod uvjetima GNU General Public License version 3(Opće Javne "
3275-#~ "Licence verzije 3) kao što je objavio Free Software Foundation.\n"
3276-#~ "\n"
3277-#~ "Ovaj program se distribuira u nadi da će biti koristan, ali BEZ BILO KOJE "
3278-#~ "GARANCIJE; čak i bez impliciranih jamstava PRODAJE, ZADOVOLJAVAJUĆE "
3279-#~ "KVALITETE ILI PRIKLADNOSTI ZA ODREĐENU NAMJENU. Pogledajte GNU General "
3280-#~ "Public License (Sveopću Narodnu Dozvolu) za više detalja.\n"
3281-#~ "\n"
3282-#~ "Trebali biste dobiti primjerak GNU (Sveopće Narodne Dozvole) zajedno sa ovim "
3283-#~ "programom. Ako ne, pogledajte <http://www.gnu.org/licenses/>."
3284
3285=== modified file 'po/it.po'
3286--- po/it.po 2010-08-18 07:07:31 +0000
3287+++ po/it.po 2012-05-07 00:49:19 +0000
3288@@ -8,15 +8,15 @@
3289 "Project-Id-Version: lernid\n"
3290 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
3291 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
3292-"PO-Revision-Date: 2010-08-17 08:08+0000\n"
3293-"Last-Translator: Paolo Sammicheli <paolo@sammicheli.net>\n"
3294+"PO-Revision-Date: 2011-10-06 20:30+0000\n"
3295+"Last-Translator: Milo Casagrande <milo@casagrande.name>\n"
3296 "Language-Team: Italian <it@li.org>\n"
3297 "MIME-Version: 1.0\n"
3298 "Content-Type: text/plain; charset=UTF-8\n"
3299 "Content-Transfer-Encoding: 8bit\n"
3300 "Plural-Forms: nplurals=2; plural=n != 1;\n"
3301-"X-Launchpad-Export-Date: 2010-08-18 07:07+0000\n"
3302-"X-Generator: Launchpad (build Unknown)\n"
3303+"X-Launchpad-Export-Date: 2011-10-07 04:42+0000\n"
3304+"X-Generator: Launchpad (build 14085)\n"
3305
3306 #: ../data/ui/AboutLernidDialog.ui.h:1
3307 msgid "translator-credits"
3308@@ -26,9 +26,9 @@
3309 " Giampaolo Bozzali https://launchpad.net/~g.bozzali\n"
3310 " Milo Casagrande https://launchpad.net/~milo\n"
3311 " Paolo Sammicheli https://launchpad.net/~xdatap1\n"
3312-" Riccardo Angelino https://launchpad.net/~rikyinformation\n"
3313-" fullo https://launchpad.net/~ffullone\n"
3314-" giorgio130 https://launchpad.net/~gm89"
3315+" Riccardo Angelino https://launchpad.net/~riccardoangelino\n"
3316+" William Bottini https://launchpad.net/~karminio\n"
3317+" fullo https://launchpad.net/~ffullone"
3318
3319 #: ../data/ui/PasswordDialog.ui.h:1
3320 msgid "Invalid password"
3321@@ -284,90 +284,8 @@
3322
3323 #: ../lernid/lernidconfig.py:33
3324 msgid "Connect to a world of online tutorials quickly and easily."
3325-msgstr "Connette ad un mondo di lezioni in linea velocemente e facilmente."
3326+msgstr "Connette velocemente e facilmente a un mondo di lezioni in linea."
3327
3328 #: ../lernid/widgets/NativeChatroom.py:164
3329 msgid "IRC commands are not yet supported."
3330 msgstr "Comandi IRC non sono ancora supportati."
3331-
3332-#~ msgid "Not Connected."
3333-#~ msgstr "Non connesso."
3334-
3335-#~ msgid "_Event"
3336-#~ msgstr "_Evento"
3337-
3338-#~ msgid "Lernid application"
3339-#~ msgstr "Applicazione Lernid"
3340-
3341-#~ msgid "Event"
3342-#~ msgstr "Evento"
3343-
3344-#~ msgid "Nickname"
3345-#~ msgstr "Soprannome"
3346-
3347-#~ msgid ""
3348-#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
3349-#~ "This program is free software: you can redistribute it and/or modify it "
3350-#~ "under the terms of the GNU General Public License version 3, as published by "
3351-#~ "the Free Software Foundation.\n"
3352-#~ "\n"
3353-#~ "This program is distributed in the hope that it will be useful, but WITHOUT "
3354-#~ "ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
3355-#~ "SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
3356-#~ "General Public License for more details.\n"
3357-#~ "\n"
3358-#~ "You should have received a copy of the GNU General Public License along "
3359-#~ "with this program. If not, see <http://www.gnu.org/licenses/>."
3360-#~ msgstr ""
3361-#~ "Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
3362-#~ "Questo programma è Software Libero: potete distribuirlo e modificarlo sotto "
3363-#~ "i termini della GNU General Public License versione 3, come pubblicato dalla "
3364-#~ "Free Software Foundation.\n"
3365-#~ "\n"
3366-#~ "Questo programma è distribuito nella speranza che possa essere utile, ma "
3367-#~ "SENZA NESSUNA GARANZIA, anche senza la garanzia implicita di VENDIBILITÀ, "
3368-#~ "QUALITÀ SODDISFACENTE, o di ADEGUATEZZA AD UN QUALSIASI USO. Per ulteriori "
3369-#~ "dettagli consultare la GNU General Public License.\n"
3370-#~ "\n"
3371-#~ "La traduzione di questa nota è soltanto a titolo esplicativo e non ha valore "
3372-#~ "legale. Consultate l'originale in Inglese all'indirizzo "
3373-#~ "<http://www.gnu.org/licenses/>."
3374-
3375-#~ msgid "Chat Room"
3376-#~ msgstr "Stanza"
3377-
3378-#~ msgid "Connected to "
3379-#~ msgstr "Connesso a "
3380-
3381-#~ msgid "Disconnecting from "
3382-#~ msgstr "Disconnessione da "
3383-
3384-#~ msgid "Schedule"
3385-#~ msgstr "Pianificazione"
3386-
3387-#~ msgid "Browser"
3388-#~ msgstr "Browser web"
3389-
3390-#~ msgid "David Planella <david.planella@ubuntu.com>"
3391-#~ msgstr "Paolo Sammicheli <xdatap1@ubuntu.com>"
3392-
3393-#~ msgid "Participate in online Ubuntu learning events"
3394-#~ msgstr "Partecipa agli eventi di apprendimento online di Ubuntu"
3395-
3396-#~ msgid "Chatroom"
3397-#~ msgstr "Area di discussione"
3398-
3399-#~ msgid "Session"
3400-#~ msgstr "Sessione"
3401-
3402-#~ msgid "' session is starting..."
3403-#~ msgstr "sessione in avvio..."
3404-
3405-#~ msgid "_Hide Lernid"
3406-#~ msgstr "_Nascondi Lernid"
3407-
3408-#~ msgid "Even_t"
3409-#~ msgstr "Even_to"
3410-
3411-#~ msgid "Downloading session slides..."
3412-#~ msgstr "Recupero delle diapositive della sessione..."
3413
3414=== modified file 'po/lernid.pot'
3415--- po/lernid.pot 2010-08-02 14:13:24 +0000
3416+++ po/lernid.pot 2012-05-07 00:49:19 +0000
3417@@ -8,10 +8,11 @@
3418 msgstr ""
3419 "Project-Id-Version: PACKAGE VERSION\n"
3420 "Report-Msgid-Bugs-To: \n"
3421-"POT-Creation-Date: 2010-08-02 16:11+0200\n"
3422+"POT-Creation-Date: 2012-05-06 20:44-0400\n"
3423 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
3424 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
3425 "Language-Team: LANGUAGE <LL@li.org>\n"
3426+"Language: \n"
3427 "MIME-Version: 1.0\n"
3428 "Content-Type: text/plain; charset=CHARSET\n"
3429 "Content-Transfer-Encoding: 8bit\n"
3430@@ -31,19 +32,29 @@
3431 "Please enter the correct password:"
3432 msgstr ""
3433
3434+#. 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
3435+#: ../data/ui/ChatWidget.ui.h:1 ../lernid/widgets/NativeChatroom.py:90
3436+msgid "QUESTION:"
3437+msgstr ""
3438+
3439+#: ../data/ui/ChatWidget.ui.h:2
3440+msgid ""
3441+"\"QUESTION:\" directs your question to the classroom for an answer from the "
3442+"instructor"
3443+msgstr ""
3444+
3445 #. Translators: Local time representation
3446-#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:55
3447-#: ../lernid/Sessions.py:60
3448+#: ../lernid/widgets/IrcWidget.py:68 ../lernid/Sessions.py:81
3449+#: ../lernid/Sessions.py:86
3450 msgid "%H:%M"
3451 msgstr ""
3452
3453 #: ../data/ui/PreferencesLernidDialog.ui.h:1
3454-msgid ""
3455-"<i>You need to restart Lernid for some of the changes to take effect.</i>"
3456+msgid "Show an icon in the notification area"
3457 msgstr ""
3458
3459 #: ../data/ui/PreferencesLernidDialog.ui.h:2
3460-msgid "Show an icon in the notification area"
3461+msgid "Use vertical layout"
3462 msgstr ""
3463
3464 #: ../data/ui/PreferencesLernidDialog.ui.h:3
3465@@ -51,77 +62,95 @@
3466 msgstr ""
3467
3468 #: ../data/ui/PreferencesLernidDialog.ui.h:4
3469-msgid "Use vertical layout"
3470-msgstr ""
3471-
3472-#: ../lernid/EventManager.py:96
3473+msgid "Open presentation links in default browser"
3474+msgstr ""
3475+
3476+#: ../data/ui/PreferencesLernidDialog.ui.h:5
3477+msgid ""
3478+"<i>You need to restart Lernid for some of the changes to take effect.</i>"
3479+msgstr ""
3480+
3481+#: ../lernid/EventManager.py:90
3482+msgid "Cannot retrieve configuration"
3483+msgstr ""
3484+
3485+#: ../lernid/EventManager.py:188
3486 msgid "Connecting to event"
3487 msgstr ""
3488
3489-#: ../lernid/EventManager.py:104
3490+#: ../lernid/EventManager.py:196
3491 msgid "Your nickname is now identified"
3492 msgstr ""
3493
3494-#: ../lernid/EventManager.py:139
3495+#: ../lernid/EventManager.py:239
3496 msgid "Disconnecting from event"
3497 msgstr ""
3498
3499-#: ../lernid/widgets/Slide.py:109
3500+#: ../lernid/widgets/Slide.py:83
3501+msgid "Click to Open in External Browser"
3502+msgstr ""
3503+
3504+#: ../lernid/widgets/Slide.py:86
3505+msgid ""
3506+"Click to open the slides in your browser. From there you can browse, "
3507+"bookmark, or save them."
3508+msgstr ""
3509+
3510+#: ../lernid/widgets/Slide.py:165
3511 msgid "An error was encountered while trying to load slide number {0}"
3512 msgstr ""
3513
3514-#: ../lernid/widgets/Slide.py:148
3515+#: ../lernid/widgets/Slide.py:230
3516 #, python-format
3517-msgid "Downloading session slides ({0} % of {1:.1} MB)..."
3518-msgstr ""
3519-
3520-#: ../lernid/widgets/Slide.py:151
3521+msgid "Downloading session slides (%i%% of %i KB)..."
3522+msgstr ""
3523+
3524+#: ../lernid/widgets/Slide.py:238 ../lernid/widgets/Slide.py:264
3525+msgid "An error was encountered while downloading slides"
3526+msgstr ""
3527+
3528+#: ../lernid/widgets/Slide.py:251
3529 msgid "Slides have been downloaded"
3530 msgstr ""
3531
3532-#: ../lernid/widgets/Slide.py:156
3533-msgid "An error was encountered while downloading slides"
3534-msgstr ""
3535-
3536-#: ../lernid/widgets/Slide.py:168
3537+#: ../lernid/widgets/Slide.py:284
3538 msgid "This session does not use slides"
3539 msgstr ""
3540
3541 #: ../data/ui/LernidWindow.ui.h:1
3542-msgid "Classroom"
3543+msgid "<b>Classroom</b>"
3544 msgstr ""
3545
3546 #: ../data/ui/LernidWindow.ui.h:2
3547-msgid "Enter the address you would like to open in the browser:"
3548+msgid "<b>_Chatroom</b>"
3549 msgstr ""
3550
3551 #: ../data/ui/LernidWindow.ui.h:3
3552 msgid "Eve_nt"
3553 msgstr ""
3554
3555-#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130
3556-#: ../lernid.desktop.in.h:1
3557-msgid "Lernid"
3558+#: ../data/ui/LernidWindow.ui.h:4
3559+msgid "Open _URL in Lernid..."
3560 msgstr ""
3561
3562 #: ../data/ui/LernidWindow.ui.h:5
3563-msgid "Open _URL..."
3564+msgid "Tweet current session"
3565 msgstr ""
3566
3567 #: ../data/ui/LernidWindow.ui.h:6
3568-msgid "Tweet current session"
3569+msgid "_Edit"
3570 msgstr ""
3571
3572 #: ../data/ui/LernidWindow.ui.h:7
3573-msgid "_Chatroom"
3574+msgid "_View"
3575 msgstr ""
3576
3577 #: ../data/ui/LernidWindow.ui.h:8
3578-msgid "_Edit"
3579+msgid "_Fullscreen"
3580 msgstr ""
3581
3582 #: ../data/ui/LernidWindow.ui.h:9
3583-msgid "_Fullscreen"
3584+msgid "_Statusbar"
3585 msgstr ""
3586
3587 #: ../data/ui/LernidWindow.ui.h:10
3588@@ -129,105 +158,187 @@
3589 msgstr ""
3590
3591 #: ../data/ui/LernidWindow.ui.h:11
3592-msgid "_Statusbar"
3593-msgstr ""
3594-
3595-#: ../data/ui/LernidWindow.ui.h:12
3596-msgid "_View"
3597-msgstr ""
3598-
3599-#: ../bin/lernid.py:141 ../bin/lernid.py:144 ../bin/lernid.py:199
3600+msgid "Enter the address you would like to open in the browser:"
3601+msgstr ""
3602+
3603+#: ../lernid/IrcBackend.py:345
3604+#, python-format
3605+msgid "Nick assigned by server: %s"
3606+msgstr ""
3607+
3608+#: ../bin/lernid.py:148 ../bin/lernid.py:152 ../bin/lernid.py:263
3609 msgid "_Session"
3610 msgstr ""
3611
3612-#: ../bin/lernid.py:208
3613+#: ../bin/lernid.py:149
3614+msgid "Select the Session tab to see classroom learning material"
3615+msgstr ""
3616+
3617+#: ../bin/lernid.py:160
3618+msgid "Event Connection Interrupted"
3619+msgstr ""
3620+
3621+#: ../bin/lernid.py:160
3622+msgid ""
3623+"Please reestablish your Internet connection\n"
3624+"and reconnect to the event"
3625+msgstr ""
3626+
3627+#: ../bin/lernid.py:165
3628+msgid ""
3629+"Event Connection Interrupted -- Please reestablish your Internet connection "
3630+"and reconnect to the event"
3631+msgstr ""
3632+
3633+#: ../bin/lernid.py:223
3634+msgid "You can interact with classes held in the classroom"
3635+msgstr ""
3636+
3637+#: ../bin/lernid.py:226
3638+#, python-format
3639+msgid ""
3640+"Add \"%s\" to the beginning of your query to direct it to the classroom "
3641+"instructor."
3642+msgstr ""
3643+
3644+#: ../bin/lernid.py:272
3645 msgid "Sche_dule"
3646 msgstr ""
3647
3648-#: ../bin/lernid.py:215
3649+#: ../bin/lernid.py:279
3650 msgid "_Terminal"
3651 msgstr ""
3652
3653-#: ../bin/lernid.py:226
3654+#: ../bin/lernid.py:290
3655 msgid "({0} user)"
3656 msgid_plural "({0} users)"
3657 msgstr[0] ""
3658 msgstr[1] ""
3659
3660-#: ../bin/lernid.py:290
3661+#: ../bin/lernid.py:313 ../bin/lernid.py:317
3662+msgid "Classroom"
3663+msgstr ""
3664+
3665+#. TRANSLATORS: The underscore marks this as a mnemonic accelerator
3666+#: ../bin/lernid.py:315 ../bin/lernid.py:318
3667+msgid "_Chatroom"
3668+msgstr ""
3669+
3670+#: ../bin/lernid.py:374
3671 msgid "_Show Lernid"
3672 msgstr ""
3673
3674-#: ../bin/lernid.py:333
3675+#: ../bin/lernid.py:417
3676 msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."
3677 msgstr ""
3678
3679-#: ../bin/lernid.py:424
3680+#: ../bin/lernid.py:508
3681 msgid "Show debug messages"
3682 msgstr ""
3683
3684-#: ../bin/lernid.py:426
3685+#: ../bin/lernid.py:509
3686+msgid "Show debug and classroom management messages"
3687+msgstr ""
3688+
3689+#: ../bin/lernid.py:511
3690 msgid "Override classroom channel"
3691 msgstr ""
3692
3693-#: ../bin/lernid.py:428
3694+#: ../bin/lernid.py:513
3695+msgid "Override chatroom channel"
3696+msgstr ""
3697+
3698+#: ../bin/lernid.py:515
3699 msgid "Filename or URL to Lernid config file"
3700 msgstr ""
3701
3702-#: ../bin/lernid.py:430
3703+#: ../bin/lernid.py:517
3704+msgid "Don't automatically reload the schedule"
3705+msgstr ""
3706+
3707+#: ../bin/lernid.py:519
3708 msgid "Use web chat widget instead of the native one"
3709 msgstr ""
3710
3711-#: ../lernid/widgets/Schedule.py:80
3712+#: ../bin/lernid.py:521
3713+msgid "Unsafe testing option"
3714+msgstr ""
3715+
3716+#: ../bin/lernid.py:523
3717+msgid "Unused debugging option to avoid desktopcouch"
3718+msgstr ""
3719+
3720+#: ../bin/lernid.py:526
3721+msgid "Override calendar location"
3722+msgstr ""
3723+
3724+#: ../lernid/widgets/Schedule.py:115
3725 msgid "Date"
3726 msgstr ""
3727
3728-#: ../lernid/widgets/Schedule.py:88
3729+#: ../lernid/widgets/Schedule.py:123
3730 msgid "Starts"
3731 msgstr ""
3732
3733-#: ../lernid/widgets/Schedule.py:96
3734+#: ../lernid/widgets/Schedule.py:131
3735 msgid "Ends"
3736 msgstr ""
3737
3738-#: ../lernid/widgets/Schedule.py:104 ../lernid/widgets/Schedule.py:109
3739+#: ../lernid/widgets/Schedule.py:139 ../lernid/widgets/Schedule.py:144
3740 msgid "Title"
3741 msgstr ""
3742
3743-#: ../lernid/widgets/Schedule.py:163
3744+#: ../lernid/widgets/Schedule.py:282
3745+#, python-format
3746+msgid "<u>Irc Logs for UTC %s </u><i>(Starting at %s local time)</i>"
3747+msgstr ""
3748+
3749+#: ../lernid/widgets/Schedule.py:364
3750+msgid "Please keep the Session tab selected to see session learning materials."
3751+msgstr ""
3752+
3753+#: ../lernid/widgets/Schedule.py:368
3754 msgid "Session started"
3755 msgstr ""
3756
3757-#: ../lernid/widgets/Schedule.py:164
3758-msgid "The session \"{0}\" has started."
3759+#: ../lernid/widgets/Schedule.py:369
3760+msgid "The session \"{0}\" has started. "
3761 msgstr ""
3762
3763-#: ../lernid/widgets/Schedule.py:173
3764+#: ../lernid/widgets/Schedule.py:381
3765 msgid "Session upcoming"
3766 msgstr ""
3767
3768-#: ../lernid/widgets/Schedule.py:174
3769+#: ../lernid/widgets/Schedule.py:382
3770 msgid "The session \"{0}\" will begin in 10 minutes."
3771 msgstr ""
3772
3773+#: ../lernid/widgets/Schedule.py:424
3774+msgid "Copy Calendar ICAL URL to Clipboard"
3775+msgstr ""
3776+
3777+#: ../lernid/widgets/Schedule.py:425
3778+msgid "Open Calendar ICAL URL Using Your Browser"
3779+msgstr ""
3780+
3781 #: ../data/ui/BrowserWidget.ui.h:1
3782 msgid "Stop browser from changing page"
3783 msgstr ""
3784
3785-#: ../lernid/widgets/Classroom.py:78
3786+#: ../lernid/widgets/Classroom.py:83
3787 msgid "Joined classroom"
3788 msgstr ""
3789
3790 #: ../data/ui/ConnectDialog.ui.h:1
3791-msgid "Advanced options"
3792+msgid "Choose an event"
3793 msgstr ""
3794
3795 #: ../data/ui/ConnectDialog.ui.h:2
3796-msgid "Choose an event"
3797+msgid "Event:"
3798 msgstr ""
3799
3800 #: ../data/ui/ConnectDialog.ui.h:3
3801-msgid "Event:"
3802+msgid "Nickname:"
3803 msgstr ""
3804
3805 #: ../data/ui/ConnectDialog.ui.h:4
3806@@ -235,7 +346,15 @@
3807 msgstr ""
3808
3809 #: ../data/ui/ConnectDialog.ui.h:5
3810-msgid "Nickname:"
3811+msgid "Advanced options"
3812+msgstr ""
3813+
3814+#: ../data/ui/ConnectDialog.ui.h:6
3815+msgid "Connecting to the classroom may take up to one minute"
3816+msgstr ""
3817+
3818+#: ../lernid.desktop.in.h:1
3819+msgid "Lernid"
3820 msgstr ""
3821
3822 #: ../lernid.desktop.in.h:2
3823@@ -243,36 +362,58 @@
3824 msgstr ""
3825
3826 #. Translators: Local date representation
3827-#: ../lernid/Sessions.py:50
3828+#: ../lernid/Sessions.py:76
3829 msgid "%d %B %Y"
3830 msgstr ""
3831
3832-#: ../lernid/ConnectDialog.py:111
3833+#: ../lernid/Sessions.py:127
3834+#, python-format
3835+msgid "Unable to load calendar %s\n"
3836+msgstr ""
3837+
3838+#: ../lernid/Sessions.py:171
3839+#, python-format
3840+msgid "Unable to parse calendar %s\n"
3841+msgstr ""
3842+
3843+#: ../lernid/Sessions.py:203
3844+msgid "Missing Session Name"
3845+msgstr ""
3846+
3847+#: ../lernid/ConnectDialog.py:119
3848 msgid "Nick can not be blank"
3849 msgstr ""
3850
3851-#: ../lernid/ConnectDialog.py:115
3852+#: ../lernid/ConnectDialog.py:123
3853 #, python-format
3854 msgid "Nick can not begin with: %s"
3855 msgstr ""
3856
3857-#: ../lernid/ConnectDialog.py:119
3858+#: ../lernid/ConnectDialog.py:127
3859 msgid "Nick can not contain blank spaces."
3860 msgstr ""
3861
3862-#: ../lernid/ConnectDialog.py:119
3863+#: ../lernid/ConnectDialog.py:127
3864 #, python-format
3865 msgid "Nick can not contain: %s"
3866 msgstr ""
3867
3868-#: ../lernid/ConnectDialog.py:122
3869+#: ../lernid/ConnectDialog.py:130
3870 msgid "Nick can only contain English alphabet characters"
3871 msgstr ""
3872
3873-#: ../lernid/lernidconfig.py:33
3874+#: ../lernid/lernidconfig.py:35
3875 msgid "Connect to a world of online tutorials quickly and easily."
3876 msgstr ""
3877
3878-#: ../lernid/widgets/NativeChatroom.py:164
3879+#. TRANSLATORS: %s will be a token from the locale of the target classroom session rather than the student's locale
3880+#: ../lernid/widgets/NativeChatroom.py:94
3881+#, python-format
3882+msgid ""
3883+"\"%s\" directs your question to the classroom for an answer from the "
3884+"instructor"
3885+msgstr ""
3886+
3887+#: ../lernid/widgets/NativeChatroom.py:182
3888 msgid "IRC commands are not yet supported."
3889 msgstr ""
3890
3891=== modified file 'po/ms.po'
3892--- po/ms.po 2009-12-12 04:46:46 +0000
3893+++ po/ms.po 2012-05-07 00:49:19 +0000
3894@@ -7,105 +7,278 @@
3895 msgstr ""
3896 "Project-Id-Version: lernid\n"
3897 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
3898-"POT-Creation-Date: 2009-12-10 08:57-0800\n"
3899-"PO-Revision-Date: 2009-12-11 06:43+0000\n"
3900-"Last-Translator: Launchpad Translations Administrators "
3901-"<rosetta@launchpad.net>\n"
3902+"POT-Creation-Date: 2010-08-02 16:11+0200\n"
3903+"PO-Revision-Date: 2011-08-06 02:59+0000\n"
3904+"Last-Translator: abuyop <Unknown>\n"
3905 "Language-Team: Malay <ms@li.org>\n"
3906 "MIME-Version: 1.0\n"
3907 "Content-Type: text/plain; charset=UTF-8\n"
3908 "Content-Transfer-Encoding: 8bit\n"
3909-"X-Launchpad-Export-Date: 2009-12-12 04:46+0000\n"
3910-"X-Generator: Launchpad (build Unknown)\n"
3911+"Plural-Forms: nplurals=2; plural=n != 1;\n"
3912+"X-Launchpad-Export-Date: 2011-08-07 04:39+0000\n"
3913+"X-Generator: Launchpad (build 13613)\n"
3914+
3915+#: ../data/ui/AboutLernidDialog.ui.h:1
3916+msgid "translator-credits"
3917+msgstr ""
3918+"Launchpad Contributions:\n"
3919+" abuyop https://launchpad.net/~abuyop"
3920+
3921+#: ../data/ui/PasswordDialog.ui.h:1
3922+msgid "Invalid password"
3923+msgstr "Kata laluan tidak sah"
3924+
3925+#: ../data/ui/PasswordDialog.ui.h:2
3926+msgid ""
3927+"The NickServ password you entered was invalid.\n"
3928+"Please enter the correct password:"
3929+msgstr ""
3930+"Kata laluan NickServ yang anda masukkan tidak sah.\n"
3931+"Sila masukkan kata laluan yang betul:"
3932+
3933+#. Translators: Local time representation
3934+#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:55
3935+#: ../lernid/Sessions.py:60
3936+msgid "%H:%M"
3937+msgstr "%H:%M"
3938+
3939+#: ../data/ui/PreferencesLernidDialog.ui.h:1
3940+msgid ""
3941+"<i>You need to restart Lernid for some of the changes to take effect.</i>"
3942+msgstr ""
3943+"<i>Anda perlu mulakan semula Lernid supaya beberapa perubahan berkesan.<i>"
3944+
3945+#: ../data/ui/PreferencesLernidDialog.ui.h:2
3946+msgid "Show an icon in the notification area"
3947+msgstr "Papar ikon didalam ruang pemberitahuan"
3948+
3949+#: ../data/ui/PreferencesLernidDialog.ui.h:3
3950+msgid "Show time in classroom and chatroom"
3951+msgstr "Papar masa didalam kelas dan bilik sembang"
3952+
3953+#: ../data/ui/PreferencesLernidDialog.ui.h:4
3954+msgid "Use vertical layout"
3955+msgstr "Guna bentangan menegak"
3956+
3957+#: ../lernid/EventManager.py:96
3958+msgid "Connecting to event"
3959+msgstr "Menyambung ke acara"
3960+
3961+#: ../lernid/EventManager.py:104
3962+msgid "Your nickname is now identified"
3963+msgstr "Gelaran anda kini dikenalpasti"
3964+
3965+#: ../lernid/EventManager.py:139
3966+msgid "Disconnecting from event"
3967+msgstr "Putuskan dari acara"
3968+
3969+#: ../lernid/widgets/Slide.py:109
3970+msgid "An error was encountered while trying to load slide number {0}"
3971+msgstr "Ralat berlaku semasa cuba memuatkan slaid bernombor {0}"
3972+
3973+#: ../lernid/widgets/Slide.py:148
3974+#, python-format
3975+msgid "Downloading session slides ({0} % of {1:.1} MB)..."
3976+msgstr "Memuat turun sesi slaid ({0} % dari {1:.1} MB)..."
3977+
3978+#: ../lernid/widgets/Slide.py:151
3979+msgid "Slides have been downloaded"
3980+msgstr "Slaid telah dimuat turun"
3981+
3982+#: ../lernid/widgets/Slide.py:156
3983+msgid "An error was encountered while downloading slides"
3984+msgstr "Ralat berlaku semasa memuat turun slaid"
3985+
3986+#: ../lernid/widgets/Slide.py:168
3987+msgid "This session does not use slides"
3988+msgstr "Sesi ini tidak menggunakan slaid"
3989
3990 #: ../data/ui/LernidWindow.ui.h:1
3991-msgid "Browser"
3992-msgstr ""
3993+msgid "Classroom"
3994+msgstr "Kelas"
3995
3996 #: ../data/ui/LernidWindow.ui.h:2
3997-msgid "Chatroom"
3998-msgstr ""
3999+msgid "Enter the address you would like to open in the browser:"
4000+msgstr "Masukkan alamat yang anda ingin buka didalam pelayar:"
4001
4002 #: ../data/ui/LernidWindow.ui.h:3
4003-msgid "Classroom"
4004-msgstr ""
4005+msgid "Eve_nt"
4006+msgstr "A_cara"
4007
4008-#: ../data/ui/LernidWindow.ui.h:4 ../lernid.desktop.in.h:1
4009+#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130
4010+#: ../lernid.desktop.in.h:1
4011 msgid "Lernid"
4012 msgstr "Lernid"
4013
4014 #: ../data/ui/LernidWindow.ui.h:5
4015-msgid "Not Connected."
4016-msgstr "Tiada Sambungan"
4017+msgid "Open _URL..."
4018+msgstr "Buka _URL..."
4019
4020 #: ../data/ui/LernidWindow.ui.h:6
4021-msgid "Schedule"
4022-msgstr ""
4023+msgid "Tweet current session"
4024+msgstr "Tweet sesi semasa"
4025
4026 #: ../data/ui/LernidWindow.ui.h:7
4027-msgid "_Event"
4028-msgstr "_Event"
4029+msgid "_Chatroom"
4030+msgstr "_Bilik Sembang"
4031
4032 #: ../data/ui/LernidWindow.ui.h:8
4033+msgid "_Edit"
4034+msgstr "_Sunting"
4035+
4036+#: ../data/ui/LernidWindow.ui.h:9
4037+msgid "_Fullscreen"
4038+msgstr "_Skrin Penuh"
4039+
4040+#: ../data/ui/LernidWindow.ui.h:10
4041 msgid "_Help"
4042 msgstr "_Bantuan"
4043
4044-#: ../data/ui/AboutLernidDialog.ui.h:1
4045-msgid "Connect to a world of online tutorials quickly and easily."
4046-msgstr ""
4047-
4048-#: ../data/ui/AboutLernidDialog.ui.h:2
4049-msgid ""
4050-"Copyright (C) 2009 <Jono Bacon> <jono@ubuntu.com>\n"
4051-"This program is free software: you can redistribute it and/or modify it "
4052-"under the terms of the GNU General Public License version 3, as published by "
4053-"the Free Software Foundation.\n"
4054-"\n"
4055-"This program is distributed in the hope that it will be useful, but WITHOUT "
4056-"ANY WARRANTY; without even the implied warranties of MERCHANTABILITY, "
4057-"SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE. See the GNU "
4058-"General Public License for more details.\n"
4059-"\n"
4060-"You should have received a copy of the GNU General Public License along "
4061-"with this program. If not, see <http://www.gnu.org/licenses/>."
4062-msgstr ""
4063-
4064-#: ../data/ui/AboutLernidDialog.ui.h:8
4065-msgid "translator-credits"
4066-msgstr ""
4067-"Launchpad Contributions:\n"
4068-" Khairul Aizat Kamarudzzaman https://launchpad.net/~fenris"
4069-
4070-#: ../lernid.desktop.in.h:2
4071-msgid "Lernid application"
4072-msgstr ""
4073+#: ../data/ui/LernidWindow.ui.h:11
4074+msgid "_Statusbar"
4075+msgstr "Palang _Status"
4076+
4077+#: ../data/ui/LernidWindow.ui.h:12
4078+msgid "_View"
4079+msgstr "_Lihat"
4080+
4081+#: ../bin/lernid.py:141 ../bin/lernid.py:144 ../bin/lernid.py:199
4082+msgid "_Session"
4083+msgstr "_Sesi"
4084+
4085+#: ../bin/lernid.py:208
4086+msgid "Sche_dule"
4087+msgstr "Ja_dual"
4088+
4089+#: ../bin/lernid.py:215
4090+msgid "_Terminal"
4091+msgstr "_Terminal"
4092+
4093+#: ../bin/lernid.py:226
4094+msgid "({0} user)"
4095+msgid_plural "({0} users)"
4096+msgstr[0] "({0} pengguna)"
4097+msgstr[1] "({0} pengguna)"
4098+
4099+#: ../bin/lernid.py:290
4100+msgid "_Show Lernid"
4101+msgstr "_Papar Lernid"
4102+
4103+#: ../bin/lernid.py:333
4104+msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."
4105+msgstr "Sesi \"{0}\" telah dimulakan dalam #ubuntu-classroom di freenode."
4106+
4107+#: ../bin/lernid.py:424
4108+msgid "Show debug messages"
4109+msgstr "Papar mesej nyahpepijat"
4110+
4111+#: ../bin/lernid.py:426
4112+msgid "Override classroom channel"
4113+msgstr "Batalkan saluran kelas"
4114+
4115+#: ../bin/lernid.py:428
4116+msgid "Filename or URL to Lernid config file"
4117+msgstr "Nama fail atau URL ke fail konfig Lernid"
4118+
4119+#: ../bin/lernid.py:430
4120+msgid "Use web chat widget instead of the native one"
4121+msgstr "Guna widget sembang sesawang selain dari yang ada"
4122+
4123+#: ../lernid/widgets/Schedule.py:80
4124+msgid "Date"
4125+msgstr "Tarikh"
4126+
4127+#: ../lernid/widgets/Schedule.py:88
4128+msgid "Starts"
4129+msgstr "Mula"
4130+
4131+#: ../lernid/widgets/Schedule.py:96
4132+msgid "Ends"
4133+msgstr "Tamat"
4134+
4135+#: ../lernid/widgets/Schedule.py:104 ../lernid/widgets/Schedule.py:109
4136+msgid "Title"
4137+msgstr "Tajuk"
4138+
4139+#: ../lernid/widgets/Schedule.py:163
4140+msgid "Session started"
4141+msgstr "Sesi bermula"
4142+
4143+#: ../lernid/widgets/Schedule.py:164
4144+msgid "The session \"{0}\" has started."
4145+msgstr "Sesi \"{0}\" telah bermula."
4146+
4147+#: ../lernid/widgets/Schedule.py:173
4148+msgid "Session upcoming"
4149+msgstr "Sesi akan datang"
4150+
4151+#: ../lernid/widgets/Schedule.py:174
4152+msgid "The session \"{0}\" will begin in 10 minutes."
4153+msgstr "Sesi \"{0}\" akan dimulakan dalam tempoh 10 minit."
4154+
4155+#: ../data/ui/BrowserWidget.ui.h:1
4156+msgid "Stop browser from changing page"
4157+msgstr "Henti pelayar dari mengubah halaman"
4158+
4159+#: ../lernid/widgets/Classroom.py:78
4160+msgid "Joined classroom"
4161+msgstr "Sertai kelas"
4162
4163 #: ../data/ui/ConnectDialog.ui.h:1
4164+msgid "Advanced options"
4165+msgstr "Pilihan lanjutan"
4166+
4167+#: ../data/ui/ConnectDialog.ui.h:2
4168 msgid "Choose an event"
4169 msgstr "Pilih Acara"
4170
4171-#: ../data/ui/ConnectDialog.ui.h:2
4172-msgid "Event"
4173-msgstr "Acara"
4174-
4175 #: ../data/ui/ConnectDialog.ui.h:3
4176-msgid "Nickname"
4177-msgstr "Nama Panggilan"
4178-
4179-#: ../bin/lernid.py:295 ../bin/lernid.py:296
4180-msgid "Connected to "
4181-msgstr ""
4182-
4183-#: ../bin/lernid.py:325
4184-msgid "Disconnecting from "
4185-msgstr ""
4186-
4187-#: ../bin/lernid.py:416
4188-msgid "Show debug messages"
4189-msgstr ""
4190-
4191-#~ msgid "gtk-cancel"
4192-#~ msgstr "gtk-batal"
4193-
4194-#~ msgid "gtk-ok"
4195-#~ msgstr "gtk-ok"
4196+msgid "Event:"
4197+msgstr "Acara:"
4198+
4199+#: ../data/ui/ConnectDialog.ui.h:4
4200+msgid "NickServ password:"
4201+msgstr "Kata laluan NickServ"
4202+
4203+#: ../data/ui/ConnectDialog.ui.h:5
4204+msgid "Nickname:"
4205+msgstr "Gelaran:"
4206+
4207+#: ../lernid.desktop.in.h:2
4208+msgid "Participate in online learning events"
4209+msgstr "Sertai acara pembelajaran atas-talian"
4210+
4211+#. Translators: Local date representation
4212+#: ../lernid/Sessions.py:50
4213+msgid "%d %B %Y"
4214+msgstr "%d %B %Y"
4215+
4216+#: ../lernid/ConnectDialog.py:111
4217+msgid "Nick can not be blank"
4218+msgstr "Gelaran tidak boleh kosong"
4219+
4220+#: ../lernid/ConnectDialog.py:115
4221+#, python-format
4222+msgid "Nick can not begin with: %s"
4223+msgstr "Gelaran tidak boleh dimulakan dengan: %s"
4224+
4225+#: ../lernid/ConnectDialog.py:119
4226+msgid "Nick can not contain blank spaces."
4227+msgstr "Gelaran tidak boleh mengandungi ruang kosong."
4228+
4229+#: ../lernid/ConnectDialog.py:119
4230+#, python-format
4231+msgid "Nick can not contain: %s"
4232+msgstr "Gelaran tidak boleh mengandungi: %s"
4233+
4234+#: ../lernid/ConnectDialog.py:122
4235+msgid "Nick can only contain English alphabet characters"
4236+msgstr "Gelaran hanya boleh mengandungi aksara abjad Inggeris"
4237+
4238+#: ../lernid/lernidconfig.py:33
4239+msgid "Connect to a world of online tutorials quickly and easily."
4240+msgstr "Sambung ke dunia tutorial atas-talian yang pantas dan mudah."
4241+
4242+#: ../lernid/widgets/NativeChatroom.py:164
4243+msgid "IRC commands are not yet supported."
4244+msgstr "Perintah IRC belum lagi disokong."
4245
4246=== modified file 'po/nb.po'
4247--- po/nb.po 2011-05-01 05:07:06 +0000
4248+++ po/nb.po 2012-05-07 00:49:19 +0000
4249@@ -8,15 +8,15 @@
4250 "Project-Id-Version: lernid\n"
4251 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
4252 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
4253-"PO-Revision-Date: 2011-04-30 18:21+0000\n"
4254-"Last-Translator: Hans Joachim Desserud <Unknown>\n"
4255+"PO-Revision-Date: 2011-06-04 12:27+0000\n"
4256+"Last-Translator: John S. Gruber <JohnSGruber@gmail.com>\n"
4257 "Language-Team: Norwegian Bokmal <nb@li.org>\n"
4258 "MIME-Version: 1.0\n"
4259 "Content-Type: text/plain; charset=UTF-8\n"
4260 "Content-Transfer-Encoding: 8bit\n"
4261 "Plural-Forms: nplurals=2; plural=n != 1;\n"
4262-"X-Launchpad-Export-Date: 2011-05-01 05:07+0000\n"
4263-"X-Generator: Launchpad (build 12758)\n"
4264+"X-Launchpad-Export-Date: 2011-06-05 04:50+0000\n"
4265+"X-Generator: Launchpad (build 12959)\n"
4266
4267 #: ../data/ui/AboutLernidDialog.ui.h:1
4268 msgid "translator-credits"
4269@@ -24,6 +24,7 @@
4270 "Launchpad Contributions:\n"
4271 " Fredrik Fallang https://launchpad.net/~fredrik-fallang\n"
4272 " Hans Joachim Desserud https://launchpad.net/~hjd\n"
4273+" John S. Gruber https://launchpad.net/~jsjgruber\n"
4274 " Lars Åge Kamfjord https://launchpad.net/~laaknor\n"
4275 " Michael Budde https://launchpad.net/~mbudde"
4276
4277
4278=== modified file 'po/nl.po'
4279--- po/nl.po 2010-10-08 04:47:59 +0000
4280+++ po/nl.po 2012-05-07 00:49:19 +0000
4281@@ -8,15 +8,15 @@
4282 "Project-Id-Version: lernid\n"
4283 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
4284 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
4285-"PO-Revision-Date: 2010-10-05 20:12+0000\n"
4286+"PO-Revision-Date: 2011-06-04 12:29+0000\n"
4287 "Last-Translator: Sense Hofstede <u@sensehofstede.nl>\n"
4288 "Language-Team: Dutch <nl@li.org>\n"
4289 "MIME-Version: 1.0\n"
4290 "Content-Type: text/plain; charset=UTF-8\n"
4291 "Content-Transfer-Encoding: 8bit\n"
4292 "Plural-Forms: nplurals=2; plural=n != 1;\n"
4293-"X-Launchpad-Export-Date: 2010-10-08 04:47+0000\n"
4294-"X-Generator: Launchpad (build Unknown)\n"
4295+"X-Launchpad-Export-Date: 2011-06-05 04:50+0000\n"
4296+"X-Generator: Launchpad (build 12959)\n"
4297
4298 #: ../data/ui/AboutLernidDialog.ui.h:1
4299 msgid "translator-credits"
4300
4301=== added file 'po/oc.po'
4302--- po/oc.po 1970-01-01 00:00:00 +0000
4303+++ po/oc.po 2012-05-07 00:49:19 +0000
4304@@ -0,0 +1,284 @@
4305+# Occitan (post 1500) translation for lernid
4306+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
4307+# This file is distributed under the same license as the lernid package.
4308+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
4309+#
4310+msgid ""
4311+msgstr ""
4312+"Project-Id-Version: lernid\n"
4313+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
4314+"POT-Creation-Date: 2010-08-02 16:11+0200\n"
4315+"PO-Revision-Date: 2011-10-16 16:31+0000\n"
4316+"Last-Translator: Cédric VALMARY (Tot en òc) <cvalmary@yahoo.fr>\n"
4317+"Language-Team: Occitan (post 1500) <oc@li.org>\n"
4318+"MIME-Version: 1.0\n"
4319+"Content-Type: text/plain; charset=UTF-8\n"
4320+"Content-Transfer-Encoding: 8bit\n"
4321+"Plural-Forms: nplurals=2; plural=n > 1;\n"
4322+"X-Launchpad-Export-Date: 2011-10-17 04:51+0000\n"
4323+"X-Generator: Launchpad (build 14155)\n"
4324+
4325+#: ../data/ui/AboutLernidDialog.ui.h:1
4326+msgid "translator-credits"
4327+msgstr ""
4328+"Launchpad Contributions:\n"
4329+" Cédric VALMARY (Tot en òc) https://launchpad.net/~cvalmary"
4330+
4331+#: ../data/ui/PasswordDialog.ui.h:1
4332+msgid "Invalid password"
4333+msgstr "Senhal invalid"
4334+
4335+#: ../data/ui/PasswordDialog.ui.h:2
4336+msgid ""
4337+"The NickServ password you entered was invalid.\n"
4338+"Please enter the correct password:"
4339+msgstr ""
4340+"Lo senhal NickServ qu'avètz picat es invalid.\n"
4341+"Picatz lo bon senhal :"
4342+
4343+#. Translators: Local time representation
4344+#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:55
4345+#: ../lernid/Sessions.py:60
4346+msgid "%H:%M"
4347+msgstr "%H:%M"
4348+
4349+#: ../data/ui/PreferencesLernidDialog.ui.h:1
4350+msgid ""
4351+"<i>You need to restart Lernid for some of the changes to take effect.</i>"
4352+msgstr ""
4353+"<i>Vos cal reaviar Lernid per que d'unes cambiaments prengan efièch.</i>"
4354+
4355+#: ../data/ui/PreferencesLernidDialog.ui.h:2
4356+msgid "Show an icon in the notification area"
4357+msgstr "Afichar una icòna dins la zòna de notificacion"
4358+
4359+#: ../data/ui/PreferencesLernidDialog.ui.h:3
4360+msgid "Show time in classroom and chatroom"
4361+msgstr "Afichar l'ora dins la sala de classa e de discussion"
4362+
4363+#: ../data/ui/PreferencesLernidDialog.ui.h:4
4364+msgid "Use vertical layout"
4365+msgstr "Utilizar la mesa en pagina verticala"
4366+
4367+#: ../lernid/EventManager.py:96
4368+msgid "Connecting to event"
4369+msgstr "Connexion a l'eveniment"
4370+
4371+#: ../lernid/EventManager.py:104
4372+msgid "Your nickname is now identified"
4373+msgstr "Vòstre escais es ara identificat"
4374+
4375+#: ../lernid/EventManager.py:139
4376+msgid "Disconnecting from event"
4377+msgstr "Desconnexion de l'eveniment"
4378+
4379+#: ../lernid/widgets/Slide.py:109
4380+msgid "An error was encountered while trying to load slide number {0}"
4381+msgstr ""
4382+
4383+#: ../lernid/widgets/Slide.py:148
4384+#, python-format
4385+msgid "Downloading session slides ({0} % of {1:.1} MB)..."
4386+msgstr ""
4387+
4388+#: ../lernid/widgets/Slide.py:151
4389+msgid "Slides have been downloaded"
4390+msgstr "Las diapositivas son estadas telecargadas"
4391+
4392+#: ../lernid/widgets/Slide.py:156
4393+msgid "An error was encountered while downloading slides"
4394+msgstr ""
4395+
4396+#: ../lernid/widgets/Slide.py:168
4397+msgid "This session does not use slides"
4398+msgstr ""
4399+
4400+#: ../data/ui/LernidWindow.ui.h:1
4401+msgid "Classroom"
4402+msgstr "Sala de classa"
4403+
4404+#: ../data/ui/LernidWindow.ui.h:2
4405+msgid "Enter the address you would like to open in the browser:"
4406+msgstr ""
4407+
4408+#: ../data/ui/LernidWindow.ui.h:3
4409+msgid "Eve_nt"
4410+msgstr "Eve_niment"
4411+
4412+#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130
4413+#: ../lernid.desktop.in.h:1
4414+msgid "Lernid"
4415+msgstr "Lernid"
4416+
4417+#: ../data/ui/LernidWindow.ui.h:5
4418+msgid "Open _URL..."
4419+msgstr "Dobrir l'_URL..."
4420+
4421+#: ../data/ui/LernidWindow.ui.h:6
4422+msgid "Tweet current session"
4423+msgstr "Tweetar la sesilha correnta"
4424+
4425+#: ../data/ui/LernidWindow.ui.h:7
4426+msgid "_Chatroom"
4427+msgstr "Salon de _chat"
4428+
4429+#: ../data/ui/LernidWindow.ui.h:8
4430+msgid "_Edit"
4431+msgstr "_Editar"
4432+
4433+#: ../data/ui/LernidWindow.ui.h:9
4434+msgid "_Fullscreen"
4435+msgstr "Ecran _complet"
4436+
4437+#: ../data/ui/LernidWindow.ui.h:10
4438+msgid "_Help"
4439+msgstr "_Ajuda"
4440+
4441+#: ../data/ui/LernidWindow.ui.h:11
4442+msgid "_Statusbar"
4443+msgstr "Barra d'e_stat"
4444+
4445+#: ../data/ui/LernidWindow.ui.h:12
4446+msgid "_View"
4447+msgstr "_Afichatge"
4448+
4449+#: ../bin/lernid.py:141 ../bin/lernid.py:144 ../bin/lernid.py:199
4450+msgid "_Session"
4451+msgstr "_Sesilha"
4452+
4453+#: ../bin/lernid.py:208
4454+msgid "Sche_dule"
4455+msgstr "Emplec _del temps"
4456+
4457+#: ../bin/lernid.py:215
4458+msgid "_Terminal"
4459+msgstr "_Terminal"
4460+
4461+#: ../bin/lernid.py:226
4462+msgid "({0} user)"
4463+msgid_plural "({0} users)"
4464+msgstr[0] "({0} utilizaire)"
4465+msgstr[1] "({0} utilizaires)"
4466+
4467+#: ../bin/lernid.py:290
4468+msgid "_Show Lernid"
4469+msgstr "Afichar Lernid"
4470+
4471+#: ../bin/lernid.py:333
4472+msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."
4473+msgstr "La sesilha « {0} » a començat dins #ubuntu-classroom sus freenode."
4474+
4475+#: ../bin/lernid.py:424
4476+msgid "Show debug messages"
4477+msgstr "Afichar los messatges de desbugatge"
4478+
4479+#: ../bin/lernid.py:426
4480+msgid "Override classroom channel"
4481+msgstr "Otrapassar lo canal IRC de la sala de classa"
4482+
4483+#: ../bin/lernid.py:428
4484+msgid "Filename or URL to Lernid config file"
4485+msgstr "Nom o URL del fichièr de configuracion de Lernid"
4486+
4487+#: ../bin/lernid.py:430
4488+msgid "Use web chat widget instead of the native one"
4489+msgstr "Utilizar lo widget de chat web al luòc del client natiu"
4490+
4491+#: ../lernid/widgets/Schedule.py:80
4492+msgid "Date"
4493+msgstr "Data"
4494+
4495+#: ../lernid/widgets/Schedule.py:88
4496+msgid "Starts"
4497+msgstr "Comença"
4498+
4499+#: ../lernid/widgets/Schedule.py:96
4500+msgid "Ends"
4501+msgstr "S'acaba lo"
4502+
4503+#: ../lernid/widgets/Schedule.py:104 ../lernid/widgets/Schedule.py:109
4504+msgid "Title"
4505+msgstr "Títol"
4506+
4507+#: ../lernid/widgets/Schedule.py:163
4508+msgid "Session started"
4509+msgstr "Sesilha aviada"
4510+
4511+#: ../lernid/widgets/Schedule.py:164
4512+msgid "The session \"{0}\" has started."
4513+msgstr "La sesilha \"{0}\" a comencat."
4514+
4515+#: ../lernid/widgets/Schedule.py:173
4516+msgid "Session upcoming"
4517+msgstr "Sesilha venenta"
4518+
4519+#: ../lernid/widgets/Schedule.py:174
4520+msgid "The session \"{0}\" will begin in 10 minutes."
4521+msgstr "La sesilha \"{0}\" començarà dins 10 minutas."
4522+
4523+#: ../data/ui/BrowserWidget.ui.h:1
4524+msgid "Stop browser from changing page"
4525+msgstr "Empachar lo navigador de cambiar de pagina"
4526+
4527+#: ../lernid/widgets/Classroom.py:78
4528+msgid "Joined classroom"
4529+msgstr "Avètz rejunt la sala de classa"
4530+
4531+#: ../data/ui/ConnectDialog.ui.h:1
4532+msgid "Advanced options"
4533+msgstr "Opcions avançadas"
4534+
4535+#: ../data/ui/ConnectDialog.ui.h:2
4536+msgid "Choose an event"
4537+msgstr "Causir un eveniment"
4538+
4539+#: ../data/ui/ConnectDialog.ui.h:3
4540+msgid "Event:"
4541+msgstr "Eveniment :"
4542+
4543+#: ../data/ui/ConnectDialog.ui.h:4
4544+msgid "NickServ password:"
4545+msgstr "Senhal NickServ :"
4546+
4547+#: ../data/ui/ConnectDialog.ui.h:5
4548+msgid "Nickname:"
4549+msgstr "Escais :"
4550+
4551+#: ../lernid.desktop.in.h:2
4552+msgid "Participate in online learning events"
4553+msgstr "Prene part a d'eveniments de formacion en linha"
4554+
4555+#. Translators: Local date representation
4556+#: ../lernid/Sessions.py:50
4557+msgid "%d %B %Y"
4558+msgstr "%d %B %Y"
4559+
4560+#: ../lernid/ConnectDialog.py:111
4561+msgid "Nick can not be blank"
4562+msgstr "L'escais pòt pas èsser void"
4563+
4564+#: ../lernid/ConnectDialog.py:115
4565+#, python-format
4566+msgid "Nick can not begin with: %s"
4567+msgstr ""
4568+
4569+#: ../lernid/ConnectDialog.py:119
4570+msgid "Nick can not contain blank spaces."
4571+msgstr ""
4572+
4573+#: ../lernid/ConnectDialog.py:119
4574+#, python-format
4575+msgid "Nick can not contain: %s"
4576+msgstr ""
4577+
4578+#: ../lernid/ConnectDialog.py:122
4579+msgid "Nick can only contain English alphabet characters"
4580+msgstr ""
4581+
4582+#: ../lernid/lernidconfig.py:33
4583+msgid "Connect to a world of online tutorials quickly and easily."
4584+msgstr ""
4585+
4586+#: ../lernid/widgets/NativeChatroom.py:164
4587+msgid "IRC commands are not yet supported."
4588+msgstr ""
4589
4590=== modified file 'po/pt_BR.po'
4591--- po/pt_BR.po 2010-08-03 03:57:01 +0000
4592+++ po/pt_BR.po 2012-05-07 00:49:19 +0000
4593@@ -8,15 +8,15 @@
4594 "Project-Id-Version: lernid\n"
4595 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
4596 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
4597-"PO-Revision-Date: 2010-08-02 16:39+0000\n"
4598-"Last-Translator: Daniel Tiecher <morubidu.angeru@gmail.com>\n"
4599+"PO-Revision-Date: 2011-06-29 18:22+0000\n"
4600+"Last-Translator: André Gondim <Unknown>\n"
4601 "Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
4602 "MIME-Version: 1.0\n"
4603 "Content-Type: text/plain; charset=UTF-8\n"
4604 "Content-Transfer-Encoding: 8bit\n"
4605 "Plural-Forms: nplurals=2; plural=n > 1;\n"
4606-"X-Launchpad-Export-Date: 2010-08-03 03:57+0000\n"
4607-"X-Generator: Launchpad (build Unknown)\n"
4608+"X-Launchpad-Export-Date: 2011-06-30 04:47+0000\n"
4609+"X-Generator: Launchpad (build 13168)\n"
4610
4611 #: ../data/ui/AboutLernidDialog.ui.h:1
4612 msgid "translator-credits"
4613@@ -84,7 +84,7 @@
4614 #: ../lernid/widgets/Slide.py:148
4615 #, python-format
4616 msgid "Downloading session slides ({0} % of {1:.1} MB)..."
4617-msgstr ""
4618+msgstr "Baixando apresetação da sessão ({0} % de {1:.1} MB)..."
4619
4620 #: ../lernid/widgets/Slide.py:151
4621 msgid "Slides have been downloaded"
4622@@ -345,6 +345,18 @@
4623 #~ msgid "David Planella <david.planella@ubuntu.com>"
4624 #~ msgstr "David Planella <david.planella@ubuntu.com>"
4625
4626+#~ msgid "<b>Resources</b>"
4627+#~ msgstr "Recursos"
4628+
4629+#~ msgid "<b>Classroom</b>"
4630+#~ msgstr "Sala de aula"
4631+
4632+#~ msgid "<b>Chatroom</b>"
4633+#~ msgstr "Sala de bate-papo"
4634+
4635+#~ msgid "<b>Schedule</b>"
4636+#~ msgstr "Agenda"
4637+
4638 #~ msgid "Connected to "
4639 #~ msgstr "Conectado a "
4640
4641
4642=== modified file 'po/sv.po'
4643--- po/sv.po 2010-08-03 03:57:01 +0000
4644+++ po/sv.po 2012-05-07 00:49:19 +0000
4645@@ -8,15 +8,15 @@
4646 "Project-Id-Version: lernid\n"
4647 "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
4648 "POT-Creation-Date: 2010-08-02 16:11+0200\n"
4649-"PO-Revision-Date: 2010-08-02 16:23+0000\n"
4650+"PO-Revision-Date: 2011-07-26 11:20+0000\n"
4651 "Last-Translator: Daniel Nylander <yeager@ubuntu.com>\n"
4652 "Language-Team: Swedish <sv@li.org>\n"
4653 "MIME-Version: 1.0\n"
4654 "Content-Type: text/plain; charset=UTF-8\n"
4655 "Content-Transfer-Encoding: 8bit\n"
4656 "Plural-Forms: nplurals=2; plural=n != 1;\n"
4657-"X-Launchpad-Export-Date: 2010-08-03 03:56+0000\n"
4658-"X-Generator: Launchpad (build Unknown)\n"
4659+"X-Launchpad-Export-Date: 2011-07-27 04:38+0000\n"
4660+"X-Generator: Launchpad (build 13405)\n"
4661
4662 #: ../data/ui/AboutLernidDialog.ui.h:1
4663 msgid "translator-credits"
4664@@ -38,6 +38,8 @@
4665 "The NickServ password you entered was invalid.\n"
4666 "Please enter the correct password:"
4667 msgstr ""
4668+"Lösenordet för NickServ som du angav är ogiltigt.\n"
4669+"Ange det korrekta lösenordet:"
4670
4671 #. Translators: Local time representation
4672 #: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:55
4673@@ -64,19 +66,19 @@
4674
4675 #: ../lernid/EventManager.py:96
4676 msgid "Connecting to event"
4677-msgstr ""
4678+msgstr "Ansluter till aktivitet"
4679
4680 #: ../lernid/EventManager.py:104
4681 msgid "Your nickname is now identified"
4682-msgstr ""
4683+msgstr "Ditt smeknamn är nu identifierat"
4684
4685 #: ../lernid/EventManager.py:139
4686 msgid "Disconnecting from event"
4687-msgstr ""
4688+msgstr "Kopplar från aktivitet"
4689
4690 #: ../lernid/widgets/Slide.py:109
4691 msgid "An error was encountered while trying to load slide number {0}"
4692-msgstr ""
4693+msgstr "Ett fel inträffade vid försök att läsa in bild nummer {0}"
4694
4695 #: ../lernid/widgets/Slide.py:148
4696 #, python-format
4697@@ -85,15 +87,15 @@
4698
4699 #: ../lernid/widgets/Slide.py:151
4700 msgid "Slides have been downloaded"
4701-msgstr ""
4702+msgstr "Bilderna har hämtats"
4703
4704 #: ../lernid/widgets/Slide.py:156
4705 msgid "An error was encountered while downloading slides"
4706-msgstr ""
4707+msgstr "Ett fel inträffade vid hämtning av bilder"
4708
4709 #: ../lernid/widgets/Slide.py:168
4710 msgid "This session does not use slides"
4711-msgstr ""
4712+msgstr "Denna session använder inte bilder"
4713
4714 #: ../data/ui/LernidWindow.ui.h:1
4715 msgid "Classroom"
4716@@ -101,11 +103,11 @@
4717
4718 #: ../data/ui/LernidWindow.ui.h:2
4719 msgid "Enter the address you would like to open in the browser:"
4720-msgstr ""
4721+msgstr "Skriv adressen som du vill öppna i webbläsaren:"
4722
4723 #: ../data/ui/LernidWindow.ui.h:3
4724 msgid "Eve_nt"
4725-msgstr ""
4726+msgstr "Eve_nemang"
4727
4728 #: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130
4729 #: ../lernid.desktop.in.h:1
4730@@ -118,7 +120,7 @@
4731
4732 #: ../data/ui/LernidWindow.ui.h:6
4733 msgid "Tweet current session"
4734-msgstr ""
4735+msgstr "Twittra aktuell lektion"
4736
4737 #: ../data/ui/LernidWindow.ui.h:7
4738 msgid "_Chatroom"
4739@@ -146,11 +148,11 @@
4740
4741 #: ../bin/lernid.py:141 ../bin/lernid.py:144 ../bin/lernid.py:199
4742 msgid "_Session"
4743-msgstr ""
4744+msgstr "_Lektion"
4745
4746 #: ../bin/lernid.py:208
4747 msgid "Sche_dule"
4748-msgstr ""
4749+msgstr "Sche_ma"
4750
4751 #: ../bin/lernid.py:215
4752 msgid "_Terminal"
4753@@ -168,7 +170,7 @@
4754
4755 #: ../bin/lernid.py:333
4756 msgid "The session \"{0}\" has started in #ubuntu-classroom on freenode."
4757-msgstr ""
4758+msgstr "Lektionen \"{0}\" har börjat i #ubuntu-classroom på freenode."
4759
4760 #: ../bin/lernid.py:424
4761 msgid "Show debug messages"
4762@@ -176,15 +178,15 @@
4763
4764 #: ../bin/lernid.py:426
4765 msgid "Override classroom channel"
4766-msgstr ""
4767+msgstr "Åsidosätt klassrummets kanal"
4768
4769 #: ../bin/lernid.py:428
4770 msgid "Filename or URL to Lernid config file"
4771-msgstr ""
4772+msgstr "Filnamn eller URL till konfigurationsfilen för Lernid"
4773
4774 #: ../bin/lernid.py:430
4775 msgid "Use web chat widget instead of the native one"
4776-msgstr ""
4777+msgstr "Använd widget för webbchatt istället för den inbyggda"
4778
4779 #: ../lernid/widgets/Schedule.py:80
4780 msgid "Date"
4781@@ -204,15 +206,15 @@
4782
4783 #: ../lernid/widgets/Schedule.py:163
4784 msgid "Session started"
4785-msgstr ""
4786+msgstr "Lektionen har börjat"
4787
4788 #: ../lernid/widgets/Schedule.py:164
4789 msgid "The session \"{0}\" has started."
4790-msgstr ""
4791+msgstr "Lektionen \"{0}\" har börjat."
4792
4793 #: ../lernid/widgets/Schedule.py:173
4794 msgid "Session upcoming"
4795-msgstr ""
4796+msgstr "Kommande lektion"
4797
4798 #: ../lernid/widgets/Schedule.py:174
4799 msgid "The session \"{0}\" will begin in 10 minutes."
4800@@ -220,7 +222,7 @@
4801
4802 #: ../data/ui/BrowserWidget.ui.h:1
4803 msgid "Stop browser from changing page"
4804-msgstr ""
4805+msgstr "Stoppa webbläsaren från att byta sida"
4806
4807 #: ../lernid/widgets/Classroom.py:78
4808 msgid "Joined classroom"
4809@@ -232,15 +234,15 @@
4810
4811 #: ../data/ui/ConnectDialog.ui.h:2
4812 msgid "Choose an event"
4813-msgstr "Välj en händelse"
4814+msgstr "Välj en aktivitet"
4815
4816 #: ../data/ui/ConnectDialog.ui.h:3
4817 msgid "Event:"
4818-msgstr ""
4819+msgstr "Aktivitet:"
4820
4821 #: ../data/ui/ConnectDialog.ui.h:4
4822 msgid "NickServ password:"
4823-msgstr ""
4824+msgstr "Lösenord för NickServ:"
4825
4826 #: ../data/ui/ConnectDialog.ui.h:5
4827 msgid "Nickname:"
4828@@ -284,7 +286,7 @@
4829
4830 #: ../lernid/widgets/NativeChatroom.py:164
4831 msgid "IRC commands are not yet supported."
4832-msgstr ""
4833+msgstr "IRC-kommandon stöds ännu inte."
4834
4835 #~ msgid "Not Connected."
4836 #~ msgstr "Inte ansluten."
4837@@ -341,12 +343,24 @@
4838 #~ msgid "David Planella <david.planella@ubuntu.com>"
4839 #~ msgstr "David Planella <david.planella@ubuntu.com>"
4840
4841+#~ msgid "<b>Resources</b>"
4842+#~ msgstr "<b>Resurser</b>"
4843+
4844+#~ msgid "<b>Classroom</b>"
4845+#~ msgstr "<b>klassrum</b>"
4846+
4847+#~ msgid "<b>Schedule</b>"
4848+#~ msgstr "<b>Schema</b>"
4849+
4850 #~ msgid "Connected to "
4851 #~ msgstr "Ansluten till "
4852
4853 #~ msgid "Disconnecting from "
4854 #~ msgstr "Kopplar från "
4855
4856+#~ msgid "<b>Chatroom</b>"
4857+#~ msgstr "<b>Chatlokal</b>"
4858+
4859 #~ msgid "Lernid application"
4860 #~ msgstr "Lernid-tillämpning"
4861
4862
4863=== added file 'po/tr.po'
4864--- po/tr.po 1970-01-01 00:00:00 +0000
4865+++ po/tr.po 2012-05-07 00:49:19 +0000
4866@@ -0,0 +1,280 @@
4867+# Turkish translation for lernid
4868+# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
4869+# This file is distributed under the same license as the lernid package.
4870+# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
4871+#
4872+msgid ""
4873+msgstr ""
4874+"Project-Id-Version: lernid\n"
4875+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
4876+"POT-Creation-Date: 2010-08-02 16:11+0200\n"
4877+"PO-Revision-Date: 2011-09-01 07:54+0000\n"
4878+"Last-Translator: Launchpad Translations Administrators "
4879+"<rosetta@launchpad.net>\n"
4880+"Language-Team: Turkish <tr@li.org>\n"
4881+"MIME-Version: 1.0\n"
4882+"Content-Type: text/plain; charset=UTF-8\n"
4883+"Content-Transfer-Encoding: 8bit\n"
4884+"Plural-Forms: nplurals=1; plural=0;\n"
4885+"X-Launchpad-Export-Date: 2011-09-02 04:50+0000\n"
4886+"X-Generator: Launchpad (build 13830)\n"
4887+
4888+#: ../data/ui/AboutLernidDialog.ui.h:1
4889+msgid "translator-credits"
4890+msgstr ""
4891+
4892+#: ../data/ui/PasswordDialog.ui.h:1
4893+msgid "Invalid password"
4894+msgstr ""
4895+
4896+#: ../data/ui/PasswordDialog.ui.h:2
4897+msgid ""
4898+"The NickServ password you entered was invalid.\n"
4899+"Please enter the correct password:"
4900+msgstr ""
4901+
4902+#. Translators: Local time representation
4903+#: ../lernid/widgets/IrcWidget.py:57 ../lernid/Sessions.py:55
4904+#: ../lernid/Sessions.py:60
4905+msgid "%H:%M"
4906+msgstr ""
4907+
4908+#: ../data/ui/PreferencesLernidDialog.ui.h:1
4909+msgid ""
4910+"<i>You need to restart Lernid for some of the changes to take effect.</i>"
4911+msgstr ""
4912+
4913+#: ../data/ui/PreferencesLernidDialog.ui.h:2
4914+msgid "Show an icon in the notification area"
4915+msgstr ""
4916+
4917+#: ../data/ui/PreferencesLernidDialog.ui.h:3
4918+msgid "Show time in classroom and chatroom"
4919+msgstr ""
4920+
4921+#: ../data/ui/PreferencesLernidDialog.ui.h:4
4922+msgid "Use vertical layout"
4923+msgstr ""
4924+
4925+#: ../lernid/EventManager.py:96
4926+msgid "Connecting to event"
4927+msgstr ""
4928+
4929+#: ../lernid/EventManager.py:104
4930+msgid "Your nickname is now identified"
4931+msgstr ""
4932+
4933+#: ../lernid/EventManager.py:139
4934+msgid "Disconnecting from event"
4935+msgstr ""
4936+
4937+#: ../lernid/widgets/Slide.py:109
4938+msgid "An error was encountered while trying to load slide number {0}"
4939+msgstr ""
4940+
4941+#: ../lernid/widgets/Slide.py:148
4942+#, python-format
4943+msgid "Downloading session slides ({0} % of {1:.1} MB)..."
4944+msgstr ""
4945+
4946+#: ../lernid/widgets/Slide.py:151
4947+msgid "Slides have been downloaded"
4948+msgstr ""
4949+
4950+#: ../lernid/widgets/Slide.py:156
4951+msgid "An error was encountered while downloading slides"
4952+msgstr ""
4953+
4954+#: ../lernid/widgets/Slide.py:168
4955+msgid "This session does not use slides"
4956+msgstr ""
4957+
4958+#: ../data/ui/LernidWindow.ui.h:1
4959+msgid "Classroom"
4960+msgstr ""
4961+
4962+#: ../data/ui/LernidWindow.ui.h:2
4963+msgid "Enter the address you would like to open in the browser:"
4964+msgstr ""
4965+
4966+#: ../data/ui/LernidWindow.ui.h:3
4967+msgid "Eve_nt"
4968+msgstr ""
4969+
4970+#: ../data/ui/LernidWindow.ui.h:4 ../bin/lernid.py:128 ../bin/lernid.py:130
4971+#: ../lernid.desktop.in.h:1
4972+msgid "Lernid"
4973+msgstr ""
4974+
4975+#: ../data/ui/LernidWindow.ui.h:5
4976+msgid "Open _URL..."
4977+msgstr ""
4978+
4979+#: ../data/ui/LernidWindow.ui.h:6
4980+msgid "Tweet current session"
4981+msgstr ""
4982+
4983+#: ../data/ui/LernidWindow.ui.h:7
4984+msgid "_Chatroom"
4985+msgstr ""
4986+
4987+#: ../data/ui/LernidWindow.ui.h:8
4988+msgid "_Edit"
4989+msgstr ""
4990+
4991+#: ../data/ui/LernidWindow.ui.h:9
4992+msgid "_Fullscreen"
4993+msgstr ""
4994+
4995+#: ../data/ui/LernidWindow.ui.h:10
4996+msgid "_Help"
4997+msgstr ""
4998+
4999+#: ../data/ui/LernidWindow.ui.h:11
5000+msgid "_Statusbar"
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches