Merge lp:~ubuntu-branches/ubuntu/oneiric/ltsp/oneiric-201108242108 into lp:ubuntu/oneiric/ltsp

Proposed by Ubuntu Package Importer
Status: Needs review
Proposed branch: lp:~ubuntu-branches/ubuntu/oneiric/ltsp/oneiric-201108242108
Merge into: lp:ubuntu/oneiric/ltsp
Diff against target: 711 lines (+671/-0) (has conflicts)
7 files modified
debian/scripts/ltsp-live (+301/-0)
debian/scripts/ltsp-live.desktop (+7/-0)
debian/scripts/ltsp-live.png.b64 (+87/-0)
debian/scripts/ltsp-live.xml (+115/-0)
debian/scripts/po/Makefile (+35/-0)
debian/scripts/po/fr.po (+65/-0)
debian/scripts/po/ltsp-live.pot (+61/-0)
Conflict adding file debian/scripts/ltsp-live.desktop.  Moved existing file to debian/scripts/ltsp-live.desktop.moved.
Conflict adding file debian/scripts/ltsp-live.  Moved existing file to debian/scripts/ltsp-live.moved.
Conflict adding file debian/scripts/ltsp-live.png.b64.  Moved existing file to debian/scripts/ltsp-live.png.b64.moved.
Conflict adding file debian/scripts/ltsp-live.xml.  Moved existing file to debian/scripts/ltsp-live.xml.moved.
Conflict adding file debian/scripts/po.  Moved existing file to debian/scripts/po.moved.
To merge this branch: bzr merge lp:~ubuntu-branches/ubuntu/oneiric/ltsp/oneiric-201108242108
Reviewer Review Type Date Requested Status
Ubuntu branches Pending
Review via email: mp+73900@code.launchpad.net

Description of the change

The package importer has detected a possible inconsistency between the package history in the archve and the history in bzr. As the archive is authoritative the importer has made lp:ubuntu/oneiric/ltsp reflect what is in the archive and the old bzr branch has been pushed to lp:~ubuntu-branches/ubuntu/oneiric/ltsp/oneiric-201108242108. This merge proposal was created so that an Ubuntu developer can review the situations and perform a merge/upload if necessary. There are three typical cases where this can happen.
  1. Where someone pushes a change to bzr and someone else uploads the package without that change. This is the reason that this check is done by the importer. If this appears to be the case then a merge/upload should be done if the changes that were in bzr are still desirable.
  2. The importer incorrectly detected the above situation when someone made a change in bzr and then uploaded it.
  3. The importer incorrectly detected the above situation when someone just uploaded a package and didn't touch bzr.

If this case doesn't appear to be the first situation then set the status of the merge proposal to "Rejected" and help avoid the problem in future by filing a bug at https://bugs.launchpad.net/udd linking to this merge proposal.

(this is an automatically generated message)

To post a comment you must log in.

Unmerged revisions

242. By Stéphane Graber

releasing version 5.2.16-0ubuntu2

241. By Stéphane Graber

Update dependencies for new ltsp-live

240. By Stéphane Graber

Replace ltsp-live by new python equivalent

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'debian/scripts/ltsp-live'
2--- debian/scripts/ltsp-live 1970-01-01 00:00:00 +0000
3+++ debian/scripts/ltsp-live 2011-09-02 22:56:31 +0000
4@@ -0,0 +1,301 @@
5+#!/usr/bin/python
6+# -*- coding: utf-8 -*-
7+# Copyright (applies if no explicit header in the file):
8+#
9+# This program is free software; you can redistribute it and/or
10+# modify it under the terms of the GNU General Public License
11+# as published by the Free Software Foundation; either version 2
12+# of the License, or (at your option) any later version.
13+#
14+# This program is distributed in the hope that it will be useful,
15+# but WITHOUT ANY WARRANTY; without even the implied warranty of
16+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17+# GNU General Public License for more details.
18+#
19+# You should have received a copy of the GNU General Public License
20+# along with this program; if not, write to the Free Software
21+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22+#
23+# Copyright (C) 2011 Canonical Ltd.
24+# Authors:
25+# * Stéphane Graber <stephane.graber@canonical.com>, 2011
26+
27+import os, gettext, sys, subprocess
28+from gettext import gettext as _
29+gettext.textdomain("ltsp-live")
30+
31+def generate_network(name, address):
32+ import uuid
33+
34+ try:
35+ from ConfigParser import ConfigParser
36+ except:
37+ from configparser import ConfigParser
38+
39+ parser = ConfigParser()
40+ path = "/etc/NetworkManager/system-connections/%s" % name
41+
42+ if path not in parser.read(path):
43+ if not os.path.exists(path):
44+ print(_("Creating new configuration file"))
45+ else:
46+ print(_("Unable to parse config"))
47+ sys.exit(1)
48+
49+ if "802-3-ethernet" not in parser.sections():
50+ parser.add_section("802-3-ethernet")
51+ parser.set("802-3-ethernet", "duplex", "full")
52+
53+ if "connection" not in parser.sections():
54+ parser.add_section("connection")
55+ parser.set("connection", "id", name)
56+ parser.set("connection", "uuid", str(uuid.uuid4()))
57+ parser.set("connection", "type", "802-3-ethernet")
58+
59+ if "ipv6" not in parser.sections():
60+ parser.add_section("ipv6")
61+ parser.set("ipv6", "method", "ignore")
62+
63+ if "ipv4" not in parser.sections():
64+ parser.add_section("ipv4")
65+ parser.set("ipv4", "method", "manual")
66+ parser.set("ipv4", "addresses1", address)
67+
68+
69+ config=open("%s.tmp" % path, "w+")
70+ parser.write(config)
71+ config.close()
72+
73+ os.chmod("%s.tmp" % path, 0o600)
74+ os.rename("%s.tmp" % path, path)
75+
76+def enable_network(name, interface):
77+ cmd=['nmcli', 'con', 'up', 'id', name, 'iface', interface]
78+ enable=subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,env={'LANG':'C'})
79+ retval=enable.wait()
80+
81+ if retval != 0:
82+ print(_("Failed to enable LTSP: %s") % " ".join(cmd))
83+ print(enable.stdout.read().strip())
84+ print(enable.stderr.read().strip())
85+
86+ return retval
87+
88+def list_devices():
89+ devices={}
90+
91+ cmd=['nmcli', '-e', 'yes', '-t', '-f', 'DEVICE,TYPE,STATE', 'dev']
92+ listdev=subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,env={'LANG':'C'})
93+ retval=listdev.wait()
94+
95+ if retval != 0:
96+ print(_("Failed to list network cards: %s") % " ".join(cmd))
97+ print(listdev.stdout.read().strip())
98+ print(listdev.stderr.read().strip())
99+ else:
100+ for line in listdev.stdout.readlines():
101+ fields=str(line).strip().split(':')
102+ if len(fields) == 3:
103+ if fields[1] != "802-3-ethernet" or fields[2] == "unavailable":
104+ continue
105+ devices[fields[0]]=(fields[1],fields[2])
106+
107+ return devices
108+
109+def start_ltsplive(interface, winLTSP):
110+ import time
111+
112+ # Add the network to Network Manager
113+ generate_network("LTSP","192.168.0.254;24;0.0.0.0;")
114+ time.sleep(2)
115+
116+ # Switch to that network now
117+ if enable_network("LTSP",interface) != 0:
118+ # Something went wrong
119+ winLTSP.set_sensitive(True)
120+ return False
121+
122+ # Install the needed packages
123+ cmd=["apt-get", "install", "--no-install-recommends", "-qq", "-y", "ltsp-server", "openssh-server"]
124+ runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
125+ runcmd.wait()
126+
127+ # Kill inetd as it's not needed anyway
128+ cmd=["killall","inetd"]
129+ runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
130+ runcmd.wait()
131+
132+ # Create LTSP configuration
133+ os.makedirs("/var/lib/tftpboot/ltsp/i386", mode=0o755)
134+ ltsconf=open("/var/lib/tftpboot/ltsp/i386/lts.conf","w+")
135+ ltsconf.write("""
136+[default]
137+LDM_DIRECTX=True
138+LDM_SSHOPTIONS="-o StrictHostKeyChecking=no -o CheckHostIP=no -o LogLevel=silent"
139+LDM_GUESTLOGIN=True
140+""")
141+
142+ # Edubuntu theming
143+ if os.path.exists("/cdrom/README.diskdefines") and "Edubuntu" in open("/cdrom/README.diskdefines").read():
144+ ltsconf.write("LDM_THEME=edubuntu\n")
145+ ltsconf.close()
146+
147+ # Create LTSP Guest users
148+ newusers=open("/tmp/userlist","w+")
149+ for user in range(1,255):
150+ newusers.write("ltsp%s:ltsp%s:%s:1000:LTSP Guest:/home/ltsp%s:/bin/sh\n" % (user, user, 2000+user, user))
151+ newusers.close()
152+
153+ cmd=["newusers","/tmp/userlist"]
154+ runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
155+ runcmd.wait()
156+
157+ # Configuring dnsmasq
158+ dnsmasq=open("/tmp/dnsmasq-ltsp-livecd.conf","w+")
159+ dnsmasq.write("""
160+pxe-prompt="Starting Edubuntu Live LTSP... Press F8 for boot menu.", 3
161+pxe-service=X86PC, "Boot from network", /ltsp/i386/pxelinux
162+pxe-service=X86PC, "Boot from local hard disk", 0
163+enable-tftp
164+tftp-root=/var/lib/tftpboot
165+dhcp-boot=/ltsp/i386/pxelinux.0
166+dhcp-option=vendor:PXEClient,6,2b
167+dhcp-no-override
168+dhcp-range=192.168.0.50,192.168.0.150,8h
169+""")
170+ dnsmasq.close()
171+
172+ # Call dnsmasq -C /tmp/dnsmasq-ltsp-livecd.conf
173+ cmd=["dnsmasq", "-C", "/tmp/dnsmasq-ltsp-livecd.conf"]
174+ runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
175+ runcmd.wait()
176+
177+ # Set up kernels, etc:
178+ os.makedirs("/opt/ltsp/i386",0o755)
179+
180+ cmd=["mount", "/cdrom/ltsp/i386.img", "/opt/ltsp/i386", "-o", "loop"]
181+ runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
182+ runcmd.wait()
183+
184+ cmd=["ltsp-update-kernels"]
185+ runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
186+ runcmd.wait()
187+
188+ cmd=["umount", "/opt/ltsp/i386"]
189+ runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
190+ runcmd.wait()
191+
192+ # Start nbd-server
193+ cmd=["nbd-server", "2000", "/cdrom/ltsp/i386.img"]
194+ runcmd=subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
195+ runcmd.wait()
196+
197+ sys.exit(0)
198+
199+def start_ui():
200+ from gi.repository import Gtk as gtk
201+ from gi.repository import GObject as gobject
202+
203+ builder = gtk.Builder()
204+ builder.set_translation_domain("ltsp-live")
205+ if os.path.exists("ltsp-live.xml"):
206+ xml_file = "ltsp-live.xml"
207+ elif os.path.exists("/usr/share/ltsp-live/ltsp-live.xml"):
208+ xml_file = "/usr/share/ltsp-live/ltsp-live.xml"
209+ else:
210+ print(_("Unable to find .xml UI file"))
211+ sys.exit(1)
212+
213+ builder.add_from_file(xml_file)
214+
215+ winLTSP = builder.get_object("winLTSP")
216+ cmbInterface = builder.get_object("cmbInterface")
217+ btnStart = builder.get_object("btnStart")
218+
219+ # Populate drop-down
220+ model_interface = gtk.ListStore(str,str)
221+ cmbInterface.set_model(model_interface)
222+ cell = gtk.CellRendererText()
223+ cmbInterface.pack_start(cell, False)
224+ cmbInterface.add_attribute(cell,'text',0)
225+
226+ entry_cache=[]
227+ devices={}
228+
229+ def check_remove_entry(model, path, rowiter, data):
230+ if model.get_value(rowiter, 1) == data:
231+ model.remove(rowiter)
232+ return True
233+ return False
234+
235+ def update_interfaces():
236+ if winLTSP.get_sensitive() == False:
237+ return True
238+
239+ devices.clear()
240+ devices.update(list_devices())
241+
242+ if len(devices) == 0:
243+ if len(model_interface) == 1 and model_interface[0][1] == "None":
244+ return True
245+
246+ for entry in entry_cache:
247+ entry_cache.remove(entry)
248+ model_interface.clear()
249+ model_interface.append([_("None"),"None"])
250+ cmbInterface.set_active(0)
251+ cmbInterface.set_sensitive(False)
252+ btnStart.set_sensitive(False)
253+ return True
254+
255+ if len(entry_cache) == 0:
256+ cmbInterface.set_sensitive(True)
257+ btnStart.set_sensitive(True)
258+ model_interface.clear()
259+
260+ # Add new entries
261+ for device in devices:
262+ entry=["%s (%s)" % (device, devices[device][0]),device]
263+ if entry not in entry_cache:
264+ model_interface.append(entry)
265+ entry_cache.append(entry)
266+
267+ # Remove old entries
268+ for entry in entry_cache:
269+ if entry[1] not in devices:
270+ model_interface.foreach(check_remove_entry,(entry[1]))
271+ entry_cache.remove(entry)
272+
273+ cmbInterface.set_active(0)
274+ return True
275+
276+ update_interfaces()
277+ gobject.timeout_add(2000, update_interfaces)
278+
279+ def start(button):
280+ interface = model_interface[cmbInterface.get_active()][1]
281+ if devices[interface][1] == "connected":
282+ warning=gtk.MessageDialog(
283+ parent=winLTSP,
284+ flags=gtk.DialogFlags.MODAL,
285+ message_type=gtk.MessageType.WARNING,
286+ buttons=gtk.ButtonsType.OK_CANCEL,
287+ message_format=_("The selected network interface is already in use.\nAre you sure you want to use it?"))
288+ retval = warning.run()
289+ warning.destroy()
290+ if retval != gtk.ResponseType.OK:
291+ return
292+
293+ winLTSP.set_sensitive(False)
294+ gobject.timeout_add(1000, start_ltsplive, interface, winLTSP)
295+
296+ builder.connect_signals({
297+ "on_winLTSP_destroy" : gtk.main_quit,
298+ "on_btnCancel_clicked" : gtk.main_quit,
299+ "on_btnStart_clicked" : start,
300+ })
301+
302+ winLTSP.show()
303+ gtk.main()
304+
305+start_ui()
306
307=== added file 'debian/scripts/ltsp-live.desktop'
308--- debian/scripts/ltsp-live.desktop 1970-01-01 00:00:00 +0000
309+++ debian/scripts/ltsp-live.desktop 2011-09-02 22:56:31 +0000
310@@ -0,0 +1,7 @@
311+
312+[Desktop Entry]
313+Icon=ltsp-live.png
314+Type=Application
315+Exec=gksudo ltsp-live
316+Name=Start LTSP Live
317+Comment=Starts an LTSP LiveCD Session
318
319=== renamed file 'debian/scripts/ltsp-live.desktop' => 'debian/scripts/ltsp-live.desktop.moved'
320=== renamed file 'debian/scripts/ltsp-live' => 'debian/scripts/ltsp-live.moved'
321=== added file 'debian/scripts/ltsp-live.png.b64'
322--- debian/scripts/ltsp-live.png.b64 1970-01-01 00:00:00 +0000
323+++ debian/scripts/ltsp-live.png.b64 2011-09-02 22:56:31 +0000
324@@ -0,0 +1,87 @@
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
412
413=== renamed file 'debian/scripts/ltsp-live.png.b64' => 'debian/scripts/ltsp-live.png.b64.moved'
414=== added file 'debian/scripts/ltsp-live.xml'
415--- debian/scripts/ltsp-live.xml 1970-01-01 00:00:00 +0000
416+++ debian/scripts/ltsp-live.xml 2011-09-02 22:56:31 +0000
417@@ -0,0 +1,115 @@
418+<?xml version="1.0" encoding="UTF-8"?>
419+<interface>
420+ <requires lib="gtk+" version="2.16"/>
421+ <object class="GtkWindow" id="winLTSP">
422+ <property name="can_focus">False</property>
423+ <property name="title" translatable="yes">LTSP-Live configuration</property>
424+ <property name="resizable">False</property>
425+ <property name="window_position">center-always</property>
426+ <signal name="destroy" handler="on_winLTSP_destroy" swapped="no"/>
427+ <child>
428+ <object class="GtkVBox" id="vbox1">
429+ <property name="visible">True</property>
430+ <property name="can_focus">False</property>
431+ <property name="border_width">12</property>
432+ <property name="spacing">8</property>
433+ <child>
434+ <object class="GtkLabel" id="lblWarning">
435+ <property name="visible">True</property>
436+ <property name="can_focus">False</property>
437+ <property name="xalign">0</property>
438+ <property name="label" translatable="yes">Welcome to LTSP Live.
439+Please choose a network interface below and click OK.</property>
440+ <property name="use_markup">True</property>
441+ </object>
442+ <packing>
443+ <property name="expand">False</property>
444+ <property name="fill">False</property>
445+ <property name="position">0</property>
446+ </packing>
447+ </child>
448+ <child>
449+ <object class="GtkBox" id="hbox1">
450+ <property name="visible">True</property>
451+ <property name="can_focus">False</property>
452+ <property name="spacing">8</property>
453+ <child>
454+ <object class="GtkLabel" id="label1">
455+ <property name="visible">True</property>
456+ <property name="can_focus">False</property>
457+ <property name="xalign">0</property>
458+ <property name="label" translatable="yes">Network devices</property>
459+ </object>
460+ <packing>
461+ <property name="expand">True</property>
462+ <property name="fill">True</property>
463+ <property name="position">0</property>
464+ </packing>
465+ </child>
466+ <child>
467+ <object class="GtkComboBox" id="cmbInterface">
468+ <property name="visible">True</property>
469+ <property name="can_focus">False</property>
470+ </object>
471+ <packing>
472+ <property name="expand">False</property>
473+ <property name="fill">True</property>
474+ <property name="position">1</property>
475+ </packing>
476+ </child>
477+ </object>
478+ <packing>
479+ <property name="expand">True</property>
480+ <property name="fill">True</property>
481+ <property name="position">1</property>
482+ </packing>
483+ </child>
484+ <child>
485+ <object class="GtkHButtonBox" id="hbuttonbox1">
486+ <property name="visible">True</property>
487+ <property name="can_focus">False</property>
488+ <property name="spacing">6</property>
489+ <property name="layout_style">end</property>
490+ <child>
491+ <object class="GtkButton" id="btnCancel">
492+ <property name="label">gtk-cancel</property>
493+ <property name="visible">True</property>
494+ <property name="can_focus">True</property>
495+ <property name="receives_default">True</property>
496+ <property name="use_action_appearance">False</property>
497+ <property name="use_stock">True</property>
498+ <signal name="clicked" handler="on_btnCancel_clicked" swapped="no"/>
499+ </object>
500+ <packing>
501+ <property name="expand">False</property>
502+ <property name="fill">False</property>
503+ <property name="position">0</property>
504+ </packing>
505+ </child>
506+ <child>
507+ <object class="GtkButton" id="btnStart">
508+ <property name="label">gtk-ok</property>
509+ <property name="visible">True</property>
510+ <property name="can_focus">True</property>
511+ <property name="receives_default">True</property>
512+ <property name="use_action_appearance">False</property>
513+ <property name="use_stock">True</property>
514+ <signal name="clicked" handler="on_btnStart_clicked" swapped="no"/>
515+ </object>
516+ <packing>
517+ <property name="expand">False</property>
518+ <property name="fill">False</property>
519+ <property name="position">1</property>
520+ </packing>
521+ </child>
522+ </object>
523+ <packing>
524+ <property name="expand">False</property>
525+ <property name="fill">False</property>
526+ <property name="position">3</property>
527+ </packing>
528+ </child>
529+ </object>
530+ </child>
531+ </object>
532+</interface>
533
534=== renamed file 'debian/scripts/ltsp-live.xml' => 'debian/scripts/ltsp-live.xml.moved'
535=== added directory 'debian/scripts/po'
536=== renamed directory 'debian/scripts/po' => 'debian/scripts/po.moved'
537=== added file 'debian/scripts/po/Makefile'
538--- debian/scripts/po/Makefile 1970-01-01 00:00:00 +0000
539+++ debian/scripts/po/Makefile 2011-09-02 22:56:31 +0000
540@@ -0,0 +1,35 @@
541+DOMAIN=ltsp-live
542+POFILES=$(wildcard *.po)
543+MOFILES=$(patsubst %.po,%.mo,$(POFILES))
544+LINGUAS=$(basename $(POFILES))
545+POTFILE=$(DOMAIN).pot
546+
547+%.mo: %.po
548+ msgfmt --statistics -o $@ $<
549+
550+%.po: $(DOMAIN).pot
551+ msgmerge -U $*.po $(DOMAIN).pot
552+
553+$(DOMAIN).pot:
554+ pygettext -d $(DOMAIN) -a -D ../ltsp-live
555+ xgettext -L glade -o $(DOMAIN).pot -j ../ltsp-live.xml
556+ sed "/#, fuzzy/d" -i ltsp-live.pot
557+
558+update-po:
559+ -for lang in $(LINGUAS); do\
560+ msgmerge -U $$lang.po $(DOMAIN).pot; \
561+ done
562+
563+install: $(MOFILES)
564+ -for lang in $(LINGUAS); do\
565+ install -d $(DESTDIR)/usr/share/locale/$$lang/LC_MESSAGES/; \
566+ install -m 644 $$lang.mo $(DESTDIR)/usr/share/locale/$$lang/LC_MESSAGES/$(DOMAIN).mo; \
567+ done
568+
569+all: update-po $(MOFILES)
570+
571+distclean: clean
572+clean:
573+ - rm *.mo *~
574+
575+.PHONY: update-po check
576
577=== added file 'debian/scripts/po/fr.po'
578--- debian/scripts/po/fr.po 1970-01-01 00:00:00 +0000
579+++ debian/scripts/po/fr.po 2011-09-02 22:56:31 +0000
580@@ -0,0 +1,65 @@
581+# SOME DESCRIPTIVE TITLE.
582+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
583+# This file is distributed under the same license as the PACKAGE package.
584+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
585+#
586+msgid ""
587+msgstr ""
588+"Project-Id-Version: PACKAGE VERSION\n"
589+"Report-Msgid-Bugs-To: \n"
590+"POT-Creation-Date: 2011-08-24 16:45-0400\n"
591+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
592+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
593+"Language-Team: LANGUAGE <LL@li.org>\n"
594+"Language: \n"
595+"MIME-Version: 1.0\n"
596+"Content-Type: text/plain; charset=UTF-8\n"
597+"Content-Transfer-Encoding: 8bit\n"
598+
599+#: ../ltsp-live:40
600+msgid "Creating new configuration file"
601+msgstr "Création d'un nouveau fichier de configuration"
602+
603+#: ../ltsp-live:42
604+msgid "Unable to parse config"
605+msgstr "Impossible d'analyser la configuration"
606+
607+#: ../ltsp-live:78
608+msgid "Failed to enable LTSP: %s"
609+msgstr "Impossible de configurer LTSP: %s"
610+
611+#: ../ltsp-live:92
612+msgid "Failed to list network cards: %s"
613+msgstr "Impossible de lister les cartes réseaux: %s"
614+
615+#: ../ltsp-live:205
616+msgid "Unable to find .xml UI file"
617+msgstr "Fichier .xml d'interface graphique introuvable"
618+
619+#: ../ltsp-live:244
620+msgid "None"
621+msgstr "Aucune"
622+
623+#: ../ltsp-live:282
624+msgid ""
625+"The selected network interface is already in use.\n"
626+"Are you sure you want to use it?"
627+msgstr ""
628+"La carte réseau séléctionnée est déjà utilisée.\n"
629+"Etes-vous sûr de vouloir l'utiliser?"
630+
631+#: ../ltsp-live.xml:6
632+msgid "LTSP-Live configuration"
633+msgstr "Configure de LTSP-Live"
634+
635+#: ../ltsp-live.xml:21
636+msgid ""
637+"Welcome to LTSP Live.\n"
638+"Please choose a network interface below and click OK."
639+msgstr ""
640+"Bienvenue dans LTSP Live.\n"
641+"Veuillez choisir une interface réseau et cliquer OK."
642+
643+#: ../ltsp-live.xml:41
644+msgid "Network devices"
645+msgstr "Carte réseaux"
646
647=== added file 'debian/scripts/po/ltsp-live.pot'
648--- debian/scripts/po/ltsp-live.pot 1970-01-01 00:00:00 +0000
649+++ debian/scripts/po/ltsp-live.pot 2011-09-02 22:56:31 +0000
650@@ -0,0 +1,61 @@
651+# SOME DESCRIPTIVE TITLE.
652+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
653+# This file is distributed under the same license as the PACKAGE package.
654+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
655+#
656+msgid ""
657+msgstr ""
658+"Project-Id-Version: PACKAGE VERSION\n"
659+"Report-Msgid-Bugs-To: \n"
660+"POT-Creation-Date: 2011-08-24 16:45-0400\n"
661+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
662+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
663+"Language-Team: LANGUAGE <LL@li.org>\n"
664+"Language: \n"
665+"MIME-Version: 1.0\n"
666+"Content-Type: text/plain; charset=CHARSET\n"
667+"Content-Transfer-Encoding: 8bit\n"
668+
669+#: ../ltsp-live:40
670+msgid "Creating new configuration file"
671+msgstr ""
672+
673+#: ../ltsp-live:42
674+msgid "Unable to parse config"
675+msgstr ""
676+
677+#: ../ltsp-live:78
678+msgid "Failed to enable LTSP: %s"
679+msgstr ""
680+
681+#: ../ltsp-live:92
682+msgid "Failed to list network cards: %s"
683+msgstr ""
684+
685+#: ../ltsp-live:205
686+msgid "Unable to find .xml UI file"
687+msgstr ""
688+
689+#: ../ltsp-live:244
690+msgid "None"
691+msgstr ""
692+
693+#: ../ltsp-live:282
694+msgid ""
695+"The selected network interface is already in use.\n"
696+"Are you sure you want to use it?"
697+msgstr ""
698+
699+#: ../ltsp-live.xml:6
700+msgid "LTSP-Live configuration"
701+msgstr ""
702+
703+#: ../ltsp-live.xml:21
704+msgid ""
705+"Welcome to LTSP Live.\n"
706+"Please choose a network interface below and click OK."
707+msgstr ""
708+
709+#: ../ltsp-live.xml:41
710+msgid "Network devices"
711+msgstr ""

Subscribers

People subscribed via source and target branches

to all changes: