Package list sugar-log-activity / 516d230
Imported Upstream version 37 Jonas Smedegaard 6 years ago
99 changed file(s) with 8565 addition(s) and 4702 deletion(s). Raw diff Collapse all Expand all
00 [Activity]
11 name = Log
2 activity_version = 24
3 service_name = org.laptop.Log
2 activity_version = 37
3 bundle_id = org.laptop.Log
44 exec = sugar-activity logviewer.LogActivity -s
55 icon = activity-log
66 license = GPLv2+
7 summary = This is an activity designed for anyone who wants to troubleshoot a complicated program on the computer.
0 <?xml version="1.0" encoding="UTF-8"?>
1 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
2 <!ENTITY stroke_color "#FFFFFF">
3 ]>
4 <svg
5 xmlns="http://www.w3.org/2000/svg"
6 version="1.1"
7 width="55"
8 height="55"
9 viewBox="0 0 55 55.000001"
10 id="svg2"
11 xml:space="preserve"><path
12 d="m 4.2043405,14.774001 37.4365555,0"
13 id="line5"
14 style="fill:#4c4d4f;stroke:&stroke_color;;stroke-width:3.5;display:inline" /><line
15 style="fill:#4c4d4f;stroke:&stroke_color;;stroke-width:3.5;display:inline"
16 id="line7"
17 y2="23.360001"
18 y1="23.360001"
19 x2="35.440342"
20 x1="4.2043405"
21 display="inline" /><line
22 style="fill:#4c4d4f;stroke:&stroke_color;;stroke-width:3.5;display:inline"
23 id="line9"
24 y2="31.945002"
25 y1="31.945002"
26 x2="26.677341"
27 x1="4.2043405"
28 display="inline" /><line
29 style="fill:#4c4d4f;stroke:&stroke_color;;stroke-width:3.5;display:inline"
30 id="line11"
31 y2="40.531002"
32 y1="40.531002"
33 x2="34.954342"
34 x1="4.2043405"
35 display="inline" /><path
36 d="m 43.196156,24.814867 c 2.648216,-3.222567 7.528743,-4.693905 4.035316,-9.873535"
37 id="line3687"
38 style="fill:none;stroke:&stroke_color;;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" /><path
39 d="m 49.421192,24.365844 -6.31252,0.536505 0.536505,-6.31252"
40 id="polyline3689"
41 style="fill:none;stroke:&stroke_color;;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" /></svg>
0 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
1 <!-- Created with Inkscape (http://www.inkscape.org/) -->
2
3 <svg
4 xmlns:dc="http://purl.org/dc/elements/1.1/"
5 xmlns:cc="http://creativecommons.org/ns#"
6 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7 xmlns:svg="http://www.w3.org/2000/svg"
8 xmlns="http://www.w3.org/2000/svg"
9 version="1.1"
10 width="55"
11 height="55"
12 viewBox="0 0 55 55"
13 id="svg2"
14 xml:space="preserve"><metadata
15 id="metadata25"><rdf:RDF><cc:Work
16 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
17 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
18 id="defs33">
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 </defs><g
57 transform="matrix(0.75578519,0,0,0.75578519,-4.9396196,-1.2911009)"
58 id="clipping-text"
59 style="fill:none;stroke:#ffffff;stroke-opacity:1;display:block">
60 <g
61 id="g3152"
62 style="fill:none;stroke:#ffffff;stroke-opacity:1;display:inline">
63 <g
64 id="g3154"
65 style="fill:none;stroke:#ffffff;stroke-opacity:1">
66 <polygon
67 points="31.874,6.088 43.818,18.027 43.818,48.914 10.932,48.914 10.932,6.088 "
68 id="polygon3156"
69 style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-opacity:1" />
70 <polyline
71 id="polyline3158"
72 points="43.818,18.027 31.874,18.027 31.874,6.088 "
73 style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-opacity:1" />
74 </g>
75 </g>
76 <line
77 id="line3160"
78 y2="26.25"
79 y1="26.25"
80 x2="36.875"
81 x1="17.875"
82 display="inline"
83 style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-opacity:1;display:inline" />
84 <line
85 id="line3162"
86 y2="33.25"
87 y1="33.25"
88 x2="36.875"
89 x1="17.875"
90 display="inline"
91 style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-opacity:1;display:inline" />
92 <line
93 id="line3164"
94 y2="40.25"
95 y1="40.25"
96 x2="36.875"
97 x1="17.875"
98 display="inline"
99 style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-opacity:1;display:inline" />
100 </g><g
101 id="g3830"><g
102 transform="matrix(0.55205508,0,0,0.55205508,75.618464,18.235971)"
103 id="g4382"><g
104 transform="translate(-80.093659,12.220029)"
105 id="g4308"
106 style="fill:none;stroke:#ffffff;stroke-opacity:1"><g
107 id="g4310"
108 style="fill:none;stroke:#ffffff;stroke-opacity:1"><path
109 d="m 6.736,49.002 h 24.52 c 2.225,0 3.439,-1.447 3.439,-3.441 v -27.28 c 0,-1.73 -1.732,-3.441 -3.439,-3.441 h -4.389"
110 id="path4312"
111 style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /></g></g><g
112 transform="translate(-80.093659,12.220029)"
113 id="g4314"
114 style="fill:none;stroke:#ffffff;stroke-opacity:1"><g
115 id="g4316"
116 style="fill:none;stroke:#ffffff;stroke-opacity:1"><path
117 d="m 26.867,38.592 c 0,1.836 -1.345,3.201 -3.441,4.047 L 6.736,49.002 V 14.84 l 16.69,-8.599 c 2.228,-0.394 3.441,0.84 3.441,2.834 v 29.517 z"
118 id="path4318"
119 style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /></g></g><path
120 d="m -70.669659,54.827029 c 0,0 -1.351,-0.543 -2.702,-0.543 -1.351,0 -2.703,0.543 -2.703,0.543"
121 id="path4320"
122 style="fill:none;stroke:#ffffff;stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path
123 d="m -70.669659,44.226029 c 0,0 -1.239,-0.543 -2.815,-0.543 -1.577,0 -2.59,0.543 -2.59,0.543"
124 id="path4322"
125 style="fill:none;stroke:#ffffff;stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><path
126 d="m -70.669659,33.898029 c 0,0 -1.125,-0.544 -2.927,-0.544 -1.802,0 -2.478,0.544 -2.478,0.544"
127 id="path4324"
128 style="fill:none;stroke:#ffffff;stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /><line
129 id="line4326"
130 y2="23.725029"
131 y1="58.753029"
132 x2="-66.884659"
133 x1="-66.884659"
134 style="fill:none;stroke:#ffffff;stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" /></g><g
135 transform="matrix(1,0,0,-1,-30.386573,49.171266)"
136 id="g4770"><g
137 transform="translate(34.0803,-1006.42)"
138 id="g4772"><polyline
139 id="polyline4774"
140 points="51.562,15.306 41.17,16.188 42.053,5.794"
141 style="fill:none;stroke:#ffffff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round"
142 transform="matrix(-0.469241,0.469241,-0.469241,-0.469241,66.2906,1019.03)" /><path
143 d="m 39.363241,1033.1291 -0.05636,9.9115 -8.750608,0.067"
144 id="path4776"
145 style="fill:none;stroke:#ffffff;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /></g></g></g></svg>
5050 import mimetypes
5151 import urlparse
5252
53 MFG_DATA_PATHS = ['/ofw/mfg-data/', '/proc/device-tree/mfg-data/']
54
55
5356 class MachineProperties:
5457 """Various machine properties in easy to access chunks.
5558 """
109112 if line.find('MemFree:') > -1:
110113 return line[8:].strip()
111114
112 def _mfg_data(self, item):
113 """Return mfg data item from /ofw/mfg-data/"""
114
115 if not os.path.exists('/ofw/mfg-data/'+item):
116 return ''
117
118 v = self.__read_file('/ofw/mfg-data/'+item)
119 # Remove trailing 0 character, if any:
115 def _trim_null(self, v):
120116 if v != '' and ord(v[len(v)-1]) == 0:
121117 v = v[:len(v)-1]
122
123118 return v
124
119
120 def _mfg_data(self, item):
121 """Return mfg data item from mfg-data directory"""
122
123 mfg_path = None
124 for test_path in MFG_DATA_PATHS:
125 if os.path.exists(test_path + item):
126 mfg_path = test_path + item
127 break
128 if mfg_path == None:
129 return ''
130
131 v = self._trim_null(self.__read_file(mfg_path))
132 return v
133
125134 def laptop_serial_number(self):
126135 return self._mfg_data('SN')
127136
149158 return self._mfg_data('WM')
150159
151160 def laptop_bios_version(self):
152 return self._mfg_data('BV')
161 try:
162 d = open('/proc/device-tree/openprom/model', 'r').read()
163 v = self._trim_null(d)
164 return v
165 except:
166 pass
167
168 try:
169 d = open('/ofw/openprom/model', 'r').read()
170 v = self._trim_null(d)
171 return v
172 except:
173 pass
174
175 try:
176 d = open('/sys/class/dmi/id/bios_version', 'r').read()
177 v = self._trim_null(d)
178 return v
179 except:
180 pass
181
182 return ''
153183
154184 def laptop_country(self):
155185 return self._mfg_data('LA')
221251
222252 def installed_activities(self):
223253 s = ''
224 for path in glob.glob('/usr/share/activities/*.activity'):
254 for path in glob.glob('/usr/share/sugar/activities/*.activity'):
225255 s += os.path.basename(path) + '\n'
226256
227 for path in glob.glob('/home/olpc/Activities/*'):
257 home = os.path.expanduser('~')
258 for path in glob.glob(os.path.join(home, 'Activities', '*')):
228259 s += '~' + os.path.basename(path) + '\n'
229260
230261 return s
284315 except Exception, e:
285316 z.writestr('var-log/'+fn,
286317 "logcollect: could not add %s: %s" % (fn, e))
287
288 # Include all current ones from sugar/logs
289 for path in glob.glob('/home/olpc/.sugar/default/logs/*.log'):
290 try:
291 if os.access(path, os.F_OK):
318
319 home = os.path.expanduser('~')
320 here = os.path.join(home, '.sugar/default/logs/*.log')
321 for path in glob.glob(here):
322 if os.access(path, os.F_OK):
323 pref = 'sugar-logs/'
324 name = os.path.join(pref, os.path.basename(path))
325 try:
292326 if logbytes == 0:
293 z.write(path, 'sugar-logs/'+os.path.basename(path))
327 z.write(path, name)
294328 else:
295 z.writestr('sugar-logs/'+os.path.basename(path),
329 z.writestr(name,
296330 self.file_tail(path, logbytes))
297 except Exception, e:
298 z.writestr('sugar-logs/'+fn,
299 "logcollect: could not add %s: %s" % (fn, e))
331 except Exception, e:
332 z.writestr(name,
333 "logcollect: could not add %s: %s" % (name, e))
334 here = os.path.join(home, '.sugar/default/logs/*/*.log')
335 for path in glob.glob(here):
336 if os.access(path, os.F_OK):
337 when = os.path.basename(os.path.dirname(path))
338 pref = 'sugar-logs-%s/' % when
339 name = os.path.join(pref, os.path.basename(path))
340 try:
341 if logbytes == 0:
342 z.write(path, name)
343 else:
344 z.writestr(name,
345 self.file_tail(path, logbytes))
346 except Exception, e:
347 z.writestr(name,
348 "logcollect: could not add %s: %s" % (name, e))
300349 try:
301350 z.write('/etc/resolv.conf')
302351 except Exception, e:
356405 # Do not include UUID!
357406 s += 'laptop-info-version: 1.0\n'
358407 s += 'clock: %f\n' % time.clock()
359 s += 'date: %s' % time.strftime("%a, %d %b %Y %H:%M:%S +0000",
408 s += 'date: %s\n' % time.strftime("%a, %d %b %Y %H:%M:%S +0000",
360409 time.gmtime())
361410 s += 'memfree: %s\n' % self._mp.memfree()
362411 s += 'disksize: %s MB\n' % ( self._mp.disksize('/') / (1024*1024) )
483532 print """logcollect.py - send your XO logs to OLPC
484533
485534 Usage:
486 logcollect.py http - send logs to default server
487
488535 logcollect.py http://server.name/submit.php
489 - submit logs to alternative server
536 - submit logs to a server
490537
491538 logcollect.py file:/media/xxxx-yyyy/mylog.zip
492539 - save the zip file on a USB device or SD card
535582 if mode.startswith('http'):
536583 print "Trying to send the logs using HTTP (web)"
537584 if len(mode) == 4:
538 url = 'http://olpc.scheffers.net/olpc/submit.tcl'
585 print "No default log destination, aborting"
586 sys.exit(1)
539587 else:
540588 url = mode
541589
1515 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
1616
1717 import os
18 import time
1819 import logging
1920 from gettext import gettext as _
2021
2122 import re
2223
23 import gtk
24 import pango
25 import gobject
26 import gio
27
28 from sugar.activity import activity
29 from sugar import env
30 from sugar.graphics import iconentry
31 from sugar.graphics.toolbutton import ToolButton
32 from sugar.graphics.toggletoolbutton import ToggleToolButton
33 from sugar.graphics.palette import Palette
34 from sugar.graphics.alert import NotifyAlert
35 from logcollect import LogCollect, LogSend
36 from sugar.graphics.toolbarbox import ToolbarButton, ToolbarBox
37 from sugar.activity.widgets import *
24 from gi.repository import Gtk
25 from gi.repository import Gdk
26 from gi.repository import Pango
27 from gi.repository import GObject
28 from gi.repository import Gio
29
30 from sugar3.activity import activity
31 from sugar3.activity.widgets import ActivityToolbarButton
32 from sugar3 import env
33 from sugar3.graphics import iconentry
34 from sugar3.graphics.toolbutton import ToolButton
35 from sugar3.graphics.toggletoolbutton import ToggleToolButton
36 from sugar3.graphics.palette import Palette
37 from sugar3.graphics.alert import NotifyAlert
38 from logcollect import LogCollect
39 from sugar3.graphics.toolbarbox import ToolbarBox
40 from sugar3.graphics.toolbarbox import ToolbarButton
41 from sugar3.activity.widgets import CopyButton, StopButton
42 from sugar3.datastore import datastore
43
44
45 _AUTOSEARCH_TIMEOUT = 1000
46
3847
3948 # Should be builtin to sugar.graphics.alert.NotifyAlert...
4049 def _notify_response_cb(notify, response, activity):
4150 activity.remove_alert(notify)
4251
43 class MultiLogView(gtk.HPaned):
52
53 class MultiLogView(Gtk.Paned):
54
4455 def __init__(self, paths, extra_files):
45 gtk.HPaned.__init__(self)
56 GObject.GObject.__init__(self)
57 self.set_orientation(Gtk.Orientation.HORIZONTAL)
4658
4759 self.paths = paths
4860 self.extra_files = extra_files
6375 self._find_logs()
6476
6577 def _build_treeview(self):
66 self._treeview = gtk.TreeView()
78 self._treeview = Gtk.TreeView()
6779
6880 self._treeview.set_rules_hint(True)
6981 self._treeview.connect('cursor-changed', self._cursor_changed_cb)
70
71 self._treemodel = gtk.TreeStore(gobject.TYPE_STRING)
72
73 sorted = gtk.TreeModelSort(self._treemodel)
74 sorted.set_sort_column_id(0, gtk.SORT_ASCENDING)
82 self._treeview.set_enable_search(False)
83
84 self._treemodel = Gtk.TreeStore(GObject.TYPE_STRING,
85 GObject.TYPE_STRING)
86
87 # README: https://bugzilla.gnome.org/show_bug.cgi?id=680009
88 sorted = self._treemodel.sort_new_with_model()
89 sorted.set_sort_column_id(0, Gtk.SortType.ASCENDING)
7590 sorted.set_sort_func(0, self._sort_logfile)
7691 self._treeview.set_model(sorted)
7792
78 renderer = gtk.CellRendererText()
79 col = gtk.TreeViewColumn(_('Log Files'), renderer, text=0)
93 renderer = Gtk.CellRendererText()
94 col = Gtk.TreeViewColumn(_('Log Files'), renderer, text=0)
8095 self._treeview.append_column(col)
96
97 renderer = Gtk.CellRendererText()
98 col = Gtk.TreeViewColumn('', renderer, text=1)
99 self._treeview.append_column(col)
100 col.props.visible = False
81101
82102 self.path_iter = {}
83103 for p in self.paths:
84 self.path_iter[p] = self._treemodel.append(None, [p])
104 self.path_iter[p] = self._treemodel.append(None, [p, ''])
85105
86106 if len(self.extra_files):
87 self.extra_iter = self._treemodel.append(None, [_('Other')])
88
89 scroll = gtk.ScrolledWindow()
90 scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
91 scroll.add(self._treeview)
92 scroll.set_size_request(gtk.gdk.screen_width() * 30 / 100, -1)
93
94 self.add1(scroll)
107 self.extra_iter = self._treemodel.append(None, [_('Other'), ''])
108
109 self.list_scroll = Gtk.ScrolledWindow()
110 self.list_scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
111 self.list_scroll.add(self._treeview)
112 self.list_scroll.set_size_request(Gdk.Screen.width() * 30 / 100, -1)
113
114 self.add1(self.list_scroll)
95115
96116 def _build_textview(self):
97 self._textview = gtk.TextView()
98 self._textview.set_wrap_mode(gtk.WRAP_NONE)
99
100 pangoFont = pango.FontDescription('Mono')
117 self._textview = Gtk.TextView()
118 self._textview.set_wrap_mode(Gtk.WrapMode.NONE)
119
120 pangoFont = Pango.FontDescription('Mono')
101121 self._textview.modify_font(pangoFont)
102122
103 bgcolor = gtk.gdk.color_parse('#FFFFFF')
104 self._textview.modify_base(gtk.STATE_NORMAL, bgcolor)
123 bgcolor = Gdk.color_parse('#FFFFFF')
124 self._textview.modify_base(Gtk.StateType.NORMAL, bgcolor)
105125
106126 self._textview.set_editable(False)
107127
108 self._tagtable = gtk.TextTagTable()
109 hilite_tag = gtk.TextTag('search-hilite')
110 hilite_tag.props.background = '#FFFFB0'
111 self._tagtable.add(hilite_tag)
112 select_tag = gtk.TextTag('search-select')
113 select_tag.props.background = '#B0B0FF'
114 self._tagtable.add(select_tag)
115
116 scroll = gtk.ScrolledWindow()
117 scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
128 scroll = Gtk.ScrolledWindow()
129 scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
118130 scroll.add(self._textview)
119131
120132 self.add2(scroll)
121133
122 def _sort_logfile(self, treemodel, itera, iterb):
134 def _sort_logfile(self, treemodel, itera, iterb, user_data=None):
123135 a = treemodel.get_value(itera, 0)
124136 b = treemodel.get_value(iterb, 0)
125137 if a == None or b == None:
133145 ma = logre.match(a)
134146 mb = logre.match(b)
135147 if ma and mb:
136 if ma.group(1) > mb.group(1): return 1
137 if ma.group(1) < mb.group(1): return -1
138 if int(ma.group(2)) > int(mb.group(2)): return 1
139 if int(ma.group(2)) < int(mb.group(2)): return -1
148 if ma.group(1) > mb.group(1):
149 return 1
150 if ma.group(1) < mb.group(1):
151 return -1
152 if int(ma.group(2)) > int(mb.group(2)):
153 return 1
154 if int(ma.group(2)) < int(mb.group(2)):
155 return -1
140156 return 0
141157 else:
142 if a > b: return 1
143 if a < b: return -1
158 # Put first the files and later the directories
159 if a.endswith('.log') and not b.endswith('.log'):
160 return -1
161 if b.endswith('.log') and not a.endswith('.log'):
162 return 1
163
164 if a > b:
165 return 1
166 if a < b:
167 return -1
144168 return 0
145169
146170 def _configure_watcher(self):
147171 # Setting where GIO will be watching
148172 for p in self.paths:
149 monitor = gio.File(p).monitor_directory()
173 monitor = Gio.File.new_for_path(p)\
174 .monitor_directory(Gio.FileMonitorFlags.NONE, None)
150175 monitor.connect('changed', self._log_file_changed_cb)
151176 self._gio_monitors.append(monitor)
152177
178 # We don't need monitor old logs, them will no change
179
153180 for f in self.extra_files:
154 monitor = gio.File(f).monitor_file()
181 monitor = Gio.File.new_for_path(f)\
182 .monitor_file(Gio.FileMonitorFlags.NONE, None)
155183 monitor.connect('changed', self._log_file_changed_cb)
156184 self._gio_monitors.append(monitor)
157185
158 def _log_file_changed_cb(self, monitor, file, other_file, event):
159 logfile = file.get_basename()
160
161 if event == gio.FILE_MONITOR_EVENT_CHANGED:
162 if self.logs.has_key(logfile):
186 def _log_file_changed_cb(self, monitor, log_file, other_file, event):
187 logfile = log_file.get_basename()
188
189 if event == Gio.FileMonitorEvent.CHANGED:
190 if logfile in self.logs:
163191 self.logs[logfile].update()
164 elif event == gio.FILE_MONITOR_EVENT_DELETED:
165 if self.logs.has_key(logfile):
192 elif event == Gio.FileMonitorEvent.DELETED:
193 if logfile in self.logs:
166194 self._remove_log_file(logfile)
167 elif event == gio.FILE_MONITOR_EVENT_CREATED:
168 self._add_log_file(file.get_path())
195 elif event == Gio.FileMonitorEvent.CREATED:
196 self._add_log_file(log_file.get_path())
169197
170198 def _cursor_changed_cb(self, treeview):
171 treestore, iter = self._treeview.get_selection().get_selected()
172 self._show_log(treestore.get_value(iter, 0))
199 selection = self._treeview.get_selection()
200 if selection is not None:
201 treestore, text_iter = selection.get_selected()
202 if text_iter is not None:
203 self._show_log(treestore.get_value(text_iter, 1))
204 if treestore.iter_has_child(text_iter):
205 path = treestore.get_path(text_iter)
206 if treeview.row_expanded(path):
207 treeview.collapse_row(path)
208 else:
209 treeview.expand_row(path, False)
173210
174211 def _show_log(self, logfile):
175 if self.logs.has_key(logfile):
212 if logfile in self.logs:
176213 log = self.logs[logfile]
177214 self._textview.set_buffer(log)
178 self._textview.scroll_to_mark(log.get_insert(), 0)
215 self._textview.scroll_to_mark(
216 log.get_insert(), 0, use_align=False, xalign=0.5, yalign=0.5)
179217 self.active_log = log
180218
181219 def _find_logs(self):
183221 try:
184222 files = os.listdir(path)
185223 except:
186 logging.debug(_("ERROR: Failed to look for files in '%(path)s'.") % {'path': path})
224 logging.debug(
225 _("ERROR: Failed to look for files in '%(path)s'.") %
226 {'path': path})
187227 else:
188228 for logfile in files:
189229 self._add_log_file(os.path.join(path, logfile))
193233
194234 self._treeview.expand_all()
195235
196 def _add_log_file(self, path):
236 def _add_log_file(self, path, parent=None, _dir=None):
197237 if os.path.isdir(path):
238 pdir, _dir = os.path.split(path)
239 if pdir == self.paths[0]:
240 self._add_old_logs_dir(pdir, _dir)
241
198242 return False
199243
200244 if not os.path.exists(path):
201 logging.debug(_("ERROR: File '%(file)s' does not exist.") % {'file': path})
245 logging.debug(_("ERROR: File '%(file)s' does not exist.") %
246 {'file': path})
202247 return False
203248
204 if not os.access(path, os.R_OK):
205 logging.debug(_("ERROR: Unable to read file '%(file)s'.") % {'file': path})
249 if not os.access(path, os.R_OK):
250 logging.debug(_("ERROR: Unable to read file '%(file)s'.") %
251 {'file': path})
206252 return False
207253
208 dir, logfile = os.path.split(path)
209
210 if not self.logs.has_key(logfile):
211 parent = self.extra_iter
212 if self.path_iter.has_key(dir):
213 parent = self.path_iter[dir]
214 iter = self._treemodel.append(parent, [logfile])
215
216 model = LogBuffer(self._tagtable, path, iter)
254 directory, logfile = os.path.split(path)
255 name = logfile
256
257 if _dir:
258 logfile = '%s/%s' % (_dir, logfile)
259
260 if not logfile in self.logs or _dir:
261 if not parent:
262 parent = self.extra_iter
263 if directory in self.path_iter:
264 parent = self.path_iter[directory]
265 tree_iter = self._treemodel.append(parent, [name, logfile])
266
267 model = LogBuffer(path, tree_iter)
268
217269 self.logs[logfile] = model
218270
219271 log = self.logs[logfile]
223275 if self.active_log == None:
224276 self.active_log = log
225277 self._show_log(logfile)
226 iter = self._treeview.get_model().convert_child_iter_to_iter(None, log.iter)
227 self._treeview.get_selection().select_iter(iter)
278 success, log_iter = \
279 self._treeview.get_model().convert_child_iter_to_iter(log.iter)
280 self._treeview.get_selection().select_iter(log_iter)
228281
229282 if written > 0 and self.active_log == log:
230 self._textview.scroll_to_mark(log.get_insert(), 0)
283 self._textview.scroll_to_mark(
284 log.get_insert(), 0, use_align=False, xalign=0.5, yalign=0.5)
285
286 def _add_old_logs_dir(self, path, _dir):
287 # Add a directory with their respective logs
288 complete = os.path.join(path, _dir)
289 name = time.ctime(float(_dir))
290 parent = self._treemodel.append(self.path_iter[path], [name, ''])
291 for p in os.listdir(complete):
292 self._add_log_file(os.path.join(complete, p), parent, _dir)
293
294 return parent
231295
232296 def _remove_log_file(self, logfile):
233297 log = self.logs[logfile]
238302
239303 def set_search_text(self, text):
240304 self.search_text = text
241
242 buffer = self._textview.get_buffer()
243
244 start, end = buffer.get_bounds()
245 buffer.remove_tag_by_name('search-hilite', start, end)
246 buffer.remove_tag_by_name('search-select', start, end)
247
248 iter = buffer.get_start_iter()
305
306 _buffer = self._textview.get_buffer()
307
308 start, end = _buffer.get_bounds()
309 _buffer.remove_tag_by_name('search-hilite', start, end)
310 _buffer.remove_tag_by_name('search-select', start, end)
311
312 text_iter = _buffer.get_start_iter()
313
249314 while True:
250 next = iter.forward_search(text, 0)
251 if next is None: break
252 start, end = next
253 buffer.apply_tag_by_name('search-hilite', start, end)
254 iter = end
315 next_found = text_iter.forward_search(text, 0, None)
316 if next_found is None:
317 break
318 start, end = next_found
319 _buffer.apply_tag_by_name('search-hilite', start, end)
320 text_iter = end
255321
256322 if self.get_next_result('current'):
257323 self.search_next('current')
258324 elif self.get_next_result('backward'):
259325 self.search_next('backward')
260326
261 def get_next_result(self, dir):
262 buffer = self._textview.get_buffer()
263
264 if dir == 'forward':
265 iter = buffer.get_iter_at_mark(buffer.get_insert())
266 iter.forward_char()
327 def get_next_result(self, direction):
328 _buffer = self._textview.get_buffer()
329
330 if direction == 'forward':
331 text_iter = _buffer.get_iter_at_mark(_buffer.get_insert())
332 text_iter.forward_char()
267333 else:
268 iter = buffer.get_iter_at_mark(buffer.get_insert())
269
270 if dir == 'backward':
271 return iter.backward_search(self.search_text, 0)
334 text_iter = _buffer.get_iter_at_mark(_buffer.get_insert())
335
336 if direction == 'backward':
337 return text_iter.backward_search(self.search_text, 0, None)
272338 else:
273 return iter.forward_search(self.search_text, 0)
274
275 def search_next(self, dir):
276 next = self.get_next_result(dir)
277 if next:
278 buffer = self._textview.get_buffer()
279
280 start, end = buffer.get_bounds()
281 buffer.remove_tag_by_name('search-select', start, end)
282
283 start, end = next
284 buffer.apply_tag_by_name('search-select', start, end)
285
286 buffer.place_cursor(start)
287
288 self._textview.scroll_to_iter(start, 0.1)
289 self._textview.scroll_to_iter(end, 0.1)
290
291 class LogBuffer(gtk.TextBuffer):
292 def __init__(self, tagtable, logfile, iter):
293 gtk.TextBuffer.__init__(self, tagtable)
339 return text_iter.forward_search(self.search_text, 0, None)
340
341 def search_next(self, direction):
342 next_found = self.get_next_result(direction)
343 if next_found:
344 _buffer = self._textview.get_buffer()
345
346 start, end = _buffer.get_bounds()
347 _buffer.remove_tag_by_name('search-select', start, end)
348
349 start, end = next_found
350 _buffer.apply_tag_by_name('search-select', start, end)
351
352 _buffer.place_cursor(start)
353
354 self._textview.scroll_to_iter(start, 0.1, use_align=False,
355 xalign=0.5, yalign=0.5)
356 self._textview.scroll_to_iter(end, 0.1, use_align=False,
357 xalign=0.5, yalign=0.5)
358
359
360 class LogBuffer(Gtk.TextBuffer):
361
362 def __init__(self, logfile, iterator):
363 GObject.GObject.__init__(self)
364
365 _tagtable = self.get_tag_table()
366 hilite_tag = Gtk.TextTag.new('search-hilite')
367 hilite_tag.props.background = '#FFFFB0'
368 _tagtable.add(hilite_tag)
369 select_tag = Gtk.TextTag.new('search-select')
370 select_tag.props.background = '#B0B0FF'
371 _tagtable.add(select_tag)
294372
295373 self.logfile = logfile
296374 self._pos = 0
297 self.iter = iter
375 self.iter = iterator
298376 self.update()
299377
300378 def append_formatted_text(self, text):
308386 try:
309387 f = open(self.logfile, 'r')
310388 init_pos = self._pos
311
389
312390 f.seek(self._pos)
313391 self.append_formatted_text(f.read())
314392 self._pos = f.tell()
315393 f.close()
316
394
317395 self._written = (self._pos - init_pos)
318396 except:
319 self.insert(self.get_end_iter(), _("Error: Can't open file '%s'\n") % self.logfile)
397 self.insert(self.get_end_iter(),
398 _("Error: Can't open file '%s'\n") % self.logfile)
320399 self._written = 0
400
321401
322402 class LogActivity(activity.Activity):
323403 def __init__(self, handle):
324404 activity.Activity.__init__(self, handle)
325 self.set_title(_('Log'))
405
406 self._autosearch_timer = None
326407
327408 # Paths to watch: ~/.sugar/someuser/logs, /var/log
328409 paths = []
339420
340421 self._build_toolbox()
341422
423 # Get Sugar's clipboard
424 self.clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
342425 self.show()
426
427 self._configure_cb(None)
428
429 Gdk.Screen.get_default().connect('size-changed', self._configure_cb)
343430
344431 def _build_toolbox(self):
345432 toolbar_box = ToolbarBox()
346433
347434 self.max_participants = 1
435
348436 activity_button = ActivityToolbarButton(self)
349 toolbar_box.toolbar.insert(activity_button, -1)
350
351 separator = gtk.SeparatorToolItem()
352 separator.set_draw(False)
353 toolbar_box.toolbar.insert(separator, -1)
437 activity_toolbar = activity_button.page
438
439 self._toolbar = toolbar_box.toolbar
440 self._toolbar.insert(activity_button, -1)
441
442 self._secondary_toolbar = Gtk.Toolbar()
443 self._secondary_toolbar_button = ToolbarButton(
444 page=self._secondary_toolbar,
445 icon_name='system-search')
446 self._secondary_toolbar.show()
447 self._toolbar.insert(self._secondary_toolbar_button, -1)
448 self._secondary_toolbar_button.hide()
449
450 show_list = ToggleToolButton('view-list')
451 show_list.set_active(True)
452 show_list.set_tooltip(_('Show list of files'))
453 show_list.connect('toggled', self._list_toggled_cb)
454 self._toolbar.insert(show_list, -1)
455 show_list.show()
354456
355457 copy = CopyButton()
356458 copy.connect('clicked', self.__copy_clicked_cb)
357 toolbar_box.toolbar.insert(copy, -1)
358
359 wrap_btn = ToggleToolButton('format-justify-left')
459 self._toolbar.insert(copy, -1)
460
461 wrap_btn = ToggleToolButton("format-wrap")
360462 wrap_btn.set_tooltip(_('Word Wrap'))
361463 wrap_btn.connect('clicked', self._wrap_cb)
362 toolbar_box.toolbar.insert(wrap_btn, -1)
363
364 separator = gtk.SeparatorToolItem()
365 separator.set_draw(False)
366 toolbar_box.toolbar.insert(separator, -1)
367
368 search_entry = iconentry.IconEntry()
369 search_entry.set_size_request(gtk.gdk.screen_width() / 3, -1)
370 search_entry.set_icon_from_name(
371 iconentry.ICON_ENTRY_PRIMARY, 'system-search')
372 search_entry.add_clear_button()
373 search_entry.connect('activate', self._search_entry_activate_cb)
374 search_entry.connect('changed', self._search_entry_changed_cb)
375 search_item = gtk.ToolItem()
376 search_item.add(search_entry)
377 toolbar_box.toolbar.insert(search_item, -1)
464 self._toolbar.insert(wrap_btn, -1)
465
466 self.search_entry = iconentry.IconEntry()
467 self.search_entry.set_size_request(Gdk.Screen.width() / 3, -1)
468 self.search_entry.set_icon_from_name(
469 iconentry.ICON_ENTRY_PRIMARY, 'entry-search')
470 self.search_entry.add_clear_button()
471 self.search_entry.connect('activate', self._search_entry_activate_cb)
472 self.search_entry.connect('changed', self._search_entry_changed_cb)
473 self._search_item = Gtk.ToolItem()
474 self._search_item.add(self.search_entry)
475 self._toolbar.insert(self._search_item, -1)
378476
379477 self._search_prev = ToolButton('go-previous-paired')
380478 self._search_prev.set_tooltip(_('Previous'))
381479 self._search_prev.connect('clicked', self._search_prev_cb)
382 toolbar_box.toolbar.insert(self._search_prev, -1)
480 self._toolbar.insert(self._search_prev, -1)
383481
384482 self._search_next = ToolButton('go-next-paired')
385483 self._search_next.set_tooltip(_('Next'))
386484 self._search_next.connect('clicked', self._search_next_cb)
387 toolbar_box.toolbar.insert(self._search_next, -1)
485 self._toolbar.insert(self._search_next, -1)
388486
389487 self._update_search_buttons()
390488
391 separator = gtk.SeparatorToolItem()
392 toolbar_box.toolbar.insert(separator, -1)
393
394 edit_toolbar = gtk.Toolbar()
395
396 delete_btn = ToolButton('list-remove')
397 delete_btn.set_tooltip(_('Delete Log File'))
398 delete_btn.connect('clicked', self._delete_log_cb)
399 edit_toolbar.insert(delete_btn, -1)
400
401489 self.collector_palette = CollectorPalette(self)
402 collector_btn = ToolButton('zoom-best-fit')
490 collector_btn = ToolButton('log-export')
403491 collector_btn.set_palette(self.collector_palette)
404492 collector_btn.connect('clicked', self._logviewer_cb)
405 edit_toolbar.insert(collector_btn, -1)
406
407 edit_toolbar.show_all()
408
409 edit_button = ToolbarButton()
410 edit_button.props.page = edit_toolbar
411 edit_button.props.label = _('Tools')
412 edit_button.props.icon_name = 'view-source'
413 toolbar_box.toolbar.insert(edit_button, -1)
414
415 separator = gtk.SeparatorToolItem()
416 separator.set_expand(True)
417 separator.set_draw(False)
418 toolbar_box.toolbar.insert(separator, -1)
419
420 toolbar_box.toolbar.insert(StopButton(self), -1)
493 collector_btn.show()
494 activity_toolbar.insert(collector_btn, -1)
495
496 self._delete_btn = ToolButton('list-remove')
497 self._delete_btn.set_tooltip(_('Delete Log File'))
498 self._delete_btn.connect('clicked', self._delete_log_cb)
499 self._toolbar.insert(self._delete_btn, -1)
500
501 self._separator = Gtk.SeparatorToolItem()
502 self._separator.set_expand(True)
503 self._separator.set_draw(False)
504 self._toolbar.insert(self._separator, -1)
505
506 self._stop_btn = StopButton(self)
507 self._toolbar.insert(self._stop_btn, -1)
421508
422509 toolbar_box.show_all()
423510 self.set_toolbar_box(toolbar_box)
424511
512 def _configure_cb(self, event=None):
513 for control in [self._stop_btn, self._separator, self._delete_btn]:
514 if control in self._toolbar:
515 self._toolbar.remove(control)
516
517 if Gdk.Screen.width() < Gdk.Screen.height():
518 self._secondary_toolbar_button.show()
519 self._secondary_toolbar_button.set_expanded(True)
520 self._remove_controls(self._toolbar)
521 self._add_controls(self._secondary_toolbar)
522 else:
523 self._secondary_toolbar_button.set_expanded(False)
524 self._secondary_toolbar_button.hide()
525 self._remove_controls(self._secondary_toolbar)
526 self._add_controls(self._toolbar)
527
528 for control in [self._delete_btn, self._separator, self._stop_btn]:
529 if not control in self._toolbar:
530 self._toolbar.insert(control, -1)
531
532 def _remove_controls(self, toolbar):
533 for control in [self._search_item, self._search_prev,
534 self._search_next]:
535 if control in toolbar:
536 toolbar.remove(control)
537
538 def _add_controls(self, toolbar):
539 for control in [self._search_item, self._search_prev,
540 self._search_next]:
541 if not control in toolbar:
542 toolbar.insert(control, -1)
543 control.show()
544
545 def _list_toggled_cb(self, widget):
546 if widget.get_active():
547 self.viewer.list_scroll.show()
548 else:
549 self.viewer.list_scroll.hide()
550
425551 def __copy_clicked_cb(self, button):
426552 if self.viewer.active_log:
427 self.viewer.active_log.copy_clipboard(gtk.clipboard_get())
553 self.viewer.active_log.copy_clipboard(self.clipboard)
428554
429555 def _wrap_cb(self, button):
430556 if button.get_active():
431 self.viewer._textview.set_wrap_mode(gtk.WRAP_WORD_CHAR)
557 self.viewer._textview.set_wrap_mode(Gtk.WrapMode.WORD_CHAR)
432558 else:
433 self.viewer._textview.set_wrap_mode(gtk.WRAP_NONE)
559 self.viewer._textview.set_wrap_mode(Gtk.WrapMode.NONE)
434560
435561 def _search_entry_activate_cb(self, entry):
562 if self._autosearch_timer:
563 GObject.source_remove(self._autosearch_timer)
436564 self.viewer.set_search_text(entry.props.text)
437565 self._update_search_buttons()
438566
439567 def _search_entry_changed_cb(self, entry):
440 self.viewer.set_search_text(entry.props.text)
441 self._update_search_buttons()
568 if self._autosearch_timer:
569 GObject.source_remove(self._autosearch_timer)
570 self._autosearch_timer = GObject.timeout_add(_AUTOSEARCH_TIMEOUT,
571 self.__autosearch_timer_cb)
572
573 def __autosearch_timer_cb(self):
574 self._autosearch_timer = None
575 self.search_entry.activate()
576 return False
442577
443578 def _search_prev_cb(self, button):
444579 self.viewer.search_next('backward')
453588 self._search_prev.props.sensitive = False
454589 self._search_next.props.sensitive = False
455590 else:
456 prev = self.viewer.get_next_result('backward')
457 next = self.viewer.get_next_result('forward')
458 self._search_prev.props.sensitive = prev != None
459 self._search_next.props.sensitive = next != None
460
591 prev_result = self.viewer.get_next_result('backward')
592 next_result = self.viewer.get_next_result('forward')
593 self._search_prev.props.sensitive = prev_result != None
594 self._search_next.props.sensitive = next_result != None
595
461596 def _delete_log_cb(self, widget):
462597 if self.viewer.active_log:
463598 logfile = self.viewer.active_log.logfile
467602 notify = NotifyAlert()
468603 notify.props.title = _('Error')
469604 notify.props.msg = _('%(error)s when deleting %(file)s') % \
470 { 'error': err.strerror, 'file': logfile }
605 {'error': err.strerror, 'file': logfile}
471606 notify.connect('response', _notify_response_cb, self)
472607 self.add_alert(notify)
473608
474609 def _logviewer_cb(self, widget):
475 self.collector_palette.popup(True)
610 self.collector_palette.popup(True, self.collector_palette.SECONDARY)
611
476612
477613 class CollectorPalette(Palette):
478 _DEFAULT_SERVER = 'http://olpc.scheffers.net/olpc/submit.tcl'
479
480 def __init__(self, handler):
481 Palette.__init__(self, _('Log Collector: Send XO information'))
482
483 self._handler = handler
484
614 def __init__(self, activity):
615 Palette.__init__(self, _('Log Collector: Capture information'))
616
617 self._activity = activity
618
485619 self._collector = LogCollect()
486
487 label = gtk.Label(
488 _('Log collector sends information about the system\n'\
489 'and running processes to a central server. Use\n'\
490 'this option if you want to report a problem.'))
491
492 send_button = gtk.Button(_('Send information'))
620
621 label = Gtk.Label(label=
622 _('This captures information about the system\n'\
623 'and running processes to a journal entry.\n'\
624 'Use this to improve a problem report.'))
625
626 send_button = Gtk.Button(_('Capture information'))
493627 send_button.connect('clicked', self._on_send_button_clicked_cb)
494628
495 vbox = gtk.VBox(False, 5)
496 vbox.pack_start(label)
497 vbox.pack_start(send_button)
629 vbox = Gtk.VBox(False, 5)
630 vbox.pack_start(label, True, True, 0)
631 vbox.pack_start(send_button, True, True, 0)
498632 vbox.show_all()
499633
500634 self.set_content(vbox)
501635
502636 def _on_send_button_clicked_cb(self, button):
637 identifier = str(int(time.time()))
638 filename = '%s.zip' % identifier
639 filepath = os.path.join(activity.get_activity_root(), filename)
503640 success = True
504641 try:
505 data = self._collector.write_logs()
506 sender = LogSend()
507 success = sender.http_post_logs(self._DEFAULT_SERVER, data)
642 self._collector.write_logs(archive=filepath, logbytes=0)
508643 except:
509644 success = False
510645
511 os.remove(data)
512646 self.popdown(True)
513647
514 title = ''
515 msg = ''
516 if success:
517 title = _('Logs sent')
518 msg = _('The logs were uploaded to the server.')
519 else:
520 title = _('Logs not sent')
521 msg = _('The logs could not be uploaded to the server. '\
522 'Please check your network connection.')
523
524 notify = NotifyAlert()
525 notify.props.title = title
526 notify.props.msg = msg
527 notify.connect('response', _notify_response_cb, self._handler)
528 self._handler.add_alert(notify)
529
648 if not success:
649 title = _('Logs not captured')
650 msg = _('The logs could not be captured.')
651
652 notify = NotifyAlert()
653 notify.props.title = title
654 notify.props.msg = msg
655 notify.connect('response', _notify_response_cb, self._activity)
656 self._activity.add_alert(notify)
657
658 jobject = datastore.create()
659 metadata = {
660 'title': _('log-%s') % filename,
661 'title_set_by_user': '0',
662 'suggested_filename': filename,
663 'mime_type': 'application/zip',
664 }
665 for k, v in metadata.items():
666 jobject.metadata[k] = v
667 jobject.file_path = filepath
668 datastore.write(jobject)
669 self._last_log = jobject.object_id
670 jobject.destroy()
671 activity.show_object_in_journal(self._last_log)
672 os.remove(filepath)
77 msgstr ""
88 "Project-Id-Version: PACKAGE VERSION\n"
99 "Report-Msgid-Bugs-To: \n"
10 "POT-Creation-Date: 2008-05-17 23:36+0000\n"
10 "POT-Creation-Date: 2013-04-11 00:31-0400\n"
1111 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1212 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1313 "Language-Team: LANGUAGE <LL@li.org>\n"
1515 "Content-Type: text/plain; charset=CHARSET\n"
1616 "Content-Transfer-Encoding: 8bit\n"
1717
18 #: activity/activity.info:2 logviewer.py:326
18 #. TRANS: "name" option from activity.info file
1919 msgid "Log"
2020 msgstr ""
2121
22 #: logviewer.py:79
22 #. TRANS: "summary" option from activity.info file
23 #. TRANS: "description" option from activity.info file
24 msgid ""
25 "This is an activity designed for anyone who wants to troubleshoot a "
26 "complicated program on the computer."
27 msgstr ""
28
29 #: logviewer.py:93
2330 msgid "Log Files"
2431 msgstr ""
2532
26 #: logviewer.py:87
33 #: logviewer.py:101
2734 msgid "Other"
2835 msgstr ""
2936
30 #: logviewer.py:188
37 #: logviewer.py:211
3138 #, python-format
3239 msgid "ERROR: Failed to look for files in '%(path)s'."
3340 msgstr ""
3441
35 #: logviewer.py:203
42 #: logviewer.py:227
3643 #, python-format
3744 msgid "ERROR: File '%(file)s' does not exist."
3845 msgstr ""
3946
40 #: logviewer.py:207
47 #: logviewer.py:232
4148 #, python-format
4249 msgid "ERROR: Unable to read file '%(file)s'."
4350 msgstr ""
4451
45 #: logviewer.py:320
52 #: logviewer.py:364
4653 #, python-format
4754 msgid "Error: Can't open file '%s'\n"
4855 msgstr ""
4956
50 #: logviewer.py:356
57 #: logviewer.py:405
58 msgid "Show list of files"
59 msgstr ""
60
61 #: logviewer.py:415
5162 msgid "Word Wrap"
5263 msgstr ""
5364
54 #: logviewer.py:385
65 #: logviewer.py:431
5566 msgid "Previous"
5667 msgstr ""
5768
58 #: logviewer.py:392
69 #: logviewer.py:436
5970 msgid "Next"
6071 msgstr ""
6172
62 #: logviewer.py:401
63 msgid "Edit"
64 msgstr ""
65
66 #: logviewer.py:406
73 #: logviewer.py:450
6774 msgid "Delete Log File"
6875 msgstr ""
6976
70 #: logviewer.py:425
71 msgid "Tools"
72 msgstr ""
73
74 #: logviewer.py:478
77 #: logviewer.py:522
7578 msgid "Error"
7679 msgstr ""
7780
78 #: logviewer.py:479
81 #: logviewer.py:523
7982 #, python-format
8083 msgid "%(error)s when deleting %(file)s"
8184 msgstr ""
8285
83 #: logviewer.py:491
84 msgid "Log Collector: Send XO information"
86 #: logviewer.py:534
87 msgid "Log Collector: Capture information"
8588 msgstr ""
8689
87 #: logviewer.py:498
90 #: logviewer.py:541
8891 msgid ""
89 "Log collector sends information about the system\n"
90 "and running processes to a central server. Use\n"
91 "this option if you want to report a problem."
92 "This captures information about the system\n"
93 "and running processes to a journal entry.\n"
94 "Use this to improve a problem report."
9295 msgstr ""
9396
94 #: logviewer.py:502
95 msgid "Send information"
97 #: logviewer.py:545
98 msgid "Capture information"
9699 msgstr ""
97100
98 #: logviewer.py:527
99 msgid "Logs sent"
101 #: logviewer.py:567
102 msgid "Logs not captured"
100103 msgstr ""
101104
102 #: logviewer.py:528
103 msgid "The logs were uploaded to the server."
105 #: logviewer.py:568
106 msgid "The logs could not be captured."
104107 msgstr ""
105108
106 #: logviewer.py:530
107 msgid "Logs not sent"
109 #: logviewer.py:578
110 #, python-format
111 msgid "log-%s"
108112 msgstr ""
109
110 #: logviewer.py:531
111 msgid ""
112 "The logs could not be uploaded to the server. Please check your network "
113 "connection."
114 msgstr ""
11 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
22 # This file is distributed under the same license as the PACKAGE package.
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #, fuzzy
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 # SOME DESCRIPTIVE TITLE.
9 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
10 # This file is distributed under the same license as the PACKAGE package.
11 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
512 msgid ""
613 msgstr ""
714 "Project-Id-Version: PACKAGE VERSION\n"
815 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2008-05-17 23:36+0000\n"
10 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
16 "POT-Creation-Date: 2013-04-11 00:31-0400\n"
17 "PO-Revision-Date: 2012-07-29 21:49+0200\n"
18 "Last-Translator: Chris <cjl@laptop.org>\n"
1219 "Language-Team: LANGUAGE <LL@li.org>\n"
20 "Language: af\n"
1321 "MIME-Version: 1.0\n"
1422 "Content-Type: text/plain; charset=UTF-8\n"
1523 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.1.1rc4\n"
24 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
25 "X-Generator: Pootle 2.0.5\n"
1726
18 #: activity/activity.info:2 logviewer.py:326
27 #. TRANS: "name" option from activity.info file
1928 msgid "Log"
2029 msgstr ""
2130
22 #: logviewer.py:79
31 #. TRANS: "summary" option from activity.info file
32 #. TRANS: "description" option from activity.info file
33 msgid ""
34 "This is an activity designed for anyone who wants to troubleshoot a "
35 "complicated program on the computer."
36 msgstr ""
37
38 #: logviewer.py:93
2339 msgid "Log Files"
2440 msgstr ""
2541
26 #: logviewer.py:87
42 #: logviewer.py:101
2743 msgid "Other"
2844 msgstr ""
2945
30 #: logviewer.py:188
46 #: logviewer.py:211
3147 #, python-format
3248 msgid "ERROR: Failed to look for files in '%(path)s'."
3349 msgstr ""
3450
35 #: logviewer.py:203
51 #: logviewer.py:227
3652 #, python-format
3753 msgid "ERROR: File '%(file)s' does not exist."
3854 msgstr ""
3955
40 #: logviewer.py:207
56 #: logviewer.py:232
4157 #, python-format
4258 msgid "ERROR: Unable to read file '%(file)s'."
4359 msgstr ""
4460
45 #: logviewer.py:320
61 #: logviewer.py:364
4662 #, python-format
4763 msgid "Error: Can't open file '%s'\n"
4864 msgstr ""
4965
50 #: logviewer.py:356
66 #: logviewer.py:405
67 msgid "Show list of files"
68 msgstr ""
69
70 #: logviewer.py:415
5171 msgid "Word Wrap"
5272 msgstr ""
5373
54 #: logviewer.py:385
74 #: logviewer.py:431
5575 msgid "Previous"
56 msgstr ""
76 msgstr "Vorige"
5777
58 #: logviewer.py:392
78 #: logviewer.py:436
5979 msgid "Next"
60 msgstr ""
80 msgstr "Volgende"
6181
62 #: logviewer.py:401
63 msgid "Edit"
64 msgstr ""
65
66 #: logviewer.py:406
82 #: logviewer.py:450
6783 msgid "Delete Log File"
6884 msgstr ""
6985
70 #: logviewer.py:425
71 msgid "Tools"
72 msgstr ""
86 #: logviewer.py:522
87 msgid "Error"
88 msgstr "Fout"
7389
74 #: logviewer.py:478
75 msgid "Error"
76 msgstr ""
77
78 #: logviewer.py:479
90 #: logviewer.py:523
7991 #, python-format
8092 msgid "%(error)s when deleting %(file)s"
8193 msgstr ""
8294
83 #: logviewer.py:491
84 msgid "Log Collector: Send XO information"
95 #: logviewer.py:534
96 msgid "Log Collector: Capture information"
8597 msgstr ""
8698
87 #: logviewer.py:498
99 #: logviewer.py:541
88100 msgid ""
89 "Log collector sends information about the system\n"
90 "and running processes to a central server. Use\n"
91 "this option if you want to report a problem."
101 "This captures information about the system\n"
102 "and running processes to a journal entry.\n"
103 "Use this to improve a problem report."
92104 msgstr ""
93105
94 #: logviewer.py:502
95 msgid "Send information"
106 #: logviewer.py:545
107 msgid "Capture information"
96108 msgstr ""
97109
98 #: logviewer.py:527
99 msgid "Logs sent"
110 #: logviewer.py:567
111 msgid "Logs not captured"
100112 msgstr ""
101113
102 #: logviewer.py:528
103 msgid "The logs were uploaded to the server."
114 #: logviewer.py:568
115 msgid "The logs could not be captured."
104116 msgstr ""
105117
106 #: logviewer.py:530
107 msgid "Logs not sent"
118 #: logviewer.py:578
119 #, python-format
120 msgid "log-%s"
108121 msgstr ""
109
110 #: logviewer.py:531
111 msgid ""
112 "The logs could not be uploaded to the server. Please check your network "
113 "connection."
114 msgstr ""
11 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
22 # This file is distributed under the same license as the PACKAGE package.
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #, fuzzy
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 # SOME DESCRIPTIVE TITLE.
9 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
10 # This file is distributed under the same license as the PACKAGE package.
11 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
12 # SOME DESCRIPTIVE TITLE.
13 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
14 # This file is distributed under the same license as the PACKAGE package.
15 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
16 # SOME DESCRIPTIVE TITLE.
17 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
18 # This file is distributed under the same license as the PACKAGE package.
19 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
20 # SOME DESCRIPTIVE TITLE.
21 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
22 # This file is distributed under the same license as the PACKAGE package.
23 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
524 msgid ""
625 msgstr ""
726 "Project-Id-Version: PACKAGE VERSION\n"
827 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2008-05-17 23:36+0000\n"
10 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
28 "POT-Creation-Date: 2013-04-11 00:31-0400\n"
29 "PO-Revision-Date: 2011-04-13 02:30+0200\n"
30 "Last-Translator: Chris <cjl@laptop.org>\n"
1231 "Language-Team: LANGUAGE <LL@li.org>\n"
32 "Language: \n"
1333 "MIME-Version: 1.0\n"
1434 "Content-Type: text/plain; charset=UTF-8\n"
1535 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.1.1rc4\n"
36 "Plural-Forms: nplurals=2; plural=n > 1;\n"
37 "X-Generator: Pootle 2.0.1\n"
1738
18 #: activity/activity.info:2 logviewer.py:326
39 #. TRANS: "name" option from activity.info file
1940 msgid "Log"
41 msgstr "መመዝገቢያ"
42
43 #. TRANS: "summary" option from activity.info file
44 #. TRANS: "description" option from activity.info file
45 msgid ""
46 "This is an activity designed for anyone who wants to troubleshoot a "
47 "complicated program on the computer."
2048 msgstr ""
2149
22 #: logviewer.py:79
50 #: logviewer.py:93
2351 msgid "Log Files"
2452 msgstr ""
2553
26 #: logviewer.py:87
54 #: logviewer.py:101
2755 msgid "Other"
28 msgstr ""
56 msgstr "ሌላ"
2957
30 #: logviewer.py:188
58 #: logviewer.py:211
3159 #, python-format
3260 msgid "ERROR: Failed to look for files in '%(path)s'."
3361 msgstr ""
3462
35 #: logviewer.py:203
63 #: logviewer.py:227
3664 #, python-format
3765 msgid "ERROR: File '%(file)s' does not exist."
3866 msgstr ""
3967
40 #: logviewer.py:207
68 #: logviewer.py:232
4169 #, python-format
4270 msgid "ERROR: Unable to read file '%(file)s'."
4371 msgstr ""
4472
45 #: logviewer.py:320
73 #: logviewer.py:364
4674 #, python-format
4775 msgid "Error: Can't open file '%s'\n"
4876 msgstr ""
4977
50 #: logviewer.py:356
78 #: logviewer.py:405
79 msgid "Show list of files"
80 msgstr ""
81
82 #: logviewer.py:415
5183 msgid "Word Wrap"
5284 msgstr ""
5385
54 #: logviewer.py:385
86 #: logviewer.py:431
5587 msgid "Previous"
56 msgstr ""
88 msgstr "ቀድሞ"
5789
58 #: logviewer.py:392
90 #: logviewer.py:436
5991 msgid "Next"
60 msgstr ""
92 msgstr "ቀጥል"
6193
62 #: logviewer.py:401
63 msgid "Edit"
64 msgstr ""
65
66 #: logviewer.py:406
94 #: logviewer.py:450
6795 msgid "Delete Log File"
6896 msgstr ""
6997
70 #: logviewer.py:425
71 msgid "Tools"
72 msgstr ""
98 #: logviewer.py:522
99 msgid "Error"
100 msgstr "ስህተት"
73101
74 #: logviewer.py:478
75 msgid "Error"
76 msgstr ""
77
78 #: logviewer.py:479
102 #: logviewer.py:523
79103 #, python-format
80104 msgid "%(error)s when deleting %(file)s"
81105 msgstr ""
82106
83 #: logviewer.py:491
84 msgid "Log Collector: Send XO information"
107 #: logviewer.py:534
108 msgid "Log Collector: Capture information"
85109 msgstr ""
86110
87 #: logviewer.py:498
111 #: logviewer.py:541
88112 msgid ""
89 "Log collector sends information about the system\n"
90 "and running processes to a central server. Use\n"
91 "this option if you want to report a problem."
113 "This captures information about the system\n"
114 "and running processes to a journal entry.\n"
115 "Use this to improve a problem report."
92116 msgstr ""
93117
94 #: logviewer.py:502
95 msgid "Send information"
118 #: logviewer.py:545
119 msgid "Capture information"
96120 msgstr ""
97121
98 #: logviewer.py:527
99 msgid "Logs sent"
122 #: logviewer.py:567
123 msgid "Logs not captured"
100124 msgstr ""
101125
102 #: logviewer.py:528
103 msgid "The logs were uploaded to the server."
126 #: logviewer.py:568
127 msgid "The logs could not be captured."
104128 msgstr ""
105129
106 #: logviewer.py:530
107 msgid "Logs not sent"
130 #: logviewer.py:578
131 #, python-format
132 msgid "log-%s"
108133 msgstr ""
109134
110 #: logviewer.py:531
111 msgid ""
112 "The logs could not be uploaded to the server. Please check your network "
113 "connection."
114 msgstr ""
135 #~ msgid "Tools"
136 #~ msgstr "መሣሪያዎች"
00 # SOME DESCRIPTIVE TITLE.
11 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
22 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
3 # SOME DESCRIPTIVE TITLE.
4 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
5 # This file is distributed under the same license as the PACKAGE package.
6 # Khaled Hosny <khaledhosny@eglug.org>, 2011.
47 msgid ""
58 msgstr ""
69 "Project-Id-Version: PACKAGE VERSION\n"
710 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2009-08-18 00:30-0400\n"
9 "PO-Revision-Date: 2008-07-16 09:50-0400\n"
11 "POT-Creation-Date: 2013-04-11 00:31-0400\n"
12 "PO-Revision-Date: 2011-08-24 08:33+0200\n"
1013 "Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
11 "Language-Team: LANGUAGE <LL@li.org>\n"
14 "Language-Team: Arabic <doc@arabeyes.org>\n"
15 "Language: \n"
1216 "MIME-Version: 1.0\n"
1317 "Content-Type: text/plain; charset=UTF-8\n"
1418 "Content-Transfer-Encoding: 8bit\n"
15 "X-Generator: Pootle 1.1.0rc2\n"
19 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
20 "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
21 "X-Generator: Virtaal 0.7.0\n"
1622
17 #: activity/activity.info:2 logviewer.py:326
23 #. TRANS: "name" option from activity.info file
1824 msgid "Log"
1925 msgstr "سجل"
2026
21 #: logviewer.py:80
27 #. TRANS: "summary" option from activity.info file
28 #. TRANS: "description" option from activity.info file
29 msgid ""
30 "This is an activity designed for anyone who wants to troubleshoot a "
31 "complicated program on the computer."
32 msgstr ""
33
34 #: logviewer.py:93
2235 msgid "Log Files"
2336 msgstr "ملفات السجلات"
2437
25 #: logviewer.py:88
38 #: logviewer.py:101
2639 msgid "Other"
2740 msgstr "أخرى"
2841
29 #: logviewer.py:187
42 #: logviewer.py:211
3043 #, python-format
3144 msgid "ERROR: Failed to look for files in '%(path)s'."
3245 msgstr "عطل: فشل التماس الملفات في '%(path)s'."
3346
34 #: logviewer.py:202
47 #: logviewer.py:227
3548 #, python-format
3649 msgid "ERROR: File '%(file)s' does not exist."
3750 msgstr "عطل: الملف '%(file)s' غير موجود"
3851
39 #: logviewer.py:206
52 #: logviewer.py:232
4053 #, python-format
4154 msgid "ERROR: Unable to read file '%(file)s'."
4255 msgstr "عطل: تعذّر قراءة الملف '%(file)s'."
4356
44 #: logviewer.py:320
57 #: logviewer.py:364
4558 #, python-format
4659 msgid "Error: Can't open file '%s'\n"
4760 msgstr "عطل: تعذّر فتح الملف '%s'\n"
4861
49 #: logviewer.py:362
62 #: logviewer.py:405
63 msgid "Show list of files"
64 msgstr ""
65
66 #: logviewer.py:415
5067 msgid "Word Wrap"
5168 msgstr "اقطع السطر"
5269
53 #: logviewer.py:382
70 #: logviewer.py:431
5471 msgid "Previous"
5572 msgstr "السابق"
5673
57 #: logviewer.py:387
74 #: logviewer.py:436
5875 msgid "Next"
5976 msgstr "التالي"
6077
61 #: logviewer.py:399
78 #: logviewer.py:450
6279 msgid "Delete Log File"
6380 msgstr "احذف ملف السجل"
6481
65 #: logviewer.py:413
66 msgid "Tools"
67 msgstr "أدوات"
68
69 #: logviewer.py:470
82 #: logviewer.py:522
7083 msgid "Error"
7184 msgstr "عطل"
7285
73 #: logviewer.py:471
86 #: logviewer.py:523
7487 #, python-format
7588 msgid "%(error)s when deleting %(file)s"
7689 msgstr "%(error)s أثناء حذف الملف %(file)s"
7790
78 #: logviewer.py:483
79 msgid "Log Collector: Send XO information"
80 msgstr "جامع السجلات: أرسل معلومات الجهاز"
91 #: logviewer.py:534
92 msgid "Log Collector: Capture information"
93 msgstr "جامع السجلات: اجمع معلومات الجهاز"
8194
82 #: logviewer.py:490
95 #: logviewer.py:541
8396 msgid ""
84 "Log collector sends information about the system\n"
85 "and running processes to a central server. Use\n"
86 "this option if you want to report a problem."
97 "This captures information about the system\n"
98 "and running processes to a journal entry.\n"
99 "Use this to improve a problem report."
87100 msgstr ""
88 "يرسل جامع السجلات معلومات عن النظام\n"
89 "والعمليات العاملة إلى خادوم مركزي. استخدم\n"
90 "هذا الخيار إذا أردت الإبلاغ عن مشكلة."
101 "يجمع هذا معلومات عن النظام\n"
102 "والعمليات المشغلة في مدخلة في الدفتر.\n"
103 "استخدم هذه المعلومات لتدعيم البلاغ عن مشكلة."
91104
92 #: logviewer.py:494
93 msgid "Send information"
94 msgstr "أرسِل المعلومات"
105 #: logviewer.py:545
106 msgid "Capture information"
107 msgstr "اجمع معلومات الجهاز"
95108
96 #: logviewer.py:519
97 msgid "Logs sent"
98 msgstr "أُرسِلت السجلات"
109 #: logviewer.py:567
110 msgid "Logs not captured"
111 msgstr "لم تُجمع السجلات"
99112
100 #: logviewer.py:520
101 msgid "The logs were uploaded to the server."
102 msgstr "رُفِعت السجلات إلى الخادوم."
113 #: logviewer.py:568
114 msgid "The logs could not be captured."
115 msgstr "تعذّر جمع السجلات."
103116
104 #: logviewer.py:522
105 msgid "Logs not sent"
106 msgstr "لم تُرسل السجلات"
117 #: logviewer.py:578
118 #, python-format
119 msgid "log-%s"
120 msgstr "سجل-%s"
107121
108 #: logviewer.py:523
109 msgid ""
110 "The logs could not be uploaded to the server. Please check your network "
111 "connection."
112 msgstr "تعذّر رفع السجلات إلى الخادوم. من فضلك راجع اتصالك بالشبكة."
122 #~ msgid "Tools"
123 #~ msgstr "أدوات"
124
125 #~ msgid ""
126 #~ "Log collector sends information about the system\n"
127 #~ "and running processes to a central server. Use\n"
128 #~ "this option if you want to report a problem."
129 #~ msgstr ""
130 #~ "يرسل جامع السجلات معلومات عن النظام\n"
131 #~ "والعمليات العاملة إلى خادوم مركزي. استخدم\n"
132 #~ "هذا الخيار إذا أردت الإبلاغ عن مشكلة."
133
134 #~ msgid "Send information"
135 #~ msgstr "أرسِل المعلومات"
136
137 #~ msgid "Logs sent"
138 #~ msgstr "أُرسِلت السجلات"
139
140 #~ msgid "The logs were uploaded to the server."
141 #~ msgstr "رُفِعت السجلات إلى الخادوم."
142
143 #~ msgid "Logs not sent"
144 #~ msgstr "لم تُرسل السجلات"
145
146 #~ msgid ""
147 #~ "The logs could not be uploaded to the server. Please check your network "
148 #~ "connection."
149 #~ msgstr "تعذّر رفع السجلات إلى الخادوم. من فضلك راجع اتصالك بالشبكة."
113150
114151 #~ msgid "Edit"
115152 #~ msgstr "تحرير"
+0
-115
po/ay.po less more
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #, fuzzy
5 msgid ""
6 msgstr ""
7 "Project-Id-Version: PACKAGE VERSION\n"
8 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2008-05-17 23:36+0000\n"
10 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.1.1rc4\n"
17
18 #: activity/activity.info:2 logviewer.py:326
19 msgid "Log"
20 msgstr ""
21
22 #: logviewer.py:79
23 msgid "Log Files"
24 msgstr ""
25
26 #: logviewer.py:87
27 msgid "Other"
28 msgstr ""
29
30 #: logviewer.py:188
31 #, python-format
32 msgid "ERROR: Failed to look for files in '%(path)s'."
33 msgstr ""
34
35 #: logviewer.py:203
36 #, python-format
37 msgid "ERROR: File '%(file)s' does not exist."
38 msgstr ""
39
40 #: logviewer.py:207
41 #, python-format
42 msgid "ERROR: Unable to read file '%(file)s'."
43 msgstr ""
44
45 #: logviewer.py:320
46 #, python-format
47 msgid "Error: Can't open file '%s'\n"
48 msgstr ""
49
50 #: logviewer.py:356
51 msgid "Word Wrap"
52 msgstr ""
53
54 #: logviewer.py:385
55 msgid "Previous"
56 msgstr ""
57
58 #: logviewer.py:392
59 msgid "Next"
60 msgstr ""
61
62 #: logviewer.py:401
63 msgid "Edit"
64 msgstr ""
65
66 #: logviewer.py:406
67 msgid "Delete Log File"
68 msgstr ""
69
70 #: logviewer.py:425
71 msgid "Tools"
72 msgstr ""
73
74 #: logviewer.py:478
75 msgid "Error"
76 msgstr ""
77
78 #: logviewer.py:479
79 #, python-format
80 msgid "%(error)s when deleting %(file)s"
81 msgstr ""
82
83 #: logviewer.py:491
84 msgid "Log Collector: Send XO information"
85 msgstr ""
86
87 #: logviewer.py:498
88 msgid ""
89 "Log collector sends information about the system\n"
90 "and running processes to a central server. Use\n"
91 "this option if you want to report a problem."
92 msgstr ""
93
94 #: logviewer.py:502
95 msgid "Send information"
96 msgstr ""
97
98 #: logviewer.py:527
99 msgid "Logs sent"
100 msgstr ""
101
102 #: logviewer.py:528
103 msgid "The logs were uploaded to the server."
104 msgstr ""
105
106 #: logviewer.py:530
107 msgid "Logs not sent"
108 msgstr ""
109
110 #: logviewer.py:531
111 msgid ""
112 "The logs could not be uploaded to the server. Please check your network "
113 "connection."
114 msgstr ""
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2013-04-11 00:31-0400\n"
9 "PO-Revision-Date: 2013-05-22 00:23+0200\n"
10 "Last-Translator: EdgarQuispeChambi <quispedgar@yahoo.es>\n"
11 "Language-Team: LANGUAGE <LL@li.org>\n"
12 "Language: ayc\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17 "X-Generator: Pootle 2.0.5\n"
18
19 # "Registro"
20 #. TRANS: "name" option from activity.info file
21 msgid "Log"
22 msgstr "Katuqata"
23
24 #. TRANS: "summary" option from activity.info file
25 #. TRANS: "description" option from activity.info file
26 msgid ""
27 "This is an activity designed for anyone who wants to troubleshoot a "
28 "complicated program on the computer."
29 msgstr ""
30 "Aka luräwixa maya computadora taypina maya maski kawkipiri jani walt'äwita "
31 "mistuñataki wakichatawa."
32
33 # "Archivos registrados"
34 #: logviewer.py:93
35 msgid "Log Files"
36 msgstr "Katuqata wakichäwinaka"
37
38 # "Otro"
39 #: logviewer.py:101
40 msgid "Other"
41 msgstr "Yaqha"
42
43 # "ERROR: No se ha podido buscar por archivos en '%(path)s'."
44 #: logviewer.py:211
45 #, python-format
46 msgid "ERROR: Failed to look for files in '%(path)s'."
47 msgstr "'%(path)s' Pantjatawa, imata wakichäwinaka janiwa uñasiti."
48
49 # "ERROR: El archivo '%(file)s' no existe."
50 #: logviewer.py:227
51 #, python-format
52 msgid "ERROR: File '%(file)s' does not exist."
53 msgstr "'%(file)s' Pantjatawa, imata wakichäwi janiwa jakisiti."
54
55 # "ERROR: No se puede leer el archivo '%(file)s'."
56 #: logviewer.py:232
57 #, python-format
58 msgid "ERROR: Unable to read file '%(file)s'."
59 msgstr "'%(file)s' Pantjatawa, imata wakichäwi ullaña janiwa wakisiti."
60
61 # "Error: No se puede abrir el archivo '%s'\n"
62 #: logviewer.py:364
63 #, python-format
64 msgid "Error: Can't open file '%s'\n"
65 msgstr "'%s' Pantjatawa: imata wakichäwi janiwa qhanstiti\n"
66
67 #: logviewer.py:405
68 msgid "Show list of files"
69 msgstr "Imata wakichatanakana sutinakapa siqi uñachayaña"
70
71 # "Ajuste de línea"
72 #: logviewer.py:415
73 msgid "Word Wrap"
74 msgstr "Siqi askichaña"
75
76 # "Anterior"
77 #: logviewer.py:431
78 msgid "Previous"
79 msgstr "Kutt'aña"
80
81 # "Siguiente"
82 #: logviewer.py:436
83 msgid "Next"
84 msgstr "Jutiri"
85
86 # "Borrar el archivo de registro"
87 #: logviewer.py:450
88 msgid "Delete Log File"
89 msgstr "Katuqata imata wakichäwi apsuña"
90
91 # "Error"
92 #: logviewer.py:522
93 msgid "Error"
94 msgstr "Pantjata"
95
96 # "%(error)s borrando %(file)s"
97 #: logviewer.py:523
98 #, python-format
99 msgid "%(error)s when deleting %(file)s"
100 msgstr "%(error)s when deleting %(file)s"
101
102 # "Colector de Registros: Captura información"
103 #: logviewer.py:534
104 msgid "Log Collector: Capture information"
105 msgstr "Qillqantata tanthapiña: wakichawinaka katuqaña"
106
107 # "Esto captura información acerca del sistema\n"
108 # "y los procesos ejecutándose en una entrada del Diario.\n"
109 # "Úsela para mejorar el reporte de un error."
110 #: logviewer.py:541
111 msgid ""
112 "This captures information about the system\n"
113 "and running processes to a journal entry.\n"
114 "Use this to improve a problem report."
115 msgstr ""
116 "Katuqapjiwa yatiyawinaka sartawi tuqita\n"
117 "Qillqaskiwa wakichirinaka\n"
118 "Ukhata askichasi pantjata yatiwinaka."
119
120 # "Capture información"
121 #: logviewer.py:545
122 msgid "Capture information"
123 msgstr "Yatiwanaka katuqaña"
124
125 # "Registros no capturados"
126 #: logviewer.py:567
127 msgid "Logs not captured"
128 msgstr "Qillqantata janiwa katuqaskiti"
129
130 # "Los registros no pudieron ser capturados."
131 #: logviewer.py:568
132 msgid "The logs could not be captured."
133 msgstr "Qillqantata janiwa puni katuqaskiti."
134
135 # "log-%s"
136 #: logviewer.py:578
137 #, python-format
138 msgid "log-%s"
139 msgstr "qillqantata-%s"
140
141 # "Herramientas"
142 #~ msgid "Tools"
143 #~ msgstr "Lurañanaka"
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2011-11-24 00:32-0500\n"
9 "PO-Revision-Date: 2012-09-21 19:56+0200\n"
10 "Last-Translator: Chris <cjl@laptop.org>\n"
11 "Language-Team: LANGUAGE <LL@li.org>\n"
12 "Language: aym\n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
17 "X-Generator: Pootle 2.0.5\n"
18
19 # "Registro"
20 #: activity/activity.info:2
21 msgid "Log"
22 msgstr "Katuqata"
23
24 # "Archivos registrados"
25 #: logviewer.py:86
26 msgid "Log Files"
27 msgstr "Katuqata wakichäwinaka"
28
29 # "Otro"
30 #: logviewer.py:94
31 msgid "Other"
32 msgstr "Yaqha"
33
34 # "ERROR: No se ha podido buscar por archivos en '%(path)s'."
35 #: logviewer.py:200
36 #, python-format
37 msgid "ERROR: Failed to look for files in '%(path)s'."
38 msgstr "'%(path)s' Pantjatawa, imata wakichäwinaka janiwa uñasiti."
39
40 # "ERROR: El archivo '%(file)s' no existe."
41 #: logviewer.py:216
42 #, python-format
43 msgid "ERROR: File '%(file)s' does not exist."
44 msgstr "'%(file)s' Pantjatawa, imata wakichäwi janiwa jakisiti."
45
46 # "ERROR: No se puede leer el archivo '%(file)s'."
47 #: logviewer.py:221
48 #, python-format
49 msgid "ERROR: Unable to read file '%(file)s'."
50 msgstr "'%(file)s' Pantjatawa, imata wakichäwi ullaña janiwa wakisiti."
51
52 # "Error: No se puede abrir el archivo '%s'\n"
53 #: logviewer.py:342
54 #, python-format
55 msgid "Error: Can't open file '%s'\n"
56 msgstr "'%s' Pantjatawa: imata wakichäwi janiwa qhanstiti\n"
57
58 # "Ajuste de línea"
59 #: logviewer.py:382
60 msgid "Word Wrap"
61 msgstr "Siqi askichaña"
62
63 # "Anterior"
64 #: logviewer.py:398
65 msgid "Previous"
66 msgstr "Kutt'aña"
67
68 # "Siguiente"
69 #: logviewer.py:403
70 msgid "Next"
71 msgstr "Jutiri"
72
73 # "Borrar el archivo de registro"
74 #: logviewer.py:417
75 msgid "Delete Log File"
76 msgstr "Katuqata imata wakichäwi apsuña"
77
78 # "Error"
79 #: logviewer.py:474
80 msgid "Error"
81 msgstr "Pantjata"
82
83 # "%(error)s borrando %(file)s"
84 #: logviewer.py:475
85 #, python-format
86 msgid "%(error)s when deleting %(file)s"
87 msgstr "%(error)s when deleting %(file)s"
88
89 # "Colector de Registros: Captura información"
90 #: logviewer.py:486
91 msgid "Log Collector: Capture information"
92 msgstr "Qillqantata tanthapiña: wakichawinaka katuqaña"
93
94 # "Esto captura información acerca del sistema\n"
95 # "y los procesos ejecutándose en una entrada del Diario.\n"
96 # "Úsela para mejorar el reporte de un error."
97 #: logviewer.py:493
98 msgid ""
99 "This captures information about the system\n"
100 "and running processes to a journal entry.\n"
101 "Use this to improve a problem report."
102 msgstr ""
103 "Katuqapjiwa yatiyawinaka sartawi tuqita\n"
104 "Qillqaskiwa wakichirinaka\n"
105 "Ukhata askichasi pantjata yatiwinaka."
106
107 # "Capture información"
108 #: logviewer.py:497
109 msgid "Capture information"
110 msgstr "Yatiwanaka katuqaña"
111
112 # "Registros no capturados"
113 #: logviewer.py:519
114 msgid "Logs not captured"
115 msgstr "Qillqantata janiwa katuqaskiti"
116
117 # "Los registros no pudieron ser capturados."
118 #: logviewer.py:520
119 msgid "The logs could not be captured."
120 msgstr "Qillqantata janiwa puni katuqaskiti."
121
122 # "log-%s"
123 #: logviewer.py:530
124 #, python-format
125 msgid "log-%s"
126 msgstr "qillqantata-%s"
127
128 # "Herramientas"
129 #~ msgid "Tools"
130 #~ msgstr "Lurañanaka"
11 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
22 # This file is distributed under the same license as the PACKAGE package.
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #, fuzzy
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 # SOME DESCRIPTIVE TITLE.
9 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
10 # This file is distributed under the same license as the PACKAGE package.
11 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
512 msgid ""
613 msgstr ""
714 "Project-Id-Version: PACKAGE VERSION\n"
815 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2008-05-17 23:36+0000\n"
10 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
16 "POT-Creation-Date: 2013-04-11 00:31-0400\n"
17 "PO-Revision-Date: 2010-01-22 23:17+0200\n"
18 "Last-Translator: Chris <cjl@laptop.org>\n"
1219 "Language-Team: LANGUAGE <LL@li.org>\n"
20 "Language: \n"
1321 "MIME-Version: 1.0\n"
1422 "Content-Type: text/plain; charset=UTF-8\n"
1523 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.1.1rc4\n"
24 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
25 "X-Generator: Pootle 2.0.1\n"
1726
18 #: activity/activity.info:2 logviewer.py:326
27 #. TRANS: "name" option from activity.info file
1928 msgid "Log"
29 msgstr "Журнал"
30
31 #. TRANS: "summary" option from activity.info file
32 #. TRANS: "description" option from activity.info file
33 msgid ""
34 "This is an activity designed for anyone who wants to troubleshoot a "
35 "complicated program on the computer."
2036 msgstr ""
2137
22 #: logviewer.py:79
38 #: logviewer.py:93
2339 msgid "Log Files"
40 msgstr "Журнални файлове"
41
42 #: logviewer.py:101
43 msgid "Other"
44 msgstr "Други"
45
46 #: logviewer.py:211
47 #, python-format
48 msgid "ERROR: Failed to look for files in '%(path)s'."
49 msgstr "ГРЕШКА: Не може да намери файлове в '%(path)s'."
50
51 #: logviewer.py:227
52 #, python-format
53 msgid "ERROR: File '%(file)s' does not exist."
54 msgstr "ГРЕШКА: Не съществува файл '%(file)s'."
55
56 #: logviewer.py:232
57 #, python-format
58 msgid "ERROR: Unable to read file '%(file)s'."
59 msgstr "ГРЕШКА: Не може да прочете файл '%(file)s'."
60
61 #: logviewer.py:364
62 #, python-format
63 msgid "Error: Can't open file '%s'\n"
64 msgstr "Грешка: Не може да отвори файл '%s'\n"
65
66 #: logviewer.py:405
67 msgid "Show list of files"
2468 msgstr ""
2569
26 #: logviewer.py:87
27 msgid "Other"
70 #: logviewer.py:415
71 msgid "Word Wrap"
72 msgstr "Текстопренасяне"
73
74 #: logviewer.py:431
75 #, fuzzy
76 msgid "Previous"
77 msgstr "Предишен"
78
79 #: logviewer.py:436
80 #, fuzzy
81 msgid "Next"
82 msgstr "Следващ"
83
84 #: logviewer.py:450
85 msgid "Delete Log File"
86 msgstr "Изтриване на журнален файл"
87
88 #: logviewer.py:522
89 msgid "Error"
90 msgstr "Грешка"
91
92 #: logviewer.py:523
93 #, python-format
94 msgid "%(error)s when deleting %(file)s"
95 msgstr "%(error)s при изтриване на %(file)s"
96
97 #: logviewer.py:534
98 #, fuzzy
99 msgid "Log Collector: Capture information"
100 msgstr "Журнален колектор: Изпращане информация за XO"
101
102 #: logviewer.py:541
103 msgid ""
104 "This captures information about the system\n"
105 "and running processes to a journal entry.\n"
106 "Use this to improve a problem report."
28107 msgstr ""
29108
30 #: logviewer.py:188
31 #, python-format
32 msgid "ERROR: Failed to look for files in '%(path)s'."
109 #: logviewer.py:545
110 msgid "Capture information"
33111 msgstr ""
34112
35 #: logviewer.py:203
36 #, python-format
37 msgid "ERROR: File '%(file)s' does not exist."
113 #: logviewer.py:567
114 msgid "Logs not captured"
38115 msgstr ""
39116
40 #: logviewer.py:207
41 #, python-format
42 msgid "ERROR: Unable to read file '%(file)s'."
117 #: logviewer.py:568
118 msgid "The logs could not be captured."
43119 msgstr ""
44120
45 #: logviewer.py:320
121 #: logviewer.py:578
46122 #, python-format
47 msgid "Error: Can't open file '%s'\n"
123 msgid "log-%s"
48124 msgstr ""
49125
50 #: logviewer.py:356
51 msgid "Word Wrap"
52 msgstr ""
126 #~ msgid "Tools"
127 #~ msgstr "Инструменти"
53128
54 #: logviewer.py:385
55 msgid "Previous"
56 msgstr ""
129 #~ msgid ""
130 #~ "Log collector sends information about the system\n"
131 #~ "and running processes to a central server. Use\n"
132 #~ "this option if you want to report a problem."
133 #~ msgstr ""
134 #~ "Журналния колектор изпраща информация относно системата\n"
135 #~ "и стартираните процеси до централен сървър. Изполвайте\n"
136 #~ "тази опция ако желаете да съобщите за проблем."
57137
58 #: logviewer.py:392
59 msgid "Next"
60 msgstr ""
138 #~ msgid "Send information"
139 #~ msgstr "Изпращане на информация"
61140
62 #: logviewer.py:401
63 msgid "Edit"
64 msgstr ""
141 #~ msgid "Logs sent"
142 #~ msgstr "Журналите са изпратени"
65143
66 #: logviewer.py:406
67 msgid "Delete Log File"
68 msgstr ""
144 #~ msgid "The logs were uploaded to the server."
145 #~ msgstr "Журналите бяха изпратени на сървъра."
69146
70 #: logviewer.py:425
71 msgid "Tools"
72 msgstr ""
147 #~ msgid "Logs not sent"
148 #~ msgstr "Журналите не са изпратени"
73149
74 #: logviewer.py:478
75 msgid "Error"
76 msgstr ""
77
78 #: logviewer.py:479
79 #, python-format
80 msgid "%(error)s when deleting %(file)s"
81 msgstr ""
82
83 #: logviewer.py:491
84 msgid "Log Collector: Send XO information"
85 msgstr ""
86
87 #: logviewer.py:498
88 msgid ""
89 "Log collector sends information about the system\n"
90 "and running processes to a central server. Use\n"
91 "this option if you want to report a problem."
92 msgstr ""
93
94 #: logviewer.py:502
95 msgid "Send information"
96 msgstr ""
97
98 #: logviewer.py:527
99 msgid "Logs sent"
100 msgstr ""
101
102 #: logviewer.py:528
103 msgid "The logs were uploaded to the server."
104 msgstr ""
105
106 #: logviewer.py:530
107 msgid "Logs not sent"
108 msgstr ""
109
110 #: logviewer.py:531
111 msgid ""
112 "The logs could not be uploaded to the server. Please check your network "
113 "connection."
114 msgstr ""
150 #~ msgid ""
151 #~ "The logs could not be uploaded to the server. Please check your network "
152 #~ "connection."
153 #~ msgstr ""
154 #~ "Журналите не можаха да се изпратят на сървъра. Моля проверете Вашата връзка "
155 #~ "с интернет."
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
08 # SOME DESCRIPTIVE TITLE.
19 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
210 # This file is distributed under the same license as the PACKAGE package.
614 msgstr ""
715 "Project-Id-Version: PACKAGE VERSION\n"
816 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2008-05-17 23:36+0000\n"
17 "POT-Creation-Date: 2013-04-11 00:31-0400\n"
1018 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1119 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1220 "Language-Team: LANGUAGE <LL@li.org>\n"
21 "Language: \n"
1322 "MIME-Version: 1.0\n"
1423 "Content-Type: text/plain; charset=UTF-8\n"
1524 "Content-Transfer-Encoding: 8bit\n"
1625 "X-Generator: Translate Toolkit 1.1.1rc4\n"
1726
18 #: activity/activity.info:2 logviewer.py:326
27 #. TRANS: "name" option from activity.info file
1928 msgid "Log"
2029 msgstr ""
2130
22 #: logviewer.py:79
31 #. TRANS: "summary" option from activity.info file
32 #. TRANS: "description" option from activity.info file
33 msgid ""
34 "This is an activity designed for anyone who wants to troubleshoot a "
35 "complicated program on the computer."
36 msgstr ""
37
38 #: logviewer.py:93
2339 msgid "Log Files"
2440 msgstr ""
2541
26 #: logviewer.py:87
42 #: logviewer.py:101
2743 msgid "Other"
2844 msgstr ""
2945
30 #: logviewer.py:188
46 #: logviewer.py:211
3147 #, python-format
3248 msgid "ERROR: Failed to look for files in '%(path)s'."
3349 msgstr ""
3450
35 #: logviewer.py:203
51 #: logviewer.py:227
3652 #, python-format
3753 msgid "ERROR: File '%(file)s' does not exist."
3854 msgstr ""
3955
40 #: logviewer.py:207
56 #: logviewer.py:232
4157 #, python-format
4258 msgid "ERROR: Unable to read file '%(file)s'."
4359 msgstr ""
4460
45 #: logviewer.py:320
61 #: logviewer.py:364
4662 #, python-format
4763 msgid "Error: Can't open file '%s'\n"
4864 msgstr ""
4965
50 #: logviewer.py:356
66 #: logviewer.py:405
67 msgid "Show list of files"
68 msgstr ""
69
70 #: logviewer.py:415
5171 msgid "Word Wrap"
5272 msgstr ""
5373
54 #: logviewer.py:385
74 #: logviewer.py:431
5575 msgid "Previous"
5676 msgstr ""
5777
58 #: logviewer.py:392
78 #: logviewer.py:436
5979 msgid "Next"
6080 msgstr ""
6181
62 #: logviewer.py:401
63 msgid "Edit"
64 msgstr ""
65
66 #: logviewer.py:406
82 #: logviewer.py:450
6783 msgid "Delete Log File"
6884 msgstr ""
6985
70 #: logviewer.py:425
71 msgid "Tools"
72 msgstr ""
73
74 #: logviewer.py:478
86 #: logviewer.py:522
7587 msgid "Error"
7688 msgstr ""
7789
78 #: logviewer.py:479
90 #: logviewer.py:523
7991 #, python-format
8092 msgid "%(error)s when deleting %(file)s"
8193 msgstr ""
8294
83 #: logviewer.py:491
84 msgid "Log Collector: Send XO information"
95 #: logviewer.py:534
96 msgid "Log Collector: Capture information"
8597 msgstr ""
8698
87 #: logviewer.py:498
99 #: logviewer.py:541
88100 msgid ""
89 "Log collector sends information about the system\n"
90 "and running processes to a central server. Use\n"
91 "this option if you want to report a problem."
101 "This captures information about the system\n"
102 "and running processes to a journal entry.\n"
103 "Use this to improve a problem report."
92104 msgstr ""
93105
94 #: logviewer.py:502
95 msgid "Send information"
106 #: logviewer.py:545
107 msgid "Capture information"
96108 msgstr ""
97109
98 #: logviewer.py:527
99 msgid "Logs sent"
110 #: logviewer.py:567
111 msgid "Logs not captured"
100112 msgstr ""
101113
102 #: logviewer.py:528
103 msgid "The logs were uploaded to the server."
114 #: logviewer.py:568
115 msgid "The logs could not be captured."
104116 msgstr ""
105117
106 #: logviewer.py:530
107 msgid "Logs not sent"
118 #: logviewer.py:578
119 #, python-format
120 msgid "log-%s"
108121 msgstr ""
109
110 #: logviewer.py:531
111 msgid ""
112 "The logs could not be uploaded to the server. Please check your network "
113 "connection."
114 msgstr ""
11 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
22 # This file is distributed under the same license as the PACKAGE package.
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #, fuzzy
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 # SOME DESCRIPTIVE TITLE.
9 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
10 # This file is distributed under the same license as the PACKAGE package.
11 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
512 msgid ""
613 msgstr ""
714 "Project-Id-Version: PACKAGE VERSION\n"
815 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2008-05-17 23:36+0000\n"
10 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
16 "POT-Creation-Date: 2013-04-11 00:31-0400\n"
17 "PO-Revision-Date: 2010-01-29 08:29+0200\n"
18 "Last-Translator: Chris <cjl@laptop.org>\n"
1219 "Language-Team: LANGUAGE <LL@li.org>\n"
20 "Language: \n"
1321 "MIME-Version: 1.0\n"
1422 "Content-Type: text/plain; charset=UTF-8\n"
1523 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.1.1rc4\n"
24 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
25 "X-Generator: Pootle 2.0.1\n"
1726
18 #: activity/activity.info:2 logviewer.py:326
27 #. TRANS: "name" option from activity.info file
1928 msgid "Log"
29 msgstr "লগ"
30
31 #. TRANS: "summary" option from activity.info file
32 #. TRANS: "description" option from activity.info file
33 msgid ""
34 "This is an activity designed for anyone who wants to troubleshoot a "
35 "complicated program on the computer."
2036 msgstr ""
2137
22 #: logviewer.py:79
38 #: logviewer.py:93
2339 msgid "Log Files"
40 msgstr "লগ ফাইল"
41
42 #: logviewer.py:101
43 msgid "Other"
44 msgstr "অন্যান্য"
45
46 #: logviewer.py:211
47 #, python-format
48 msgid "ERROR: Failed to look for files in '%(path)s'."
49 msgstr "সমস্যা: '%(path)s' এর ভিতরে ফাইলে সন্ধান করতে ব্যর্থ।"
50
51 #: logviewer.py:227
52 #, python-format
53 msgid "ERROR: File '%(file)s' does not exist."
54 msgstr "সমস্যা: '%(file)s' ফাইল অনুপস্থিত।"
55
56 #: logviewer.py:232
57 #, python-format
58 msgid "ERROR: Unable to read file '%(file)s'."
59 msgstr "সমস্যা: '%(file)s' ফাইলটি পড়া যাচ্ছে না।"
60
61 #: logviewer.py:364
62 #, python-format
63 msgid "Error: Can't open file '%s'\n"
64 msgstr "সমস্যা: '%s' ফাইলটি খোলা যাচ্ছে না\n"
65
66 #: logviewer.py:405
67 msgid "Show list of files"
2468 msgstr ""
2569
26 #: logviewer.py:87
27 msgid "Other"
70 #: logviewer.py:415
71 msgid "Word Wrap"
72 msgstr "শব্দ গুটিয়ে ফেলো"
73
74 #: logviewer.py:431
75 msgid "Previous"
76 msgstr "পুর্ববর্তী"
77
78 #: logviewer.py:436
79 msgid "Next"
80 msgstr "পরবর্তী"
81
82 #: logviewer.py:450
83 msgid "Delete Log File"
84 msgstr "লগ ফাইল মুছো"
85
86 #: logviewer.py:522
87 msgid "Error"
88 msgstr "সমস্যা"
89
90 #: logviewer.py:523
91 #, python-format
92 msgid "%(error)s when deleting %(file)s"
93 msgstr "%(error)s সমস্যা হয়েছে, %(file)s গুলো মুছার সময়"
94
95 #: logviewer.py:534
96 #, fuzzy
97 msgid "Log Collector: Capture information"
98 msgstr "লগ সংগ্রহকারী: XO তথ্য প্রেরণ করো"
99
100 #: logviewer.py:541
101 msgid ""
102 "This captures information about the system\n"
103 "and running processes to a journal entry.\n"
104 "Use this to improve a problem report."
28105 msgstr ""
29106
30 #: logviewer.py:188
31 #, python-format
32 msgid "ERROR: Failed to look for files in '%(path)s'."
107 #: logviewer.py:545
108 msgid "Capture information"
33109 msgstr ""
34110
35 #: logviewer.py:203
36 #, python-format
37 msgid "ERROR: File '%(file)s' does not exist."
111 #: logviewer.py:567
112 msgid "Logs not captured"
38113 msgstr ""
39114
40 #: logviewer.py:207
41 #, python-format
42 msgid "ERROR: Unable to read file '%(file)s'."
115 #: logviewer.py:568
116 msgid "The logs could not be captured."
43117 msgstr ""
44118
45 #: logviewer.py:320
119 #: logviewer.py:578
46120 #, python-format
47 msgid "Error: Can't open file '%s'\n"
121 msgid "log-%s"
48122 msgstr ""
49123
50 #: logviewer.py:356
51 msgid "Word Wrap"
52 msgstr ""
124 #~ msgid "Tools"
125 #~ msgstr "টুল"
53126
54 #: logviewer.py:385
55 msgid "Previous"
56 msgstr ""
127 #, fuzzy
128 #~ msgid ""
129 #~ "Log collector sends information about the system\n"
130 #~ "and running processes to a central server. Use\n"
131 #~ "this option if you want to report a problem."
132 #~ msgstr ""
133 #~ "লগ সংগ্রহকারী সিস্টেম এবং চলমান প্রসেস সমন্ধীয় তথ্য প্রেরণ করে।আপনি কোন "
134 #~ "সমস্যা রিপোর্ট করতে চাইলে এই অপশনটি ব্যবহার করুন।"
57135
58 #: logviewer.py:392
59 msgid "Next"
60 msgstr ""
136 #~ msgid "Send information"
137 #~ msgstr "তথ্য প্রেরণ"
61138
62 #: logviewer.py:401
63 msgid "Edit"
64 msgstr ""
139 #~ msgid "Logs sent"
140 #~ msgstr "লগ প্রেরণ সমপন্ন"
65141
66 #: logviewer.py:406
67 msgid "Delete Log File"
68 msgstr ""
142 #~ msgid "The logs were uploaded to the server."
143 #~ msgstr "সার্ভারে লগ আপলোড করা হয়েছে।"
69144
70 #: logviewer.py:425
71 msgid "Tools"
72 msgstr ""
145 #~ msgid "Logs not sent"
146 #~ msgstr "লগ প্রেরণ হয়নি"
73147
74 #: logviewer.py:478
75 msgid "Error"
76 msgstr ""
77
78 #: logviewer.py:479
79 #, python-format
80 msgid "%(error)s when deleting %(file)s"
81 msgstr ""
82
83 #: logviewer.py:491
84 msgid "Log Collector: Send XO information"
85 msgstr ""
86
87 #: logviewer.py:498
88 msgid ""
89 "Log collector sends information about the system\n"
90 "and running processes to a central server. Use\n"
91 "this option if you want to report a problem."
92 msgstr ""
93
94 #: logviewer.py:502
95 msgid "Send information"
96 msgstr ""
97
98 #: logviewer.py:527
99 msgid "Logs sent"
100 msgstr ""
101
102 #: logviewer.py:528
103 msgid "The logs were uploaded to the server."
104 msgstr ""
105
106 #: logviewer.py:530
107 msgid "Logs not sent"
108 msgstr ""
109
110 #: logviewer.py:531
111 msgid ""
112 "The logs could not be uploaded to the server. Please check your network "
113 "connection."
114 msgstr ""
148 #~ msgid ""
149 #~ "The logs could not be uploaded to the server. Please check your network "
150 #~ "connection."
151 #~ msgstr ""
152 #~ "সার্ভারে লগ আপলোড করা যায় নি। অনুগ্রহ করে আপনার নেটওয়ার্ক সংযোগ পরীক্ষা "
153 #~ "করুন।"
11 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
22 # This file is distributed under the same license as the PACKAGE package.
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #, fuzzy
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
9 # This file is distributed under the same license as the PACKAGE package.
10 # Sankarshan Mukhopadhyay <sankarshan@randomink.org>, 2008.
511 msgid ""
612 msgstr ""
7 "Project-Id-Version: PACKAGE VERSION\n"
13 "Project-Id-Version: log-activity\n"
814 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2008-05-17 23:36+0000\n"
10 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12 "Language-Team: LANGUAGE <LL@li.org>\n"
15 "POT-Creation-Date: 2013-04-11 00:31-0400\n"
16 "PO-Revision-Date: 2008-07-13 13:25+0530\n"
17 "Last-Translator: Sankarshan Mukhopadhyay <sankarshan@randomink.org>\n"
18 "Language-Team: Bengali (India) <discuss@ankur.org.in>\n"
19 "Language: \n"
1320 "MIME-Version: 1.0\n"
1421 "Content-Type: text/plain; charset=UTF-8\n"
1522 "Content-Transfer-Encoding: 8bit\n"
23 "Plural-Forms: nplurals=2; plural=n != 1;\n"
1624 "X-Generator: Translate Toolkit 1.1.1rc4\n"
1725
18 #: activity/activity.info:2 logviewer.py:326
26 #. TRANS: "name" option from activity.info file
1927 msgid "Log"
28 msgstr "লগ"
29
30 #. TRANS: "summary" option from activity.info file
31 #. TRANS: "description" option from activity.info file
32 msgid ""
33 "This is an activity designed for anyone who wants to troubleshoot a "
34 "complicated program on the computer."
2035 msgstr ""
2136
22 #: logviewer.py:79
37 #: logviewer.py:93
2338 msgid "Log Files"
24 msgstr ""
39 msgstr "লগ ফাইলসমূহ"
2540
26 #: logviewer.py:87
41 #: logviewer.py:101
2742 msgid "Other"
28 msgstr ""
43 msgstr "অন্যান্য"
2944
30 #: logviewer.py:188
45 #: logviewer.py:211
3146 #, python-format
3247 msgid "ERROR: Failed to look for files in '%(path)s'."
3348 msgstr ""
3449
35 #: logviewer.py:203
50 #: logviewer.py:227
3651 #, python-format
3752 msgid "ERROR: File '%(file)s' does not exist."
3853 msgstr ""
3954
40 #: logviewer.py:207
55 #: logviewer.py:232
4156 #, python-format
4257 msgid "ERROR: Unable to read file '%(file)s'."
4358 msgstr ""
4459
45 #: logviewer.py:320
60 #: logviewer.py:364
4661 #, python-format
4762 msgid "Error: Can't open file '%s'\n"
4863 msgstr ""
4964
50 #: logviewer.py:356
51 msgid "Word Wrap"
65 #: logviewer.py:405
66 msgid "Show list of files"
5267 msgstr ""
5368
54 #: logviewer.py:385
69 #: logviewer.py:415
70 msgid "Word Wrap"
71 msgstr "শব্দ Wrap"
72
73 #: logviewer.py:431
5574 msgid "Previous"
56 msgstr ""
75 msgstr "পুর্বের"
5776
58 #: logviewer.py:392
77 #: logviewer.py:436
5978 msgid "Next"
60 msgstr ""
79 msgstr "পরের"
6180
62 #: logviewer.py:401
63 msgid "Edit"
64 msgstr ""
81 #: logviewer.py:450
82 msgid "Delete Log File"
83 msgstr "লগ ফাইল মুছে ফেলুন"
6584
66 #: logviewer.py:406
67 msgid "Delete Log File"
68 msgstr ""
85 #: logviewer.py:522
86 msgid "Error"
87 msgstr "ত্রুটি"
6988
70 #: logviewer.py:425
71 msgid "Tools"
72 msgstr ""
73
74 #: logviewer.py:478
75 msgid "Error"
76 msgstr ""
77
78 #: logviewer.py:479
89 #: logviewer.py:523
7990 #, python-format
8091 msgid "%(error)s when deleting %(file)s"
8192 msgstr ""
8293
83 #: logviewer.py:491
84 msgid "Log Collector: Send XO information"
94 #: logviewer.py:534
95 msgid "Log Collector: Capture information"
8596 msgstr ""
8697
87 #: logviewer.py:498
98 #: logviewer.py:541
8899 msgid ""
89 "Log collector sends information about the system\n"
90 "and running processes to a central server. Use\n"
91 "this option if you want to report a problem."
100 "This captures information about the system\n"
101 "and running processes to a journal entry.\n"
102 "Use this to improve a problem report."
92103 msgstr ""
93104
94 #: logviewer.py:502
95 msgid "Send information"
105 #: logviewer.py:545
106 msgid "Capture information"
96107 msgstr ""
97108
98 #: logviewer.py:527
99 msgid "Logs sent"
109 #: logviewer.py:567
110 msgid "Logs not captured"
100111 msgstr ""
101112
102 #: logviewer.py:528
103 msgid "The logs were uploaded to the server."
113 #: logviewer.py:568
114 msgid "The logs could not be captured."
104115 msgstr ""
105116
106 #: logviewer.py:530
107 msgid "Logs not sent"
117 #: logviewer.py:578
118 #, python-format
119 msgid "log-%s"
108120 msgstr ""
109121
110 #: logviewer.py:531
111 msgid ""
112 "The logs could not be uploaded to the server. Please check your network "
113 "connection."
114 msgstr ""
122 #~ msgid "Tools"
123 #~ msgstr "টুলসমূহ"
124
125 #~ msgid "Send information"
126 #~ msgstr "তথ্য প্রদান করুন"
127
128 #~ msgid "Logs sent"
129 #~ msgstr "লগ পাঠানো হয়েছে"
130
131 #~ msgid "The logs were uploaded to the server."
132 #~ msgstr "লগগুলি সার্ভার-এ তোলা হয়েছে।"
133
134 #~ msgid "Logs not sent"
135 #~ msgstr "লগ পাঠানো হয়নি"
136
137 #~ msgid "Edit"
138 #~ msgstr "সম্পাদন করুন"
0 # SOME DESCRIPTIVE TITLE.
1 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2 # This file is distributed under the same license as the PACKAGE package.
3 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 msgid ""
5 msgstr ""
6 "Project-Id-Version: PACKAGE VERSION\n"
7 "Report-Msgid-Bugs-To: \n"
8 "POT-Creation-Date: 2013-04-11 00:31-0400\n"
9 "PO-Revision-Date: 2011-08-29 07:39+0200\n"
10 "Last-Translator: Chris <cjl@laptop.org>\n"
11 "Language-Team: LANGUAGE <LL@li.org>\n"
12 "Language: \n"
13 "MIME-Version: 1.0\n"
14 "Content-Type: text/plain; charset=UTF-8\n"
15 "Content-Transfer-Encoding: 8bit\n"
16 "Plural-Forms: nplurals=2; plural=n > 1;\n"
17 "X-Generator: Pootle 2.0.1\n"
18
19 #. TRANS: "name" option from activity.info file
20 msgid "Log"
21 msgstr ""
22
23 #. TRANS: "summary" option from activity.info file
24 #. TRANS: "description" option from activity.info file
25 msgid ""
26 "This is an activity designed for anyone who wants to troubleshoot a "
27 "complicated program on the computer."
28 msgstr ""
29
30 #: logviewer.py:93
31 msgid "Log Files"
32 msgstr ""
33
34 #: logviewer.py:101
35 msgid "Other"
36 msgstr ""
37
38 #: logviewer.py:211
39 #, python-format
40 msgid "ERROR: Failed to look for files in '%(path)s'."
41 msgstr ""
42
43 #: logviewer.py:227
44 #, python-format
45 msgid "ERROR: File '%(file)s' does not exist."
46 msgstr ""
47
48 #: logviewer.py:232
49 #, python-format
50 msgid "ERROR: Unable to read file '%(file)s'."
51 msgstr ""
52
53 #: logviewer.py:364
54 #, python-format
55 msgid "Error: Can't open file '%s'\n"
56 msgstr ""
57
58 #: logviewer.py:405
59 msgid "Show list of files"
60 msgstr ""
61
62 #: logviewer.py:415
63 msgid "Word Wrap"
64 msgstr ""
65
66 #: logviewer.py:431
67 msgid "Previous"
68 msgstr ""
69
70 #: logviewer.py:436
71 msgid "Next"
72 msgstr "War-lerc'h"
73
74 #: logviewer.py:450
75 msgid "Delete Log File"
76 msgstr ""
77
78 #: logviewer.py:522
79 msgid "Error"
80 msgstr "Fazi"
81
82 #: logviewer.py:523
83 #, python-format
84 msgid "%(error)s when deleting %(file)s"
85 msgstr ""
86
87 #: logviewer.py:534
88 msgid "Log Collector: Capture information"
89 msgstr ""
90
91 #: logviewer.py:541
92 msgid ""
93 "This captures information about the system\n"
94 "and running processes to a journal entry.\n"
95 "Use this to improve a problem report."
96 msgstr ""
97
98 #: logviewer.py:545
99 msgid "Capture information"
100 msgstr ""
101
102 #: logviewer.py:567
103 msgid "Logs not captured"
104 msgstr ""
105
106 #: logviewer.py:568
107 msgid "The logs could not be captured."
108 msgstr ""
109
110 #: logviewer.py:578
111 #, python-format
112 msgid "log-%s"
113 msgstr ""
11 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
22 # This file is distributed under the same license as the PACKAGE package.
33 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4 #, fuzzy
4 # SOME DESCRIPTIVE TITLE.
5 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
6 # This file is distributed under the same license as the PACKAGE package.
7 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
8 # SOME DESCRIPTIVE TITLE.
9 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
10 # This file is distributed under the same license as the PACKAGE package.
11 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
512 msgid ""
613 msgstr ""
714 "Project-Id-Version: PACKAGE VERSION\n"
815 "Report-Msgid-Bugs-To: \n"
9 "POT-Creation-Date: 2008-05-17 23:36+0000\n"
10 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
11 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
16 "POT-Creation-Date: 2013-04-11 00:31-0400\n"
17 "PO-Revision-Date: 2009-12-16 00:14+0100\n"
18 "Last-Translator: el_libre -- www.catmidia.cat <el.libre@gmail.com>\n"
1219 "Language-Team: LANGUAGE <LL@li.org>\n"
20 "Language: \n"
1321 "MIME-Version: 1.0\n"
1422 "Content-Type: text/plain; charset=UTF-8\n"
1523 "Content-Transfer-Encoding: 8bit\n"
16 "X-Generator: Translate Toolkit 1.1.1rc4\n"
24 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
25 "X-Generator: Pootle 1.2.1\n"
1726
18 #: activity/activity.info:2 logviewer.py:326
27 #. TRANS: "name" option from activity.info file
1928 msgid "Log"
29 msgstr "Registre"
30
31 #. TRANS: "summary" option from activity.info file
32 #. TRANS: "description" option from activity.info file
33 msgid ""
34 "This is an activity designed for anyone who wants to troubleshoot a "
35 "complicated program on the computer."
2036 msgstr ""
2137
22 #: logviewer.py:79
38 #: logviewer.py:93
2339 msgid "Log Files"
40 msgstr "Arxiu de registre"
41
42 #: logviewer.py:101
43 msgid "Other"
44 msgstr "Altre"
45
46 #: logviewer.py:211
47 #, python-format
48 msgid "ERROR: Failed to look for files in '%(path)s'."
49 msgstr "ERROR: Ha fallat la cerca pels arxius a '%(path)s'."
50
51 #: logviewer.py:227
52 #, python-format
53 msgid "ERROR: File '%(file)s' does not exist."
54 msgstr "ERROR: L'arxiu '%(file)s' no existeix."
55
56 #: logviewer.py:232
57 #, python-format
58 msgid "ERROR: Unable to read file '%(file)s'."
59 msgstr "ERROR: no es pot llegir l'arxiu '%(file)s'."
60
61 #: logviewer.py:364
62 #, python-format
63 msgid "Error: Can't open file '%s'\n"
64 msgstr "Error: no es pot obrir l'arxiu '%s'\n"
65
66 #: logviewer.py:405
67 msgid "Show lis