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