diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..686755b --- /dev/null +++ b/Makefile @@ -0,0 +1,57 @@ +WINE = WINEPREFIX=$(PWD)/wine wine +WINEPY = $(WINE) C:\\Python26\\python.exe +RVER = `head -n1 debian/changelog | sed 's,.*(\(.*\)).*,\1,'` +REV = `bzr revno` +RESULT="build/usb-creator-r$(REV)-$(RVER).exe" + +update-po: + find -regex "./\(usbcreator\|dbus\|gui\|desktop\).*\.\(py\|glade\|ui\|in\)" \ + | sed '/gtk\.ui/ s,^,[type: gettext/glade],' > po/POTFILES.in + echo ./main.py >> po/POTFILES.in + echo ./bin/usb-creator-gtk >> po/POTFILES.in + echo ./bin/usb-creator-kde >> po/POTFILES.in + python setup.py build_i18n --merge-po --po-dir po + +check_external_deps: + tools/check_external_deps + +check_windows: check_external_deps + $(WINEPY) ./tests/run-win + +check: check_windows + tests/run + +build_windows: build_pylauncher translations + cp wine/drive_c/Program\ Files/7-Zip/7z.exe build + $(WINEPY) -OO tools/pypack/pypack --verbose --bytecompile --outputdir=build/usbcreator main.py tools/_include.py tools/dd.exe tools/syslinux.exe build/7z.exe build/translations + $(WINEPY) -OO build/pylauncher/pack.py build/usbcreator + mv build/application.exe $(RESULT) + du -h $(RESULT) + +build_pylauncher: clean check_external_deps + cp -r tools/pylauncher build + cp wine/drive_c/windows/system32/python26.dll build/pylauncher + cp desktop/usb-creator.ico build/pylauncher/application.ico + cd build/pylauncher; $(MAKE) + +test_windows: build_windows + $(WINE) $(RESULT) + +clean: + rm -rf build/* + cd tools/pylauncher; $(MAKE) clean + find tools/pypack -type f -name "*.pyo" -delete + +translations: po/*.po + # TODO evand 2009-07-28: Ideally we should build the mo files once, + # instead of once here and once in setup.py. + # Taken from Wubi. + rm -rf build/translations + mkdir -p build/translations/ + @for po in $^; do \ + language=`basename $$po`; \ + language=$${language%%.po}; \ + target="build/translations/$$language/LC_MESSAGES"; \ + mkdir -p $$target; \ + msgfmt --output=$$target/usbcreator.mo $$po; \ + done diff --git a/Messages.sh b/Messages.sh new file mode 100755 index 0000000..76aebe2 --- /dev/null +++ b/Messages.sh @@ -0,0 +1,24 @@ +#! /usr/bin/env bash + +NAME="usbcreator" +XGETTEXT="xgettext -ki18n --language=Python" +EXTRACTRC="extractrc" + +$EXTRACTRC gui/$NAME-kde.ui > ./$NAME-kde.ui.py +$XGETTEXT $NAME-kde.ui.py $NAME/frontends/kde/*.py -o "$NAME.pot" + +sed -e 's/charset=CHARSET/charset=UTF-8/g' -i "$NAME.pot" + +if [ -d "po" ]; then + if [ -f "po/$NAME.pot" ]; then + echo "Merging $NAME.pot -> po/$NAME.pot ..." + msgcat -o "po/tmp-$NAME.pot" "po/$NAME.pot" "$NAME.pot" + mv "po/tmp-$NAME.pot" "po/$NAME.pot" + else + echo "Copying $NAME.pot -> po/$NAME.pot ..." + cp "$NAME.pot" "po/$NAME.pot" + fi +fi + +rm -f "$NAME-kde.ui.py" +rm -f "$NAME.pot" diff --git a/TODO b/TODO new file mode 100644 index 0000000..6996574 --- /dev/null +++ b/TODO @@ -0,0 +1,27 @@ +TODO for usb-creator-kde: +------------------------------------- + * Find out why resume from cancel install hangs the creator + * Implement icons in treeview similar to gtk frontend (warning, etc) + - need gio and get_gnome_drive equivalent functions from commit 205 + +TODO for usb-creator-win: +------------------------- + + * Resolve possible redistribution issue with Python for Windows 2.6 mentioned + by Agostino Russo. + * Improve the icon. Get the icon working in the title bar. + * Include sources for all of the code we're distributing. + +General TODO: +------------- + + * Mac OSX support. It looks like it requires GPT and a blessed image. GRUB 2 + does not support it as of this writing (2009-07-09), which will have to + happen first. We'll also likely move to GRUB 2 at that point, assuming + Ubuntu does first. + * QA and testing + - Successful install does not unmount USB Stick + - Format USB stick fails to re-detect the formatted stick (format does not make a valid FS) + - Cannot eject CD-ROM (held by root) + * Create a backend.base.install class, replace usb-creator/install.py with + backend.BACKEND.install. diff --git a/bin/usb-creator-gtk b/bin/usb-creator-gtk new file mode 100755 index 0000000..08d408b --- /dev/null +++ b/bin/usb-creator-gtk @@ -0,0 +1,93 @@ +#!/usr/bin/python3 + +# Copyright (C) 2009 Canonical Ltd. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os +import sys +import optparse +import logging + +from dbus import DBusException + +program = sys.argv[0] +if program.startswith('./') or program.startswith('bin/'): + sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) + os.environ['USBCREATOR_LOCAL'] = '1' +from usbcreator.frontends.gtk import GtkFrontend +from usbcreator.backends.udisks import UDisksBackend +from usbcreator.backends.fastboot import FastbootBackend +from usbcreator.misc import sane_path, setup_gettext, setup_logging, text_type + +sane_path() +setup_logging() +setup_gettext() + +# TODO evand 2009-07-09: Rename to bin/usb-creator-gtk.in and substitue the +# version in at build time. +parser = optparse.OptionParser(usage=_('%prog [options]'), version='0.2.23') +parser.set_defaults(safe=False, + iso=None, + persistent=True, + allow_system_internal=False, + trace=False) +# FIXME evand 2009-07-28: Reconnect this option to the install routine. +parser.add_option('-s', '--safe', dest='safe', action='store_true', + help=_('choose safer options when constructing the startup ' + 'disk (may slow down the boot process).')) +parser.add_option('-i', '--iso', dest='img', + help=_('provide a source image (CD or disk) to ' + 'pre-populate the UI.')) +parser.add_option('-n', '--not_persistent', dest='persistent', + action='store_false', + help=_('disable persistent setting in the UI')) +parser.add_option('--allow-system-internal', dest='allow_system_internal', + action='store_true', + help=_('allow writing to system-internal devices')) +parser.add_option('--show-all', dest='show_all', action='store_true', + help=_('Show all devices')) +parser.add_option('--fastboot', dest='fastboot', action='store_true', + help=_('Use fastboot backend to flash Android devices.')) +(options, args) = parser.parse_args() + +try: + if options.fastboot: + options.persistent = False + backend = FastbootBackend() + else: + backend = UDisksBackend( + allow_system_internal=options.allow_system_internal, + show_all=options.show_all) + frontend = GtkFrontend( + backend, options.img, options.persistent, + allow_system_internal=options.allow_system_internal) +except DBusException as e: + # FIXME evand 2009-07-09: Wouldn't service activation pick this up + # automatically? + # FIXME evand 2009-07-28: Does this really belong this far out? + logging.exception('DBus exception:') + if e._dbus_error_name == 'org.freedesktop.DBus.Error.ServiceUnknown': + message = _('This program needs udisks running in order to' + 'properly function.') + else: + message = _('An error occurred while talking to the udisks ' + 'service.') + GtkFrontend.startup_failure(message) + sys.exit(1) +except (KeyboardInterrupt, Exception) as e: + # TODO evand 2009-05-03: What should we do here to make sure devices are + # unmounted, etc? + logging.exception('Unhandled exception:') + message = _('An unhandled exception occurred:\n%s' % text_type(e)) + GtkFrontend.startup_failure(message) diff --git a/bin/usb-creator-helper b/bin/usb-creator-helper new file mode 100755 index 0000000..44a43d6 --- /dev/null +++ b/bin/usb-creator-helper @@ -0,0 +1,327 @@ +#!/usr/bin/python3 + +# Copyright (C) 2009 Canonical Ltd. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import dbus +from gi.repository import GObject, GLib +import dbus.service +import logging +import os +logging.basicConfig(level=logging.DEBUG) + +from dbus.mainloop.glib import DBusGMainLoop +from usbcreator.misc import ( + USBCreatorProcessException, + find_on_path, + popen, + sane_path, + ) + +USBCREATOR_IFACE = 'com.ubuntu.USBCreator' +PROPS_IFACE = 'org.freedesktop.DBus.Properties' +DEVICE_IFACE = 'org.freedesktop.UDisks.Device' +DISKS_IFACE = 'org.freedesktop.UDisks' + +sane_path() + +def unmount_all(parent): + '''Unmounts the device or any partitions of the device.''' + bus = dbus.SystemBus() + udisks = bus.get_object(DISKS_IFACE, '/org/freedesktop/UDisks') + devices = udisks.EnumerateDevices(dbus_interface=DISKS_IFACE) + for device in devices: + dev = bus.get_object(DISKS_IFACE, device) + props = dbus.Interface(dev, dbus.PROPERTIES_IFACE) + if (props.Get(device, 'partition-slave') == parent + and props.Get(device, 'device-is-mounted')): + + logging.debug('Unmounting %s' % device) + # We explictly avoid catching errors here so that failure to + # unmount a partition causes the format method to fail with the + # error floating up to the frontend. + dev.FilesystemUnmount([], dbus_interface=DEVICE_IFACE) + + dev = bus.get_object(DISKS_IFACE, parent) + iface = dbus.PROPERTIES_IFACE + if dev.Get(parent, 'device-is-mounted', dbus_interface=iface): + logging.debug('Unmounting %s' % parent) + dev.FilesystemUnmount([], dbus_interface=DEVICE_IFACE) + +def check_system_internal(device): + bus = dbus.SystemBus() + udisks = bus.get_object(DISKS_IFACE, + '/org/freedesktop/UDisks') + udisks = dbus.Interface(udisks, DISKS_IFACE) + device = udisks.FindDeviceByDeviceFile(device) + deviceobj = bus.get_object(DISKS_IFACE, device) + if deviceobj.Get(device, 'device-is-system-internal', dbus_interface=PROPS_IFACE): + raise dbus.DBusException('com.ubuntu.USBCreator.Error.SystemInternal') + +def mem_free(): + # Largely copied from partman-base. + free = 0 + with open('/proc/meminfo') as meminfo: + for line in meminfo: + if line.startswith('MemFree:'): + free += int(line.split()[1]) / 1024.0 + if line.startswith('Buffers:'): + free += int(line.split()[1]) / 1024.0 + return free + +class USBCreator(dbus.service.Object): + def __init__(self): + bus_name = dbus.service.BusName(USBCREATOR_IFACE, bus=dbus.SystemBus()) + dbus.service.Object.__init__(self, bus_name, '/com/ubuntu/USBCreator') + self.dbus_info = None + self.polkit = None + + @dbus.service.method(USBCREATOR_IFACE, in_signature='', out_signature='b') + def KVMOk(self): + mem = mem_free() + logging.debug('Asked to run KVM with %f M free' % mem) + if mem >= 768 and find_on_path('kvm-ok') and find_on_path('kvm'): + import subprocess + if subprocess.call(['kvm-ok']) == 0: + return True + return False + + @dbus.service.method(USBCREATOR_IFACE, in_signature='sa{ss}', out_signature='') + def KVMTest(self, device, env): + '''Run KVM with the freshly created device as the first disk.''' + for key in ('DISPLAY', 'XAUTHORITY'): + if key not in env: + logging.debug('Missing %s' % key) + return + bus = dbus.SystemBus() + dev = bus.get_object(DISKS_IFACE, device) + if dev.Get(device, 'device-is-partition', dbus_interface=PROPS_IFACE): + device = dev.Get(device, 'partition-slave', dbus_interface=PROPS_IFACE) + dev = bus.get_object(DISKS_IFACE, device) + # TODO unmount all the partitions. + dev_file = dev.Get(device, 'device-file', dbus_interface=PROPS_IFACE) + if mem_free() >= 768: + envp = [] + for k, v in env.items(): + envp.append('%s=%s' % (str(k), str(v))) + cmd = ('kvm', '-m', '512', '-hda', str(dev_file)) + flags = (GObject.SPAWN_SEARCH_PATH) + # Don't let SIGINT propagate to the child. + GObject.spawn_async(cmd, envp=envp, flags=flags, child_setup=os.setsid) + + @dbus.service.method(USBCREATOR_IFACE, in_signature='ss', out_signature='', + sender_keyword='sender', connection_keyword='conn') + def InstallEFI(self, target, efi_image, sender=None, conn=None): + '''Unpacks bootx64.efi from an image in the proper location that uEFI + firmware expects it''' + self.check_polkit(sender, conn, 'com.ubuntu.usbcreator.bootloader') + mount_point = self.MountISO(efi_image) + if not os.path.isdir(os.path.join(target, 'efi', 'boot')): + os.makedirs(os.path.join(target, 'efi', 'boot')) + #really small file, don't bother with fancy copy methods + with open(os.path.join(mount_point, 'efi', 'boot', 'bootx64.efi'), 'r') as rd: + with open(os.path.join(target, 'efi', 'boot', 'bootx64.efi'), 'w') as wd: + wd.write(rd.read()) + self.UnmountFile(mount_point) + + + # TODO return boolean success + @dbus.service.method(USBCREATOR_IFACE, in_signature='sbsb', out_signature='', + sender_keyword='sender', connection_keyword='conn') + def InstallBootloader(self, device, allow_system_internal, grub_location, + syslinux_legacy, sender=None, conn=None): + '''Install a bootloader to the boot code area, either grub or syslinux. + + The function takes a partition device file of the form /dev/sda1 + and an option grub_location argument for where grub is located + + For GRUB, it's expected that GRUB already exists, all that is + installed is the bootsector code from grub-setup. + + For syslinux: + Installs syslinux to the partition boot code area and writes the + syslinux boot code to the disk code area. The latter is done to + handle cases where a bootloader is accidentally installed to the + MBR, and to handle some buggy BIOSes.''' + + self.check_polkit(sender, conn, 'com.ubuntu.usbcreator.bootloader') + if not allow_system_internal: + check_system_internal(device) + + bus = dbus.SystemBus() + device_file = device + udisks = bus.get_object(DISKS_IFACE, + '/org/freedesktop/UDisks') + udisks = dbus.Interface(udisks, DISKS_IFACE) + device = udisks.FindDeviceByDeviceFile(device) + deviceobj = bus.get_object(DISKS_IFACE, device) + + # Find the parent of the partition. + parent = deviceobj.Get(device, 'partition-slave', + dbus_interface=PROPS_IFACE) + parentobj = bus.get_object(DISKS_IFACE, parent) + parent = parentobj.Get(parent, 'device-file', + dbus_interface=PROPS_IFACE) + + if grub_location: + #Expect that boot.img and core.img both pre-built in grub_location + popen(['dd', 'if=%s' % os.path.join(grub_location, 'boot.img'), 'of=%s' % parent, + 'bs=446', 'count=1', 'conv=sync']) + popen(['dd', 'if=%s' % os.path.join(grub_location, 'core.img'), 'of=%s' % parent, + 'bs=512', 'count=62', 'seek=1', 'conv=sync']) + else: + if syslinux_legacy and find_on_path('syslinux-legacy'): + syslinux = 'syslinux-legacy' + else: + syslinux = 'syslinux' + popen([syslinux, '-f', device_file]) + # Write the syslinux MBR. + popen(['dd', 'if=/usr/lib/%s/mbr.bin' % syslinux, 'of=%s' % parent, + 'bs=446', 'count=1', 'conv=sync']) + + num = deviceobj.Get(device, 'partition-number', + dbus_interface=PROPS_IFACE) + try: + popen(['/sbin/parted', parent, 'set', str(num), 'boot', 'on']) + except USBCreatorProcessException: + # Don't worry about not being able to re-read the partition table. + # TODO: As this will still be a problem for KVM users, this should + # be fixed by unmounting all the partitions before we get to this + # point, then remounting the target partition after. + pass + + @dbus.service.method(USBCREATOR_IFACE, in_signature='sb', out_signature='', + sender_keyword='sender', connection_keyword='conn') + def Format(self, device, allow_system_internal, sender=None, conn=None): + self.check_polkit(sender, conn, 'com.ubuntu.usbcreator.format') + if not allow_system_internal: + check_system_internal(device) + # TODO evand 2009-08-25: Needs a confirmation dialog. + # XXX test with a device that doesn't have a partition table. + bus = dbus.SystemBus() + udisks = bus.get_object(DISKS_IFACE, + '/org/freedesktop/UDisks') + device = udisks.FindDeviceByDeviceFile(device, dbus_interface=DISKS_IFACE) + dev = bus.get_object(DISKS_IFACE, device) + + # TODO LOCK + unmount_all(device) + # Do NOT use the disk if asked to format a partition. + # We still need to obtain the disk device name to zero out the MBR + if dev.Get(device, 'device-is-partition', dbus_interface=PROPS_IFACE): + # Create the partition + dev.PartitionModify('0x0c', '', ['boot'], dbus_interface=DEVICE_IFACE) + dev.FilesystemCreate('vfat', [], dbus_interface=DEVICE_IFACE) + + # Get the master device + device = dev.Get(device, 'partition-slave', dbus_interface=PROPS_IFACE) + dev = bus.get_object(DISKS_IFACE, device) + else: + # Create a new partition table and a FAT partition. + size = dev.Get(device, 'device-size', dbus_interface=PROPS_IFACE) + dev.PartitionTableCreate('mbr', [], dbus_interface=DEVICE_IFACE, + timeout=600) + dev.PartitionCreate(0, size, '0x0c', '', ['boot'], [], 'vfat', [], + dbus_interface=DEVICE_IFACE) + + # Zero out the MBR. Will require fancy privileges. + dev_file = dev.Get(device, 'device-file', dbus_interface=PROPS_IFACE) + popen(['dd', 'if=/dev/zero', 'of=%s' % dev_file, 'bs=446', 'count=1']) + # TODO UNLOCK + + @dbus.service.method(USBCREATOR_IFACE, in_signature='ssb', out_signature='', + sender_keyword='sender', connection_keyword='conn') + def Image(self, source, target, allow_system_internal, + sender=None, conn=None): + self.check_polkit(sender, conn, 'com.ubuntu.usbcreator.image') + if not allow_system_internal: + check_system_internal(target) + cmd = ['dd', 'if=%s' % str(source), 'of=%s' % str(target), 'bs=1M'] + popen(cmd) + + @dbus.service.method(USBCREATOR_IFACE, in_signature='s', out_signature='s', + sender_keyword='sender', connection_keyword='conn') + def MountISO(self, device, sender=None, conn=None): + self.check_polkit(sender, conn, 'com.ubuntu.usbcreator.mount') + import tempfile + ret = tempfile.mkdtemp() + device = device.encode('utf-8') + popen(['mount', '-o', 'loop', device, ret]) + return ret + + @dbus.service.method(USBCREATOR_IFACE, in_signature='s', out_signature='', + sender_keyword='sender', connection_keyword='conn') + def UnmountFile(self, device, sender=None, conn=None): + self.check_polkit(sender, conn, 'com.ubuntu.usbcreator.mount') + popen(['umount', device]) + + @dbus.service.method(USBCREATOR_IFACE, in_signature='s', out_signature='', + sender_keyword='sender', connection_keyword='conn') + def Unmount(self, device, sender=None, conn=None): + self.check_polkit(sender, conn, 'com.ubuntu.usbcreator.mount') + unmount_all(device) + + @dbus.service.method(USBCREATOR_IFACE, in_signature='s', out_signature='', + sender_keyword='sender', connection_keyword='conn') + def RemountRW(self, device, sender=None, conn=None): + # Until udisks supports remounting devices. + self.check_polkit(sender, conn, 'com.ubuntu.usbcreator.mount') + popen(['mount', '-o', 'remount,rw', device]) + + @dbus.service.method(USBCREATOR_IFACE, in_signature='', out_signature='', + sender_keyword='sender', connection_keyword='conn') + def Shutdown(self, sender=None, conn=None): + logging.debug('Shutting down.') + loop.quit() + + # Taken from Jockey 0.5.3. + def check_polkit(self, sender, conn, priv): + if sender is None and conn is None: + return + if self.dbus_info is None: + self.dbus_info = dbus.Interface(conn.get_object( + 'org.freedesktop.DBus', + '/org/freedesktop/DBus/Bus', + False), 'org.freedesktop.DBus') + pid = self.dbus_info.GetConnectionUnixProcessID(sender) + if self.polkit is None: + self.polkit = dbus.Interface(dbus.SystemBus().get_object( + 'org.freedesktop.PolicyKit1', + '/org/freedesktop/PolicyKit1/Authority', + False), 'org.freedesktop.PolicyKit1.Authority') + try: + # we don't need is_challenge return here, since we call with + # AllowUserInteraction + (is_auth, _, details) = self.polkit.CheckAuthorization( + ('system-bus-name', {'name': dbus.String(sender, + variant_level = 1)}), priv, {'': ''}, + dbus.UInt32(1), '', timeout=600) + except dbus.DBusException as e: + if e._dbus_error_name == 'org.freedesktop.DBus.Error.ServiceUnknown': + # polkitd timed out, connect again + self.polkit = None + return self.check_polkit(sender, conn, priv) + else: + raise + + if not is_auth: + logging.debug('_check_polkit_privilege: sender %s on connection %s ' + 'pid %i is not authorized for %s: %s' % + (sender, conn, pid, priv, str(details))) + raise dbus.DBusException('com.ubuntu.USBCreator.Error.NotAuthorized') + +DBusGMainLoop(set_as_default=True) +helper = USBCreator() +loop = GLib.MainLoop() +loop.run() diff --git a/bin/usb-creator-kde b/bin/usb-creator-kde new file mode 100755 index 0000000..d279968 --- /dev/null +++ b/bin/usb-creator-kde @@ -0,0 +1,99 @@ +#!/usr/bin/python3 + +# Copyright (C) 2009 Roderick B. Greening + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os +import sys +import logging + +from dbus import DBusException + +from PyQt4 import uic +from PyKDE4.kdecore import KCmdLineArgs, KCmdLineOptions, ki18n +from PyKDE4.kdeui import KApplication, KIcon + +program = sys.argv[0] +if program.startswith('./') or program.startswith('bin/'): + sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) + os.environ['USBCREATOR_LOCAL'] = '1' + +from usbcreator.frontends.kde.translate import translate +uic.properties.Properties._string = translate +from usbcreator.frontends.kde.kde_about import AboutData +from usbcreator.frontends.kde import KdeFrontend +from usbcreator.backends.udisks import UDisksBackend +from usbcreator.misc import sane_path, setup_gettext, setup_logging, text_type + +if __name__ == "__main__": + """Initialize and launch the application""" + sane_path() + setup_logging() + setup_gettext() + + # Add cmdline options + options = KCmdLineOptions() + options.add("i").add("iso ", ki18n("provide a source image (CD or raw disk) to pre-populate the UI.")) + options.add("n").add("nopersistent", ki18n("disable persistent setting in the UI")) + options.add("allow-system-internal", ki18n("allow writing to system-internal devices")) + + # Initialize KApplication required bits + aboutData = AboutData() + KCmdLineArgs.init(sys.argv, aboutData) + KCmdLineArgs.addCmdLineOptions(options) + app = KApplication() + app.setWindowIcon(KIcon("usb-creator-kde")) + if app.isSessionRestored(): + sys.exit(1) + args = KCmdLineArgs.parsedArgs() + + # Default cmdline arg values + img = None + persistent = False + allow_system_internal = False + + # Test and update passed args + if args.isSet("iso"): + img = args.getOption("iso") + if args.isSet("persistent"): + persistent = True + if args.isSet("allow-system-internal"): + allow_system_internal = True + + try: + backend = UDisksBackend(allow_system_internal=allow_system_internal) + frontend = KdeFrontend(backend, img, persistent, + allow_system_internal=allow_system_internal) + except DBusException as e: + # FIXME evand 2009-07-09: Wouldn't service activation pick this up + # automatically? + # FIXME evand 2009-07-28: Does this really belong this far out? + logging.exception('DBus exception:') + if e._dbus_error_name == 'org.freedesktop.DBus.Error.ServiceUnknown': + message = _('This program needs udisks running in order to' + 'properly function.') + else: + message = _('An error occurred while talking to the udisks ' + 'service.') + KdeFrontend.startup_failure(message) + sys.exit(1) + except (KeyboardInterrupt, Exception) as e: + # TODO evand 2009-05-03: What should we do here to make sure devices are + # unmounted, etc? + logging.exception('Unhandled exception:') + message = _('An unhandled exception occurred:\n%s' % text_type(e)) + KdeFrontend.startup_failure(message) + + # Properly exit KApplication + sys.exit(app.exec_()) diff --git a/dbus/com.ubuntu.USBCreator.conf b/dbus/com.ubuntu.USBCreator.conf new file mode 100644 index 0000000..f148570 --- /dev/null +++ b/dbus/com.ubuntu.USBCreator.conf @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + diff --git a/dbus/com.ubuntu.USBCreator.service b/dbus/com.ubuntu.USBCreator.service new file mode 100644 index 0000000..e1caf83 --- /dev/null +++ b/dbus/com.ubuntu.USBCreator.service @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=com.ubuntu.USBCreator +Exec=/usr/share/usb-creator/usb-creator-helper +User=root diff --git a/dbus/com.ubuntu.usbcreator.policy.in b/dbus/com.ubuntu.usbcreator.policy.in new file mode 100644 index 0000000..6607781 --- /dev/null +++ b/dbus/com.ubuntu.usbcreator.policy.in @@ -0,0 +1,48 @@ + + + + + Startup Disk Creator + https://launchpad.net/usb-creator + usb-creator-gtk + + + <_description>Install the bootloader + <_message>System policy prevents installing the bootloader + + no + no + auth_admin_keep + + + + <_description>Format the device + <_message>System policy prevents formatting this device + + no + no + auth_admin_keep + + + + <_description>Image the device + <_message>System policy prevents writing a disk image to this device + + no + no + auth_admin_keep + + + + <_description>Mount a device + <_message>System policy prevents mounting + + no + no + auth_admin_keep + + + + diff --git a/debian/Debian/usb-creator-gtk-16x16.xpm b/debian/Debian/usb-creator-gtk-16x16.xpm new file mode 100644 index 0000000..32da93b --- /dev/null +++ b/debian/Debian/usb-creator-gtk-16x16.xpm @@ -0,0 +1,115 @@ +/* XPM */ +static char * usb_creator_gtk_16x16_xpm[] = { +"16 16 96 2", +" c None", +". c #D50650", +"+ c #D60650", +"@ c #D6064F", +"# c #D50049", +"$ c #D50550", +"% c #F4C0D3", +"& c #C2D766", +"* c #BAD25E", +"= c #D23269", +"- c #A6C15E", +"; c #BBD159", +"> c #ADC754", +", c #E6457E", +"' c #A3BE49", +") c #A5C048", +"! c #D60750", +"~ c #D9DDDD", +"{ c #DEE2E1", +"] c #DDE2E1", +"^ c #DBDBDB", +"/ c #DCDCDD", +"( c #DCDBDF", +"_ c #ABBF82", +": c #A2B973", +"< c #D4D1D7", +"[ c #C2C2C2", +"} c #C96D8D", +"| c #EDF2F1", +"1 c #EDEDEE", +"2 c #EEEEEF", +"3 c #BABABB", +"4 c #BEBEBF", +"5 c #EAE9ED", +"6 c #EFEEF1", +"7 c #E7E7E9", +"8 c #D7D7D8", +"9 c #D6A4B6", +"0 c #E9CFD9", +"a c #DFE0E0", +"b c #D2D2D2", +"c c #EDEDED", +"d c #D8D8D9", +"e c #A8A8A7", +"f c #C4C4C5", +"g c #E5E5E6", +"h c #D6D6D7", +"i c #EAEBEB", +"j c #D4D4D5", +"k c #A1A1A2", +"l c #F0F0F1", +"m c #C3C3C3", +"n c #C6C6C7", +"o c #C5C5C6", +"p c #E1E1E2", +"q c #C9C9CA", +"r c #D6D6D6", +"s c #E7E7E8", +"t c #E8E8E9", +"u c #E4E4E5", +"v c #B9B9BA", +"w c #B7B7B8", +"x c #D8D8D8", +"y c #E2E2E3", +"z c #C9C9C9", +"A c #E6E6E7", +"B c #E3E3E4", +"C c #E0E0E1", +"D c #D6D6D8", +"E c #B7B7B7", +"F c #B6B6B7", +"G c #DFDFE0", +"H c #DEDEDF", +"I c #DDDDDE", +"J c #DBDBDC", +"K c #DADADB", +"L c #C6C6C6", +"M c #B2B2B3", +"N c #CECECF", +"O c #D1D1D2", +"P c #D9D9D9", +"Q c #D3D3D4", +"R c #CFCFCF", +"S c #B1B1B2", +"T c #757576", +"U c #5E5E5D", +"V c #5F5F5F", +"W c #626262", +"X c #646464", +"Y c #666666", +"Z c #676767", +"` c #656564", +" . c #636362", +".. c #60605F", +"+. c #606060", +"@. c #777778", +" . + ", +" @ # ", +" $ % & * ", +" = - ; > ", +" , ' ) ", +" ! ~ { ] ^ / ( _ : < [ ", +" } | 1 2 1 3 4 5 6 7 8 ", +" 9 0 a b c d d 2 e f g ", +" h i j k l h m n o g p q ", +" r s t u v w x s u y p z ", +" u g A A u [ f B B y C D ", +" g B u g g E F B y p G p ", +" z H H G G C G G H I / J K L ", +" M N O j h x P P x r Q O R S ", +" T U V W X Y Z Z Y ` ...+.@. ", +" "}; diff --git a/debian/Debian/usb-creator-gtk-32x32.xpm b/debian/Debian/usb-creator-gtk-32x32.xpm new file mode 100644 index 0000000..a5d44f5 --- /dev/null +++ b/debian/Debian/usb-creator-gtk-32x32.xpm @@ -0,0 +1,254 @@ +/* XPM */ +static char * usb_creator_gtk_xpm[] = { +"32 32 219 2", +" c None", +". c #D60650", +"+ c #D60750", +"@ c #D60651", +"# c #D70650", +"$ c #D60751", +"% c #D70750", +"& c #D70751", +"* c #D6044F", +"= c #E03F78", +"- c #9BBB56", +"; c #AAC562", +"> c #A2BF5A", +", c #94B64F", +"' c #FDF4F7", +") c #F2B3CA", +"! c #D70852", +"~ c #CADD69", +"{ c #DCEA71", +"] c #DAE96B", +"^ c #D5E664", +"/ c #D1E467", +"( c #B0CA61", +"_ c #D70651", +": c #D6044E", +"< c #FEFEFE", +"[ c #D9145A", +"} c #A5C05F", +"| c #BBD26C", +"1 c #8AAC51", +"2 c #92B354", +"3 c #C3D866", +"4 c #C9DC5A", +"5 c #C2D75F", +"6 c #D60551", +"7 c #FFFFFF", +"8 c #E44D83", +"9 c #99B755", +"0 c #BBD155", +"a c #BED355", +"b c #8BAD46", +"c c #D50650", +"d c #FFFEFF", +"e c #DE3571", +"f c #759E3A", +"g c #8BAD49", +"h c #B2C94D", +"i c #B6CC4D", +"j c #89AB45", +"k c #7AA23C", +"l c #D80046", +"m c #DE1F63", +"n c #DF2E6D", +"o c #9FBB50", +"p c #AAC342", +"q c #A9C241", +"r c #A7C24F", +"s c #CDCECE", +"t c #D2CCCE", +"u c #D2C1C8", +"v c #D0D6D4", +"w c #D0D7D5", +"x c #CFCFCF", +"y c #CECECE", +"z c #CCCCCC", +"A c #CBCBCB", +"B c #CACACB", +"C c #C9C9C9", +"D c #CBC9CE", +"E c #A2B683", +"F c #9DB943", +"G c #9EB940", +"H c #96AF6E", +"I c #C5C2C9", +"J c #BEBEBE", +"K c #BCBCBD", +"L c #B3B3B3", +"M c #DFDFE0", +"N c #ECEDEE", +"O c #EDEEEF", +"P c #EDEDEE", +"Q c #ECECED", +"R c #EBEBEC", +"S c #EEEEEF", +"T c #E8E8E9", +"U c #E6E6E7", +"V c #98B46C", +"W c #8CAB5A", +"X c #E2E2E2", +"Y c #E3E3E4", +"Z c #E2E2E3", +"` c #B7B7B7", +" . c #C6C9C8", +".. c #E9E9EA", +"+. c #E1E1E2", +"@. c #C0C0C0", +"#. c #C8C8C9", +"$. c #E7E7E8", +"%. c #E8E7EA", +"&. c #E2E3E2", +"*. c #E4E4E5", +"=. c #C3C3C4", +"-. c #D6024D", +";. c #CAA2B0", +">. c #EDF2F1", +",. c #EFEFF0", +"'. c #B6B6B7", +"). c #AFAFAF", +"!. c #B1B1B1", +"~. c #B5B5B6", +"{. c #E5E5E6", +"]. c #EDEDED", +"^. c #D7D7D8", +"/. c #AAAAAA", +"(. c #D75C87", +"_. c #E6A9BE", +":. c #EBE3E7", +"<. c #EFEFEF", +"[. c #F0F0F1", +"}. c #BDBDBE", +"|. c #C1C1C1", +"1. c #A8A8A8", +"2. c #A7A7A7", +"3. c #9D9D9D", +"4. c #D6D6D7", +"5. c #A9A9A9", +"6. c #DEE2E1", +"7. c #E9D9DF", +"8. c #EAE2E6", +"9. c #BABABB", +"0. c #B5B5B5", +"a. c #B8B8B8", +"b. c #EAEAEA", +"c. c #D3D3D3", +"d. c #9E9E9E", +"e. c #CCCCCD", +"f. c #E0E0E1", +"g. c #EAEAEB", +"h. c #989898", +"i. c #A2A2A3", +"j. c #EEEEF0", +"k. c #BDBDBD", +"l. c #BFBFBF", +"m. c #E2E2E1", +"n. c #D2D2D3", +"o. c #A0A0A0", +"p. c #CFCFD0", +"q. c #C5C5C5", +"r. c #BBBBBB", +"s. c #D9D9D9", +"t. c #BCBCBC", +"u. c #B4B4B4", +"v. c #C1C1C2", +"w. c #D1D1D2", +"x. c #DDDDDE", +"y. c #C4C4C4", +"z. c #8D8D8D", +"A. c #A4A4A4", +"B. c #DCDCDD", +"C. c #B8B8B9", +"D. c #DADADB", +"E. c #C4C4C5", +"F. c #AFAFAE", +"G. c #B6B6B6", +"H. c #AEAEAE", +"I. c #D9D9DA", +"J. c #929292", +"K. c #919191", +"L. c #8F8F8F", +"M. c #D8D8D9", +"N. c #DEDEDF", +"O. c #ABABAB", +"P. c #CDCDCE", +"Q. c #D3D3D4", +"R. c #DBDBDC", +"S. c #CBCBCC", +"T. c #B2B2B2", +"U. c #E0E0E0", +"V. c #D4D4D4", +"W. c #B4B4B5", +"X. c #878789", +"Y. c #ACACAC", +"Z. c #ADADAD", +"`. c #B9B9B9", +" + c #BABABA", +".+ c #B7B7B8", +"++ c #B1B1B0", +"@+ c #888889", +"#+ c #5E5E60", +"$+ c #7F7F7F", +"%+ c #3B3B3B", +"&+ c #353535", +"*+ c #363636", +"=+ c #373737", +"-+ c #383838", +";+ c #343434", +">+ c #414141", +",+ c #808080", +"'+ c #5E5E5F", +")+ c #8C8C8C", +"!+ c #919190", +"~+ c #939393", +"{+ c #969696", +"]+ c #9A9A9A", +"^+ c #9B9B9B", +"/+ c #9C9C9C", +"(+ c #9F9F9E", +"_+ c #9F9F9F", +":+ c #9B9B9A", +"<+ c #999998", +"[+ c #979797", +"}+ c #949494", +"|+ c #8E8E8E", +"1+ c #545456", +"2+ c #505053", +"3+ c #4F4F52", +"4+ c #4E4E52", +"5+ c #4E4E51", +"6+ c #4F4F53", +" ", +" . + @ # $ # ", +" . % % & ", +" & * & ", +" . = * - ; > , ", +" @ ' ) ! ~ { ] ^ / ( ", +" _ : < [ } | 1 2 3 4 5 ", +" 6 7 8 9 0 a b ", +" c d e f g h i j k ", +" # l m n o p q r ", +" $ s t u v w x y z A B C D E F G H I J K L ", +" & M N O P P P Q R R S Q T U V W X Y Z X ` ", +" + ...Q P S S P Q Q +.@.#.Z $.%.&.*.Y Z +.=. ", +" -.;.>.Q P S ,.S P ..'.).!.~.T {.].Q Q Y Z ^./. ", +" (._.:.P ,.<.[.P P [.}.|.P $.R 1.2.3.4.+.*.5. ", +" 6.7.8.Y 9.0.a.b.Q P J @...$.R c.d.e.f.+.Z @. ", +" Z g.g.+.h.2.i.j.Q Q k.l.m.n.'.o.K U Y +.+.p. ", +" q.{.....g.,.r.1.s.b.g.t.u.v.w.p.x.U Y Y +.+.^. ", +" y.T T T ....Q |.z.o.A.5.|.R $.U {.*.Y Y +.+.B.u. ", +" A $.$.T T ....g.R ....C.@.T U U *.*.Y Z +.+.f.` ", +" u.D.{.U U $.$.$.$.T ....a.l.T U {.*.Y Z Z +.f.f.E. ", +" F.U *.{.{.U U $.$.$.4.G.H.).` I.{.Y Y Z Z f.f.M 4.1. ", +" k.{.Y *.*.{.{.{.{.U I.z.J.K.L.M.*.Y Z +.+.f.M N.+.O. ", +" P.Y Z Y Y *.*.{.{.{.{.$.$.U U *.Y Z Z +.+.M M N.M l. ", +" Q.x.N.N.M M M f.f.f.f.f.f.f.M M M N.x.x.B.B.R.D.D.S. ", +" T.^.N.M M U.f.f.f.+.+.+.+.+.f.f.f.M M M N.x.x.B.B.R.V. ", +" ` M +.Z Z Y Z Y Y Y Y Y Y Y Y Y Z Z Z +.+.+.f.f.M M B.W. ", +" X.5.Y.Z.).L G.` `. +t.k.J l.l.J J t.r.`..+0.u.T.++).O.@+ ", +" #+$+%+&+*+&+*+*+*+*+=+=+-+=+=+=+=+=+*+*+*+*+&+&+;+>+,+'+ ", +" )+!+L.!+~+{+h.]+^+/+(+_+o.o._+d.3./+:+<+[+}+J.!+~+|+ ", +" 1+2+2+2+3+3+3+3+3+4+5+5+5+5+5+5+5+4+3+3+3+3+6+2+2+1+ ", +" "}; diff --git a/debian/Debian/usb-creator-gtk.svg b/debian/Debian/usb-creator-gtk.svg new file mode 100644 index 0000000..eb46458 --- /dev/null +++ b/debian/Debian/usb-creator-gtk.svg @@ -0,0 +1,440 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/debian/Debian/usb-creator-kde-16x16.xpm b/debian/Debian/usb-creator-kde-16x16.xpm new file mode 100644 index 0000000..c2fc463 --- /dev/null +++ b/debian/Debian/usb-creator-kde-16x16.xpm @@ -0,0 +1,155 @@ +/* XPM */ +static char * usb_creator_kde_16x16_xpm[] = { +"16 16 136 2", +" c None", +". c #0D9C0D", +"+ c #2AAA2A", +"@ c #008C00", +"# c #D7D7DA", +"$ c #C3C6CC", +"% c #008B00", +"& c #5BC95B", +"* c #B0E8B0", +"= c #B9EAB9", +"- c #9BE59B", +"; c #1BA81B", +"> c #E6E6E6", +", c #EFEFF1", +"' c #8E8A80", +") c #CBCED4", +"! c #25BF25", +"~ c #63DA63", +"{ c #81CF81", +"] c #E8F7E8", +"^ c #5BD75B", +"/ c #5FD95F", +"( c #009700", +"_ c #CFD1D2", +": c #989488", +"< c #EBEBED", +"[ c #DADBDF", +"} c #D8D9DC", +"| c #E0DEE6", +"1 c #40A942", +"2 c #149F14", +"3 c #49AB49", +"4 c #6EB26E", +"5 c #E1EFE1", +"6 c #43A743", +"7 c #3CA83C", +"8 c #00B300", +"9 c #DBDCDE", +"0 c #EBECEC", +"a c #DFE0E0", +"b c #E2E2E8", +"c c #EEE9F3", +"d c #2FB030", +"e c #329F32", +"f c #EAF7EA", +"g c #E8F3E8", +"h c #FAFCFA", +"i c #E2F2E2", +"j c #BBE2BB", +"k c #00BA00", +"l c #E4E4E9", +"m c #BEBEC2", +"n c #B1AFB4", +"o c #60C762", +"p c #00B700", +"q c #00B400", +"r c #2BA42B", +"s c #D4EED4", +"t c #00B100", +"u c #DEE0E0", +"v c #DDDEE3", +"w c #E5E5EA", +"x c #E2E2E6", +"y c #AFAFB2", +"z c #D0E2D3", +"A c #00B200", +"B c #00A600", +"C c #2DAA2D", +"D c #BBE4BB", +"E c #00A300", +"F c #00A800", +"G c #D6DAE3", +"H c #EAE9EC", +"I c #E3E3E7", +"J c #CCCCCF", +"K c #A7A7AA", +"L c #AAD7AD", +"M c #06BD06", +"N c #00A100", +"O c #00B600", +"P c #00C600", +"Q c #506F9A", +"R c #B1C7EB", +"S c #DCE0EA", +"T c #EDEDF1", +"U c #D6D6D9", +"V c #F3EDF8", +"W c #ABDFAD", +"X c #388772", +"Y c #2C508F", +"Z c #57759B", +"` c #A2BEED", +" . c #BFCBE2", +".. c #EDECEF", +"+. c #ECECF0", +"@. c #EBEBEF", +"#. c #E8C9D8", +"$. c #DB9DB5", +"%. c #9FAAC5", +"&. c #707CA1", +"*. c #59779C", +"=. c #A7C3F0", +"-. c #B0C1E0", +";. c #EBEAEC", +">. c #EAE1E8", +",. c #E08EAD", +"'. c #E2D7E0", +"). c #D9B1C3", +"!. c #CDCED4", +"~. c #A7A9AE", +"{. c #5B799D", +"]. c #ABC8F3", +"^. c #B1C1DB", +"/. c #E4B5C8", +"(. c #E1B9CB", +"_. c #DBB9CA", +":. c #D2B4C4", +"<. c #C2C4CA", +"[. c #A9AAB1", +"}. c #5C7B9D", +"|. c #AECBF6", +"1. c #D0D8DC", +"2. c #D98BAA", +"3. c #D4B9C8", +"4. c #CAA5B8", +"5. c #B6A2B1", +"6. c #A1A3A9", +"7. c #486789", +"8. c #B1BAC7", +"9. c #CED4D8", +"0. c #C5B5C1", +"a. c #B5ADB8", +"b. c #A4A8AF", +"c. c #B2B4B9", +"d. c #B3B4BD", +"e. c #A2A4AB", +" . + @ ", +" # $ % & * = - ; ", +" > , ' ) ! ~ { ] ^ / ( ", +" _ : < [ } | 1 2 3 4 5 6 7 8 ", +" 9 0 a b c d e f g h i j k ", +" a l m n o p q r s t q t ", +" u v w x y z A B C D E F k ", +" G H I J K L M B N O P ", +" Q R S T U x V W X Y ", +" Z ` ...+.@.#.$.%.&. ", +" *.=.-.;.>.,.'.).!.~. ", +" {.].^./.(._.:.<.[. ", +" }.|.1.2.3.4.5.6. ", +" 7.8.9.0.a.b. ", +" c.d.e. ", +" "}; diff --git a/debian/Debian/usb-creator-kde-32x32.xpm b/debian/Debian/usb-creator-kde-32x32.xpm new file mode 100644 index 0000000..27ede55 --- /dev/null +++ b/debian/Debian/usb-creator-kde-32x32.xpm @@ -0,0 +1,466 @@ +/* XPM */ +static char * usb_creator_kde_32x32_xpm[] = { +"32 32 431 2", +" c None", +". c #B5B7BA", +"+ c #CFD1D3", +"@ c #008C00", +"# c #019701", +"$ c #38B238", +"% c #4DBC4D", +"& c #3BB33B", +"* c #059905", +"= c #C3C4C5", +"- c #D3D5DA", +"; c #C7C9D0", +"> c #008600", +", c #009800", +"' c #62CC62", +") c #B7ECB7", +"! c #B4EAB4", +"~ c #B2E9B2", +"{ c #B4EBB4", +"] c #B9EDB9", +"^ c #6BD06B", +"/ c #009B00", +"( c #008700", +"_ c #CCCCCC", +": c #E3E4E6", +"< c #DBDCE0", +"[ c #D7D8DD", +"} c #92979E", +"| c #D3D4D6", +"1 c #008200", +"2 c #00A000", +"3 c #77DA77", +"4 c #91E391", +"5 c #90DE90", +"6 c #A7DEA7", +"7 c #C2E9C2", +"8 c #ABE3AB", +"9 c #90E390", +"0 c #80DD80", +"a c #00A500", +"b c #008300", +"c c #CFCFCE", +"d c #ECECED", +"e c #E7E8E9", +"f c #E4E5E7", +"g c #6E7579", +"h c #685022", +"i c #B9BCC2", +"j c #CFD0D3", +"k c #009900", +"l c #41CD41", +"m c #71DB71", +"n c #70DB70", +"o c #70D170", +"p c #B3DEB3", +"q c #FFFFFF", +"r c #BFE9BF", +"s c #70DA70", +"t c #71DA71", +"u c #4BD14B", +"v c #009C00", +"w c #007E00", +"x c #C9C9C9", +"y c #EAEAEA", +"z c #ECECEC", +"A c #EDEDEE", +"B c #E7E7E9", +"C c #DADCDE", +"D c #B4B5B9", +"E c #D3D4D9", +"F c #CFD0D2", +"G c #DEE0E0", +"H c #E1E2E3", +"I c #008100", +"J c #00BA00", +"K c #55D555", +"L c #52D452", +"M c #52C452", +"N c #A2D0A2", +"O c #B0E3B0", +"P c #51D451", +"Q c #56D556", +"R c #05BD05", +"S c #008400", +"T c #BEBEBE", +"U c #E4E4E4", +"V c #EEEEED", +"W c #808587", +"X c #E6E5E6", +"Y c #E2E3E5", +"Z c #D2D4D9", +"` c #C6C8CF", +" . c #E0E2E1", +".. c #D9D9DE", +"+. c #D9DADF", +"@. c #A2C5A8", +"#. c #009200", +"$. c #04BC04", +"%. c #2EB62E", +"&. c #32B832", +"*. c #32A732", +"=. c #92C192", +"-. c #A2D5A2", +";. c #31B831", +">. c #2FC12F", +",. c #07C107", +"'. c #009A00", +"). c #BBBBBB", +"!. c #999EA2", +"~. c #624A1E", +"{. c #C7C8C8", +"]. c #EBEBEB", +"^. c #E1E2E4", +"/. c #DADBDE", +"(. c #DBDDDC", +"_. c #DCDCE1", +":. c #DCDEE3", +"<. c #DEDFE4", +"[. c #75B079", +"}. c #00A700", +"|. c #2F782F", +"1. c #6BA66B", +"2. c #70A870", +"3. c #71A871", +"4. c #B3D5B3", +"5. c #BED8BE", +"6. c #6CA46C", +"7. c #389838", +"8. c #00C000", +"9. c #00AD00", +"0. c #007600", +"a. c #C0C0C0", +"b. c #CDCFD0", +"c. c #E9E9E9", +"d. c #EBEAEB", +"e. c #E6E6E7", +"f. c #DCDDDC", +"g. c #DEDEE4", +"h. c #E0E0E5", +"i. c #E2E2E7", +"j. c #E5E4EA", +"k. c #69AC6B", +"l. c #00B100", +"m. c #009500", +"n. c #81AA81", +"o. c #FEFEFE", +"p. c #96CF96", +"q. c #00BF00", +"r. c #00B600", +"s. c #007F00", +"t. c #BABABA", +"u. c #DDDFDD", +"v. c #DFE0E5", +"w. c #E4E4E9", +"x. c #E5E5EA", +"y. c #E6E6EB", +"z. c #75BA77", +"A. c #00A900", +"B. c #52A652", +"C. c #A5D8A5", +"D. c #A5D3A5", +"E. c #CFE3CF", +"F. c #D6EAD6", +"G. c #A5D7A5", +"H. c #60C560", +"I. c #E2E2E1", +"J. c #DDDEDD", +"K. c #DFDFE5", +"L. c #CDCDD1", +"M. c #DEDEE2", +"N. c #D6D6DA", +"O. c #A1D2A4", +"P. c #00AA00", +"Q. c #00B900", +"R. c #00B800", +"S. c #009F00", +"T. c #74B474", +"U. c #8AD18A", +"V. c #00AE00", +"W. c #DADBDA", +"X. c #E1E1E6", +"Y. c #E5E5E9", +"Z. c #CBCBCF", +"`. c #909093", +" + c #99999C", +".+ c #858587", +"++ c #F0EFF4", +"@+ c #00AC00", +"#+ c #00B200", +"$+ c #00A100", +"%+ c #77BC77", +"&+ c #8CD28C", +"*+ c #DEE0DE", +"=+ c #DBDCE1", +"-+ c #DFDFE4", +";+ c #E9E9ED", +">+ c #EAEAEE", +",+ c #9B9B9E", +"'+ c #CFCFD2", +")+ c #DEDCE1", +"!+ c #66CE68", +"~+ c #00B300", +"{+ c #77C077", +"]+ c #D4D7D0", +"^+ c #E7E7EC", +"/+ c #BEBEC1", +"(+ c #CDCDD0", +"_+ c #818182", +":+ c #DDDDE0", +"<+ c #EEECF2", +"[+ c #12C612", +"}+ c #00B000", +"|+ c #00A400", +"1+ c #00A300", +"2+ c #51B751", +"3+ c #AFDFAF", +"4+ c #60C260", +"5+ c #00A200", +"6+ c #00C200", +"7+ c #C5C6C2", +"8+ c #E2E2E6", +"9+ c #E6E6EA", +"0+ c #E8E8EC", +"a+ c #EBEBEF", +"b+ c #C6C6C9", +"c+ c #9D9DA0", +"d+ c #B4B4B8", +"e+ c #7D7D7F", +"f+ c #F7F8FC", +"g+ c #DDEBE1", +"h+ c #0ECC0E", +"i+ c #009E00", +"j+ c #00B400", +"k+ c #00C900", +"l+ c #A6B6CC", +"m+ c #DEE2E8", +"n+ c #E9E8EA", +"o+ c #F0F0F4", +"p+ c #F2F2F6", +"q+ c #F3F3F7", +"r+ c #4B4B4C", +"s+ c #A8A9AB", +"t+ c #ECECF0", +"u+ c #55DA56", +"v+ c #00C600", +"w+ c #00B700", +"x+ c #00CF00", +"y+ c #476790", +"z+ c #90ACDB", +"A+ c #B0C6EA", +"B+ c #D7DEEA", +"C+ c #EBEAEC", +"D+ c #EDEDF1", +"E+ c #F1F1F5", +"F+ c #878789", +"G+ c #BDBDC0", +"H+ c #F0EDF4", +"I+ c #DEE9E2", +"J+ c #85DE87", +"K+ c #3AC23E", +"L+ c #0FA92D", +"M+ c #14A336", +"N+ c #1F8659", +"O+ c #1C3E81", +"P+ c #4D6C95", +"Q+ c #95B0DC", +"R+ c #9FBBEB", +"S+ c #B0C3E6", +"T+ c #DEE0E5", +"U+ c #EBEAEF", +"V+ c #EFEFF3", +"W+ c #E6E3EA", +"X+ c #9093B8", +"Y+ c #4553AF", +"Z+ c #4051A8", +"`+ c #3545A2", +" @ c #19317E", +".@ c #4E6D95", +"+@ c #97B2DD", +"@@ c #A4BFED", +"#@ c #9CB7E7", +"$@ c #C7D0DE", +"%@ c #E8E8EB", +"&@ c #EAEDF0", +"*@ c #E5EBEE", +"=@ c #B5B8C1", +"-@ c #707AA9", +";@ c #5361A2", +">@ c #34429E", +",@ c #042860", +"'@ c #4E6E96", +")@ c #98B4DE", +"!@ c #A6C1EE", +"~@ c #9CB8E9", +"{@ c #B3C2DD", +"]@ c #E2E2E4", +"^@ c #EBE8ED", +"/@ c #DD5789", +"(@ c #DA316E", +"_@ c #E19BB7", +":@ c #DEE4E8", +"<@ c #D5D6D9", +"[@ c #C9C9CA", +"}@ c #999FA4", +"|@ c #506F96", +"1@ c #99B6DF", +"2@ c #A8C3EF", +"3@ c #A0BBEA", +"4@ c #A8BBDE", +"5@ c #DDDDDF", +"6@ c #EBEBF0", +"7@ c #ECF4F5", +"8@ c #DC437A", +"9@ c #E3B1C6", +"0@ c #E6F0F1", +"a@ c #DFB0C5", +"b@ c #DA80A3", +"c@ c #D8DBDF", +"d@ c #D0D1D7", +"e@ c #C9CAD1", +"f@ c #A3A6A8", +"g@ c #517096", +"h@ c #9BB7E0", +"i@ c #AAC6F0", +"j@ c #A2BDEB", +"k@ c #A5BADE", +"l@ c #D9D9DC", +"m@ c #E4A8C0", +"n@ c #DF81A5", +"o@ c #E5E0E7", +"p@ c #E2CCD8", +"q@ c #DFDAE1", +"r@ c #D99AB4", +"s@ c #D5DBDE", +"t@ c #CCCDD3", +"u@ c #C4C5CC", +"v@ c #BCBDC6", +"w@ c #939594", +"x@ c #517196", +"y@ c #9DB9E1", +"z@ c #ABC7F2", +"A@ c #A4BFEC", +"B@ c #A6BADC", +"C@ c #DADADD", +"D@ c #DE719A", +"E@ c #E2ADC3", +"F@ c #E2C6D4", +"G@ c #DFD3DD", +"H@ c #D796B1", +"I@ c #D1D6DA", +"J@ c #C9CAD0", +"K@ c #BFC0C8", +"L@ c #B2B3BB", +"M@ c #A3A5A8", +"N@ c #527297", +"O@ c #9FBBE2", +"P@ c #ADC9F3", +"Q@ c #A6C2EE", +"R@ c #ABBAD1", +"S@ c #E09CB7", +"T@ c #DD81A5", +"U@ c #E0E3E7", +"V@ c #DAAABF", +"W@ c #D795B0", +"X@ c #D3A1B7", +"Y@ c #CBCED3", +"Z@ c #C3C4CB", +"`@ c #B9BBC2", +" # c #ACADB6", +".# c #A1A3A8", +"+# c #537397", +"@# c #A0BDE3", +"## c #AFCCF4", +"$# c #A7C3F1", +"%# c #C6C7CB", +"&# c #E2E9EC", +"*# c #D9437A", +"=# c #DBE1E4", +"-# c #D8D9DE", +";# c #D3D7DC", +"># c #CDCED4", +",# c #C5C7CE", +"'# c #BFB3BF", +")# c #B3AAB5", +"!# c #A5A6AF", +"~# c #9FA2A5", +"{# c #527295", +"]# c #9DBADF", +"^# c #B3D0F8", +"/# c #B6C0CD", +"(# c #DDDEE3", +"_# c #D9D1D9", +":# c #D65B89", +"<# c #D583A3", +"[# c #CF9EB5", +"}# c #CC8EA8", +"|# c #CA6D92", +"1# c #BD87A0", +"2# c #A9ADB5", +"3# c #A9ABB4", +"4# c #416284", +"5# c #8BA8CD", +"6# c #ADBCCE", +"7# c #D8D8DE", +"8# c #D0D5D9", +"9# c #CBC4CD", +"0# c #C992AB", +"a# c #C297AD", +"b# c #B4BCC2", +"c# c #ABACB5", +"d# c #A8AAB4", +"e# c #1E3D5B", +"f# c #697F96", +"g# c #C8C9CF", +"h# c #C3C4CA", +"i# c #BCBDC4", +"j# c #B4B5BD", +"k# c #ABACB4", +"l# c #A8ABB4", +"m# c #949697", +"n# c #C5C6CD", +"o# c #BDBEC5", +"p# c #B8B9C0", +"q# c #B1B2BA", +"r# c #A8A9B2", +"s# c #868886", +"t# c #AFB0B5", +"u# c #B4B6BE", +"v# c #AFB0B9", +"w# c #A4A6AC", +"x# c #8C8F8D", +" ", +" . + @ # $ % & * @ ", +" = - ; + > , ' ) ! ~ { ] ^ / ( ", +" _ : < [ } | 1 2 3 4 5 6 7 8 9 9 0 a b ", +" c d e f g h i j k l m n o p q r n s t u v w ", +" x y z A B C D E ; F G H I J K L L M N q O P L L Q R S ", +" T U V W X e Y < Z ` ...+.@.#.$.%.&.&.*.=.q -.;.&.&.>.,.'. ", +" ).!.~.{.].e ^./.(._.:.<.[.}.k |.1.2.3.4.q 5.2.2.6.7.8.9.0. ", +" a.b.c.z d.e.f.g.h.i.j.k.l.m.n.q q q q o.q q q q p.q.r.s. ", +" t.U c.y u.v.i.w.x.y.z.l.A.B.C.C.D.E.q F.G.C.G.H.q.r.@ ", +" t.I.J.K.i.L.M.N.M.O.P.Q.Q.R.R.S.T.q U.R.R.R.R.Q.V. ", +" W.g.X.Y.Z.`. +.+++@+#+#+#+#+$+%+q &+#+#+#+#+#+V. ", +" *+=+-+w.y.;+>+,+'+)+!+~+P.P.P.S.{+q &+P.P.P.P.#+R. ", +" ]+<.=+i.Y.^+>+/+(+_+:+<+[+}+|+1+S.2+3+4+5+5+|+V.6+ ", +" 7+8+i.9+0+a+b+c+d+e+f+g+h+r.|+i+/ './ i+1+j+k+ ", +" l+m+n+;+a+a+o+p+q+r+s+t+u+v+R.9.P.@+w+x+x+ ", +" y+z+A+B+C+t+a+D+E+F+G+D+H+I+J+K+L+M+N+O+ ", +" P+Q+R+S+T+U+t+t+V+D+t+t+t+t+W+X+Y+Z+`+ @ ", +" .@+@@@#@$@%@D+t+D+t+a+t+t+&@*@=@-@;@>@,@ ", +" '@)@!@~@{@]@D+t+a+t+a+^@/@(@_@:@<@[@}@ ", +" |@1@2@3@4@5@t+6@t+7@8@9@0@a@b@c@d@e@f@ ", +" g@h@i@j@k@l@t+a+m@n@o@p@q@r@s@t@u@v@w@ ", +" x@y@z@A@B@C@;+D@E@F@G@_.H@I@J@K@L@M@ ", +" N@O@P@Q@R@i.S@T@U@V@W@X@Y@Z@`@ #.# ", +" +#@###$#%#&#*#=#-#;#>#,#'#)#!#~# ", +" {#]#^#/#(#_#:#<#[#}#|#1#2#3# ", +" 4#5#6#7#E 8#9#0#a#b#c#d#w@ ", +" e#f#d@t@g#h#i#j#k#l#w@ ", +" m#n#o#p#q#r#3#w@ ", +" s#t#u#v#w#x# ", +" ", +" "}; diff --git a/debian/Debian/usb-creator-kde.svg b/debian/Debian/usb-creator-kde.svg new file mode 100644 index 0000000..bef01bf --- /dev/null +++ b/debian/Debian/usb-creator-kde.svg @@ -0,0 +1,1608 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adobe PDF library 6.66 + + + + + + + + Illustrator + 2006-05-28T18:16:25+02:00 + 2006-05-29T02:42:33Z + 2006-05-28T18:16:25+02:00 + 1 + + + + JPEG + 120 + 256 + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA +AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK +DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f +Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAB4AwER +AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA +AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB +UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE +1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ +qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy +obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp +0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo ++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYqlGt6sLOMnpT +FWGTfmfpMMrRSXIV0NGHEmh+hMVWf8rU0X/lqH/At/zRirv+VqaL/wAtQ/4Fv+aMFq7/AJWpov8A +y1D/AIFv+aMbV3/K1NF/5ah/wLf80Y2rv+VqaL/y1D/gW/5oxtXf8rU0X/lqH/At/wA0Y2rJNA8z +R3/Fo25I9Cp8Qenh+rCrKFNQCO+Kt4q7FXYq7FXYqxDzp/cSfI/8bYqwbyFBDK+rerGr/wCkgfEA +dqe+Ks2g0zTdv9Eh/wCRa/0xVFjStLp/vHB/yLT+mKqMml6ZT/eSH/kWn9MVQc+m6cP+PWH/AJFr +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 +V2KuxV//2Q== + + + + + + + + uuid:749E204FEFC411DA9064DAB41CCF8339 + uuid:26a751a1-ee39-11da-95ed-00112478973e + AdobeARM + + uuid:cbd6ed1b-ee37-11da-a7f6-00112478973e + uuid:C89EA84CEF4011DA8369AD67D9F1B96A + AdobeARM + http://192.168.0.2:3703/soap/Oxygen/documents/wip_konqueror.ai + + + + image/svg+xml + + + wip_konqueror + + + + image/svg+xml + + + + + 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 +Qvg4v0BKjTrIE5+8TkKvIDEcx1xCAD75HVeZcbqQMNH10MOrMyMnhLJWN7Y1Ajhx77rRco8CRfPr +sdZ1ZV9R0YUNg8xAvTduUcKqqMy9gS4mrvbc6hfrzU73ud2KYh9azRO94cs5gvyodd97QRIRQe59 +PboMmaBFDpEJajOiSFA3Wlvo9IqtxgvQzh+NgJ3B1/pXp+jzKglaaspo2taiwYFM64PqyOYjpP+9 +Ivq2Wo1eb8AwCdTrvdZA729ELKsE4gcu5r1o/oDGGn0/XEG9R3Jxj9M1ASbAKmlGmSPderfnU6zC +YAHa2536VwSqSDOuIzCq26SpXsT0kQpPEdxEQX21nsScBG24KxYxb2Mai12/vfY4J6igHqxtnO0b +VuUlqNCpkqBmN1hTvFZC55q1TuSC71l77f6rqwjFtphsjSN4rLVarpNW4N+IaAGG63PFc8buhluL +M3eXB03c5VR2Y89+2GrVXWftZq1fw0JZfijD4tRCv4H7LlXCcr4k9AasxVV9811bO/61KtVnz9fJ +46q9O/Pbe6GWLdUyvhsf378Vfm23zWtVqnOf7T40Kt3uaq2107z6/Vj+dXi6sZFvyT+X1+Qra3O6 +jvfTbFZ2f/yUFzbMlp6pzJ9qPXXmdHHt6rEklRYPFe3b6dKyunbRL28+2zvvu9NnK7XNZ+l2lb1V +FlfOjNfMXOfiM5N//b2bWXwqZjP5h/pdJq9sn2dyuz0YCxbcFtWqnVlcXelkHSivfXW1M/+tA13e +/3C6XDsrO79+7a+RsRRLPf0Tfp13BqrA+HrWdutCydm3M6ks4Ekmwzj2etb90XuxALL1tbi6k5nV +ekrv0G3W2lGvl6ef4XGnCd/ebroDr/a63eXe9+7P5ZNjqaSd50hfCVCAQsHuyD+0m9dqPhToz5fy +rhCoofwuZURAH7v3pcVrgOIH6wA9Ks9PX3aa1TCgvel7oywCurt6arauAkARCgGrzd8sLj8dH4YB +7X79WsotZL9lfoUBlbaltW8CoMb0jLX8bBNKDhmrdvtD2r4on4aOdGq7s5Q9fjs8CwW6M92uBoA6 +/ELAzu1XtUMRgi+7P56UfQQ6P4DenalrNav35+AzrT0wp0szMPsO2JO5ucCsahfmTpMABW563PID +/dn9efV4JgC69KBf1l9KHtBUlgN7X7g4EgI1S8/nc+FAv2Xmu72lxV440BPzHqA49Dsw1t7c6q0s +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 +pHuv7T+xBD5xq2ezW8fbqf8N76JfuQ== + + + \ No newline at end of file diff --git a/debian/Ubuntu/usb-creator-gtk.svg b/debian/Ubuntu/usb-creator-gtk.svg new file mode 100644 index 0000000..e10e04b --- /dev/null +++ b/debian/Ubuntu/usb-creator-gtk.svg @@ -0,0 +1,622 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/debian/Ubuntu/usb-creator-kde.svg b/debian/Ubuntu/usb-creator-kde.svg new file mode 100644 index 0000000..531b29e --- /dev/null +++ b/debian/Ubuntu/usb-creator-kde.svg @@ -0,0 +1,1584 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adobe PDF library 6.66 + + + + + + + + Illustrator + 2006-05-28T18:16:25+02:00 + 2006-05-29T02:42:33Z + 2006-05-28T18:16:25+02:00 + 1 + + + + JPEG + 120 + 256 + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA +AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK +DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f +Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAB4AwER +AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA +AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB +UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE +1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ +qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy +obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp +0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo ++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYqlGt6sLOMnpT +FWGTfmfpMMrRSXIV0NGHEmh+hMVWf8rU0X/lqH/At/zRirv+VqaL/wAtQ/4Fv+aMFq7/AJWpov8A +y1D/AIFv+aMbV3/K1NF/5ah/wLf80Y2rv+VqaL/y1D/gW/5oxtXf8rU0X/lqH/At/wA0Y2rJNA8z +R3/Fo25I9Cp8Qenh+rCrKFNQCO+Kt4q7FXYq7FXYqxDzp/cSfI/8bYqwbyFBDK+rerGr/wCkgfEA +dqe+Ks2g0zTdv9Eh/wCRa/0xVFjStLp/vHB/yLT+mKqMml6ZT/eSH/kWn9MVQc+m6cP+PWH/AJFr +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 +V2KuxV//2Q== + + + + + + + + uuid:749E204FEFC411DA9064DAB41CCF8339 + uuid:26a751a1-ee39-11da-95ed-00112478973e + AdobeARM + + uuid:cbd6ed1b-ee37-11da-a7f6-00112478973e + uuid:C89EA84CEF4011DA8369AD67D9F1B96A + AdobeARM + http://192.168.0.2:3703/soap/Oxygen/documents/wip_konqueror.ai + + + + image/svg+xml + + + wip_konqueror + + + + image/svg+xml + + + + + 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 +Qvg4v0BKjTrIE5+8TkKvIDEcx1xCAD75HVeZcbqQMNH10MOrMyMnhLJWN7Y1Ajhx77rRco8CRfPr +sdZ1ZV9R0YUNg8xAvTduUcKqqMy9gS4mrvbc6hfrzU73ud2KYh9azRO94cs5gvyodd97QRIRQe59 +PboMmaBFDpEJajOiSFA3Wlvo9IqtxgvQzh+NgJ3B1/pXp+jzKglaaspo2taiwYFM64PqyOYjpP+9 +Ivq2Wo1eb8AwCdTrvdZA729ELKsE4gcu5r1o/oDGGn0/XEG9R3Jxj9M1ASbAKmlGmSPderfnU6zC +YAHa2536VwSqSDOuIzCq26SpXsT0kQpPEdxEQX21nsScBG24KxYxb2Mai12/vfY4J6igHqxtnO0b +VuUlqNCpkqBmN1hTvFZC55q1TuSC71l77f6rqwjFtphsjSN4rLVarpNW4N+IaAGG63PFc8buhluL +M3eXB03c5VR2Y89+2GrVXWftZq1fw0JZfijD4tRCv4H7LlXCcr4k9AasxVV9811bO/61KtVnz9fJ +46q9O/Pbe6GWLdUyvhsf378Vfm23zWtVqnOf7T40Kt3uaq2107z6/Vj+dXi6sZFvyT+X1+Qra3O6 +jvfTbFZ2f/yUFzbMlp6pzJ9qPXXmdHHt6rEklRYPFe3b6dKyunbRL28+2zvvu9NnK7XNZ+l2lb1V +FlfOjNfMXOfiM5N//b2bWXwqZjP5h/pdJq9sn2dyuz0YCxbcFtWqnVlcXelkHSivfXW1M/+tA13e +/3C6XDsrO79+7a+RsRRLPf0Tfp13BqrA+HrWdutCydm3M6ks4Ekmwzj2etb90XuxALL1tbi6k5nV +ekrv0G3W2lGvl6ef4XGnCd/ebroDr/a63eXe9+7P5ZNjqaSd50hfCVCAQsHuyD+0m9dqPhToz5fy +rhCoofwuZURAH7v3pcVrgOIH6wA9Ks9PX3aa1TCgvel7oywCurt6arauAkARCgGrzd8sLj8dH4YB +7X79WsotZL9lfoUBlbaltW8CoMb0jLX8bBNKDhmrdvtD2r4on4aOdGq7s5Q9fjs8CwW6M92uBoA6 +/ELAzu1XtUMRgi+7P56UfQQ6P4DenalrNav35+AzrT0wp0szMPsO2JO5ucCsahfmTpMABW563PID +/dn9efV4JgC69KBf1l9KHtBUlgN7X7g4EgI1S8/nc+FAv2Xmu72lxV440BPzHqA49Dsw1t7c6q0s +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 +pHuv7T+xBD5xq2ezW8fbqf8N76JfuQ== + + + \ No newline at end of file diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..c735dff --- /dev/null +++ b/debian/changelog @@ -0,0 +1,1097 @@ +usb-creator (0.2.50) saucy; urgency=low + + * Remove untranslated and unnecessary string + + -- Jonathan Riddell Fri, 27 Sep 2013 15:48:29 +0100 + +usb-creator (0.2.49) saucy; urgency=low + + * SECURITY UPDATE: possible privilege escalation via policykit UID lookup + race. + - bin/usb-creator-helper: pass system-bus-name as a subject instead of + pid so policykit can get the information from the system bus. + - CVE-2013-1063 + + -- Marc Deslauriers Wed, 18 Sep 2013 13:23:48 -0400 + +usb-creator (0.2.48) saucy; urgency=low + + * Depend on gir1.2-gudev-1.0 (LP: #1178057) + + -- Jeremy Bicha Fri, 14 Jun 2013 13:03:21 -0400 + +usb-creator (0.2.47) raring; urgency=low + + * Purge the upstart job. + + -- Dmitrijs Ledkovs Wed, 20 Mar 2013 09:01:26 +0000 + +usb-creator (0.2.46) raring; urgency=low + + * Simplify upstart job, do checks in start on conditions and not in + pre-start script. + + -- Dmitrijs Ledkovs Wed, 06 Feb 2013 19:47:52 +0000 + +usb-creator (0.2.45.1) raring; urgency=low + + * KDE frontend python3 fixes from Riddell. + + -- Dmitrijs Ledkovs Mon, 28 Jan 2013 13:35:56 +0000 + +usb-creator (0.2.45) raring; urgency=low + + * Support flashing devices using fastboot (e.g. Nexus7). + * Update translations. + + -- Dmitrijs Ledkovs Mon, 28 Jan 2013 12:51:45 +0000 + +usb-creator (0.2.44) raring; urgency=low + + * Revert sync remount flag. It's too slow. + + -- Dmitrijs Ledkovs Thu, 17 Jan 2013 18:01:22 +0000 + +usb-creator (0.2.43) raring; urgency=low + + * Port helper script to gobject-interspection. (LP: #1078810) + * Fix pygi depreciation warnings. + * Fix passing one to many arguments to one Gtk.MessageDialog. + + -- Dmitrijs Ledkovs Thu, 10 Jan 2013 14:58:48 +0000 + +usb-creator (0.2.42) raring; urgency=low + + * Restrict architectures to i386 & amd64. Although it's all pure python, + it depends on executing syslinux which is only available on i386 & + amd64. + + -- Dmitrijs Ledkovs Mon, 26 Nov 2012 11:02:30 +0000 + +usb-creator (0.2.41) raring; urgency=low + + * Switch packaging to use python3. + * Drop utf-8/gnome workaround, now fixed in gnome. + * Do not use INT_MAX (LP: #1076305). + + -- Dmitrijs Ledkovs Fri, 31 Aug 2012 16:52:34 +0100 + +usb-creator (0.2.40ubuntu1) quantal; urgency=low + + * debian/control: remove Build-Depends on kdesdk-scripts so kdesdk + can live in universe + + -- Jamie Strandboge Tue, 31 Jul 2012 11:02:49 -0500 + +usb-creator (0.2.40) quantal; urgency=low + + [ Dmitrijs Ledkovs ] + * Increase the height of both source and target treeviews in the GTK+ + frontend. Thanks to Ross Lagerwall. + * Search Desktop in addition to Downloads directory for ISOs. Thanks to + Lucian Adrian Grijincu (LP: #761646) + * Update debian/copyright to copyright specification 1.0 + * Bump standards version to 3.8.3 + + [ Harald Sitter ] + * KDE: don't duplicate entries by improper removal of entries on update + (LP: #992061) + * udisks: on successful format the ended callback must be called + * KDE: strip() ISO labels as some derivates end up having newlines in + their label (e.g. netrunner) + * KDE: auto-populate the ISO list with files found in downloads dir + (LP: #761745) + + [ Jonathan Riddell ] + * KDE: do not clear formatting list in backend, fix breakage at + end of format + + -- Harald Sitter Fri, 06 Jul 2012 13:22:46 +0200 + +usb-creator (0.2.39) quantal; urgency=low + + [ Colin Watson ] + * Clean up various pyflakes warnings. + * Only pass unicode=True to gettext.install in Python 2. + * Open subprocesses with universal_newlines=True when expecting to read + text from them. On Python 2, this only enables \r\n conversion and the + like, but on Python 3 this also causes subprocess-related file objects + to read str rather than bytes. + * Use str() rather than unicode() in Python 3. + * Remove __pycache__ directories on clean. + * Use 'isinstance(obj, collections.Callable)' instead of 'callable(obj)' + in Python 3. + * Change 'except StandardError' to 'except Exception'; StandardError was + removed in Python 3. + * Use Python 3 name for Queue if available. + * Handle a few cases of builtins being changed to return iterators in + Python 3. + * Just use dict.items() rather than bothering with Python 2/3 + compatibility for dict.iteritems(). + + [ Evan Dandrea ] + * Only clear the selected partition on the disk, not the entire disk + (LP: #484252). Thanks Dmitrijs Ledkovs! + + -- Evan Dandrea Mon, 28 May 2012 17:58:43 +0100 + +usb-creator (0.2.38) precise; urgency=low + + [ Colin Watson ] + * Fix production of Ubuntu <= 10.04 images on Ubuntu >= 10.10 using + syslinux-legacy (LP: #645818). + + [ Evan Dandrea ] + * When comparing against 10.04, treat its point releases the same as + the initial release. + * Drop code to insert 'ui' in front of 'gfxboot bootlogo' in 10.04. + The ui command was added after 10.04. + + -- Evan Dandrea Mon, 16 Apr 2012 11:29:30 +0100 + +usb-creator (0.2.37) precise; urgency=low + + * debian/control: Fix dependency: python-gobject → python-gi. + + -- Martin Pitt Tue, 13 Mar 2012 19:15:49 +0100 + +usb-creator (0.2.36) precise; urgency=low + + [ Colin Watson ] + * Use Python 3-compatible print functions. + * Use "except Exception as e" syntax rather than the old-style "except + Exception, e". + * Use "raise Exception(value)" syntax rather than the old-style "raise + Exception, value". + * Use absolute imports. + + [ Martin Pitt ] + * usbcreator/frontends/gtk/frontend.py: We do not have any help for + usb-creator, so hide the Help button. (LP: #884008) + + -- Martin Pitt Sun, 11 Mar 2012 10:14:12 +0100 + +usb-creator (0.2.35.2) precise; urgency=low + + * depends on gir unity 5.0 (for real, this time) + + -- Didier Roche Fri, 13 Jan 2012 10:14:16 +0100 + +usb-creator (0.2.35.1) precise; urgency=low + + * Wrong target, sorry, reverting to unity 4.0 to upload to the ppa, + this time + + -- Didier Roche Wed, 11 Jan 2012 14:45:47 +0100 + +usb-creator (0.2.35ppa1) precise; urgency=low + + * depends on gir unity 5.0 + + -- Didier Roche Wed, 11 Jan 2012 14:40:47 +0100 + +usb-creator (0.2.35) precise; urgency=low + + * usb-creator currently requires the syslinux binary to make Ubuntu images + bootable, so this package can only work on amd64 and i386 at the moment. + Change the Architecture line to reflect this. + + -- Colin Watson Mon, 07 Nov 2011 11:55:47 +0000 + +usb-creator (0.2.34) oneiric; urgency=low + + [ Mario Limonciello ] + * Fix usb creator crash in KVMTest(). + + [ Gabor Kelemen ] + * Build with dh_translations, to localize the .policy file at runtime. + LP: #853227 + + [ Colin Watson ] + * Build-depend on dh-translations and bump required debhelper version, to + support previous change. + + -- Colin Watson Tue, 04 Oct 2011 14:38:20 +0100 + +usb-creator (0.2.33) oneiric; urgency=low + + * Ensure that at least /bin, /sbin, /usr/bin, and /usr/sbin are on PATH + (LP: #826716). + * Fix bad method call in UDisksBackend.format_failed (LP: #806611). + + -- Colin Watson Wed, 07 Sep 2011 17:09:41 +0100 + +usb-creator (0.2.32) oneiric; urgency=low + + * usbcreator/frontends/gtk/frontend.py: Fix invalid "None" argument for + TreeView.set_cursor(). + + -- Martin Pitt Mon, 05 Sep 2011 12:18:15 +0200 + +usb-creator (0.2.31.2) oneiric; urgency=low + + * usbcreator/frontends/gtk/frontend.py: Move from static gobject to GI + GObject module, to be compatible to upcoming pygobject 3.0. + + -- Martin Pitt Wed, 17 Aug 2011 08:22:11 +0200 + +usb-creator (0.2.31.1) oneiric; urgency=low + + * debian/control: + - depends now on gir1.2-unity-4.0 + + -- Didier Roche Fri, 12 Aug 2011 17:25:09 +0200 + +usb-creator (0.2.31) oneiric; urgency=low + + * Add Unity progress support. Thanks Robert Roth! + + -- Evan Dandrea Thu, 28 Jul 2011 17:27:55 +0100 + +usb-creator (0.2.30) oneiric; urgency=low + + [ Martin Pitt ] + * usbcreator/frontends/gtk/frontend.py: Port from obsolete PyGTK to PyGI. + * debian/control: Update dependencies for above. + * debian/control, debian/rules: Move to dh_python2, pysupport is obsolete. + * debian/control: Bump Standards-Version to 3.9.2 (no changes necessary). + + [ Evan Dandrea ] + * Fix a typo in the GTK 3 work. + + -- Evan Dandrea Thu, 19 May 2011 17:58:47 +0100 + +usb-creator (0.2.29) oneiric; urgency=low + + [ Evan Dandrea ] + * Add the ability to test freshly written disks in KVM. + * Add a udisks dump to the apport hook. + * Let the user format more than one device at a time. + * Guard UnmountFile with PolicyKit (LP: #771553). + + [ Mario Limonciello ] + * Show the vendor/model of targets in the UI. + + [ Marc Deslauriers ] + * SECURITY UPDATE: unprivileged disk operations (LP: #771553) + - CVE-2011-1828 + * setup.cfg: Specify policykit policy file as xml_file so it gets + translated properly instead of being malformed. + + -- Evan Dandrea Thu, 19 May 2011 16:52:49 +0100 + +usb-creator (0.2.28) natty; urgency=low + + * Fix showing a partitioning when it appears before the partition + table block device. + + -- Evan Dandrea Mon, 31 Jan 2011 14:41:37 +0000 + +usb-creator (0.2.27) natty; urgency=low + + [ Mario Limonciello ] + * If the EFI bootloader isn't present in the proper location but efi.img is + available in boot/grub, extract the EFI bootloader and place it in the proper + location. (LP: #677260) + + [ Evan Dandrea ] + * Hide partition table block devices by default. To revert to the + previous behavior, pass --show-all to usb-creator-gtk. + * Increase the minimum persistent storage size to 1G. + * Add a 30MB padding for the kernel and initramfs (LP: #562312). + + -- Evan Dandrea Fri, 28 Jan 2011 15:42:25 +0000 + +usb-creator (0.2.26) natty; urgency=low + + [ Michael Terry ] + * debian/control, usbcreator/frontends/gtk: + - Remove python-gnome2 dependency by switching help_display_uri to + gtk.show_uri. LP: #661289 + + -- Evan Dandrea Wed, 17 Nov 2010 10:45:50 +0000 + +usb-creator (0.2.25) maverick; urgency=low + + * Grow support for installing GRUB to USB sticks if it's detected in the image + rather than isolinux. (LP: #633712) + + -- Mario Limonciello Thu, 23 Sep 2010 03:17:56 -0500 + +usb-creator (0.2.24) maverick; urgency=low + + [ Mario Limonciello ] + * Mangle whether the 'ui' keyword is in syslinux.cfg based on the OS version. + (LP: #608382) + + [ Colin Watson ] + * GTK frontend: don't grey out "Make Startup Disk" when the source is a + physical CD. + * Use python-debian for Ubuntu release version comparison. + * Add an --allow-system-internal option (Unix only) to allow installation + to system-internal devices such as hard disks. This is useful when + preparing test USB images in KVM. + + -- Colin Watson Tue, 07 Sep 2010 10:40:37 +0100 + +usb-creator (0.2.23) maverick; urgency=low + + [ Evan Dandrea ] + * Continue evaluting whether or not a partition can be used even if + there is no source present (LP: #566390). + * Change the team from the Installer Team to usb-creator Hackers to + match the bzr ACL. + + [ Colin Watson ] + * Make usb-creator-common depend on parted (LP: #529366). + + [ Roderick B. Greening ] + * Fix cannot resize usb-creator-kde main window (LP: #580551). + * Update branding on KDE Icon (LP: #580558). + * Switch from exists to isfile detection in backend (LP: #608741) + * Bump version strings to 0.2.23 + + [ Dmitrijs Ledkovs ] + * desktop: + + removed obsolete encoding keys from desktop files + * man: + + fixed hyphens, minus signs & undefined macros + + removed non-working "-v" flag from usb-creator-gtk.8 (LP: #574089) + * po: + + translations dump from lucid. (LP: #570174) + * debian/usb-creator-common.install: + + install translations (for ppa's, archive will strip them) + * debian/source: + + using 3.0 (native) format + * debian/copyright: + + updated to DEP-5 format + * debian/control: + + removed transitional package (LTS is released) + + improved extended description + + added forgotten python-support dependency + + updated descriptions (thanks Matthew Paul Thomas) + * debian/rules: + + using dh tiny rules + + using python-support + + vendor branded icons installed if available + + debian-menu installed if there are branded xpm's + * .bzr-builddeb: + + defaults to native + + * Use XDG_CACHE_DIR for usb-creator.log + * Use XDG IconTheme spec for window icons (LP: #535061) + * Fix install button sensetivity (LP: #582531) + + [ Ignace Mouzannar ] + * Initial Debian release (Closes: #582884, #576359) + * debian/control: + + Added Build dependency on kdesdk-scripts (Debian specific) + * debian/usb-creator-gtk.menu and debian/usb-creator-kde.menu: + + Added these files as per the Debian Menu Policy + * debian/Debian/*.xpm: + + Added the xpm icons needed by the menu files + * debian/copyright: + + Added myself in the debian/* copyright + + [ Jonathan Riddell ] + * Fix kde/frontend.py for PyQt 4.7 which now expects a string not a + QString for loadUi + + -- Evan Dandrea Tue, 03 Aug 2010 10:49:34 -0400 + +usb-creator (0.2.22) lucid; urgency=low + + [ Roderick B. Greening ] + * Get rid of the needs-format warning for now. It was always shown + for parent block devices and the confusing resulting from that was + quite bad. This was previously done for gtk but not kde version. + * Update kde frontend format option to match gtk frontend/backend + (LP: #553460) + * Add warning dialog to format button for usb-creator-kde, to match gtk. + * Add BusyCursor while formatting under usb-creator-kde, to match gtk. + + [ Evan Dandrea ] + * Change the format button's label to 'Erase Disk' as it wipes the + entire disk, rather than an individual partition (LP 484252). + + -- Evan Dandrea Tue, 13 Apr 2010 16:41:26 +0100 + +usb-creator (0.2.21) lucid; urgency=low + + [ Evan Dandrea ] + * Change 'Flushing writes to the disk...' to 'Finishing...', as the + former is too technical. Thanks Iain Farrell! + * Encode ISO path with UTF-8 when mounting (LP: #460298). + + [ Roderick B. Greening ] + * Update KDE Frontend to work with newer PyQt bindings (LP: #553243). + * Bump version to 0.2.21 in setup.py, kde_about.py, usb-creator-gtk, + and man pages. + * Add explicit version requirement to depend on latest usb-creator-gtk + for usb-creator. + + -- Roderick B. Greening Thu, 01 Apr 2010 13:59:48 -0230 + +usb-creator (0.2.20) lucid; urgency=low + + * Fix format failing due to the device being busy (because we were + mounting it unnecessarily). + + -- Evan Dandrea Tue, 30 Mar 2010 17:35:04 +0100 + +usb-creator (0.2.19) lucid; urgency=low + + [ Mario Limonciello ] + * Don't force select a source unless the list is empty. + * Reverse the order of the populating ISOs and command line option --iso + again so that --iso always trumps others. + * Hide the source_vbox again when --iso is used. + + [ Evan Dandrea ] + * Get rid of the needs-format warning for now. It was always shown + for parent block devices and the confusing resulting from that was + quite bad. + * Rework partition mounting so that it doesn't fail if the partition + was mounted between dbus calls. + * Somewhat fix progress reporting. + * Don't write usb-creator-helper's log to /root (LP: #461064). + * Provide a format confirmation dialog (LP: #443330). + * Error out of formatting if we're unable to unmount all of the + partitions (LP: #507420). + * Provide feedback via a spinning cursor and disabled format button + while formatting (LP: #457737). + * Only call gtk.main_quit if we're in a mainloop. + * Don't try to unmount a partition in usb-creator-helper unless it + actually is mounted. + * Unmount the partition at the end of install using + usb-creator-helper rather than umount as a regular user. + * Handle device changes by synthesizing a remove and add. + * Pulse the progress bar while flushing changes to disk. + * Pulse when installing the bootloader. + + -- Evan Dandrea Wed, 24 Mar 2010 18:34:35 +0000 + +usb-creator (0.2.18) lucid; urgency=low + + [ Mario Limonciello ] + * Move the populating of ISOs from ~/Downloads to before adding an ISO + from command line option --iso. This allows the command line fed + ISO to be selected automatically. + + [ Evan Dandrea ] + * Provide a quick workaround for LP 529366 while a better fix is + prepared. Ignore errors on setting the boot flag for the target + partition. + + -- Evan Dandrea Mon, 08 Mar 2010 10:51:43 +0000 + +usb-creator (0.2.17) lucid; urgency=low + + [ Martin Pool ] + * If the source image is not an Ubuntu image (does not contain syslinux) + provide a better clue when failing. + * When you add a new source to the source list, select it. + + [ Brian Murray ] + * Add an apport package hook (LP: #489908) + + -- Kees Cook Thu, 04 Mar 2010 16:52:28 -0800 + +usb-creator (0.2.16) lucid; urgency=low + + [ Evan Dandrea ] + * Fix window layout when -i argument is used. + * Use ubiquity's label wrapping fix. + * Don't tell devicekit-disks to set the partition table to 'none' + before 'mbr', as it's no longer required. + + [ Martin Pitt ] + * Port to udisks: Rename all DeviceKit-Disks related D-Bus interfaces, + object paths, source code files, function names, and variables to their + UDisks counterpart. + * Replace devicekit-disks dependency with udisks (1.0.x) + + -- Martin Pitt Mon, 15 Feb 2010 09:42:54 +0100 + +usb-creator (0.2.15) lucid; urgency=low + + [ Mario Limonciello ] + * Ensure that the download_dir is really a directory before scanning it for + ISOs to include in the list. Fixes launching usb-creator-gtk as root. + * If hiding the persistence and iso selection in the UI, make sure to do + so before window.show() to prevent weird sizing of the window + + -- Evan Dandrea Tue, 02 Feb 2010 17:35:04 -0800 + +usb-creator (0.2.14) lucid; urgency=low + + [ Mario Limonciello ] + * When setting the no persistence flag (-n), don't offer changing + persistence in the UI. There's generally a good reason it's being + disabled in the first place. + * When a source image is provided in the startup flags, don't offer + to select different images in the UI. + * Widget names are no longer stored in the widget's internal name, but + rather in the object data. Sync this information back to the widget's + internal name. (LP: #503710) + + [ Evan Dandrea ] + * Hack around GTK's lack of good label wrapping (again). + * Point to correct location for the log file in the man page. + + -- Evan Dandrea Wed, 06 Jan 2010 22:24:57 +0000 + +usb-creator (0.2.13) lucid; urgency=low + + [ Evan Dandrea ] + * Set the install window as translatable. Thanks Milo Casagrande + (LP: #414742). + * Fix a typo in the Windows frontend (LP: #454926). + * Use a close button instead of a quit button in the GTK+ frontend + (LP: #285916). + * Change the program title (not the program name) to "Startup Disk + Creator" as usb-creator writes to more than just USB disks these days + (LP: #275138). + * In the GTK+ frontend, scan the download directory on startup and add + all the CD and disk images (LP: #441104). + * Expand the path provided by the -i option to its absolute + (LP: #458497). + * Unmount the target device rather than calling sync (LP: #457510). + + [ Martin Pitt ] + * bin/usb-creator-helper: Supply start-time in the PolicyKit subject struct, + so that this also works with current polkit-1 in lucid. + + -- Martin Pitt Tue, 08 Dec 2009 10:51:37 +0100 + +usb-creator (0.2.12) karmic; urgency=low + + * Properly mount the device when the user requests to open it in a + file manager (LP: #455199). + * Blacklist gfxboot.cfg in mangle_syslinux (LP: #456990). + + -- Evan Dandrea Thu, 22 Oct 2009 12:52:01 +0100 + +usb-creator (0.2.11) karmic; urgency=low + + * Add a help button for the GTK+ frontend. + * Feature freeze exception (LP: #451124). + + -- Evan Dandrea Thu, 15 Oct 2009 12:00:47 +0100 + +usb-creator (0.2.10) karmic; urgency=low + + [ Cody A.W. Somerville ] + * usbcreator/install.py: + - Do not copy /syslinux/syslinux.cfg to root of disk, no longer needed. + - Look at all files ending in .cfg under the syslinux directory when + updating configuration files based on the options selected in usb-creator. + - Strip tabs when parsing iso/syslinx config files to correctly identify + commands in a syslinux config file that indents lines. + + [ Evan Dandrea ] + * Small fixes to Cody's changes to the mangle_syslinux function: + - Don't assume / is the path separator. + - Add command line entries to the front, to avoid them being carried over + to the installed system. + - Write all lines, not just modified ones. + * Properly set the icons in the source treeview. Thanks John S. + Gruber (LP: #436469). + * Handle the device no longer existing in fs_size (LP: #439001). + * Update translations from Launchpad. + + [ Roderick B. Greening ] + * Fix issues with UTF.8 (unicode) strings being cast to str + (LP: #440719). + - Updated KDE Front-end + + -- Evan Dandrea Tue, 13 Oct 2009 11:08:16 +0100 + +usb-creator (0.2.9) karmic; urgency=low + + * Properly catch exceptions around modifying the syslinux + configuration (LP: #439977). + + -- Evan Dandrea Fri, 02 Oct 2009 11:42:25 +0100 + +usb-creator (0.2.8) karmic; urgency=low + + * Modify adtext.cfg as well when adding options to the syslinux + configuration (LP: #317059). + * The persistence value is no longer passed around as a string. Fix a + check that assumed it was. This was causing the persistence option + to always be written (LP: #436207). + + -- Evan Dandrea Tue, 29 Sep 2009 09:13:56 +0100 + +usb-creator (0.2.7) karmic; urgency=low + + [ Evan Dandrea ] + * Add PolicyKit support (LP: #273483). + * Move logging back to the home directory, now that usb-creator is run as a + regular user (LP: #431266). + * Use GIO instead of gnomevfs. Only lookup GNOME device names and + icons as needed. + * Remove the device in the DeviceKit-disks backend when it's removed + from the system. + * Only set the non-size columns to expand to fill available space in the GTK+ + frontend. Set a minimum width of 75px for all columns. + * Add the missing retry dialog to the GTK+ frontend. + * Fix a deadlock when the failed dialog runs. + * Explicitly depend on mtools, just in case someone removes it and + expects usb-creator to still work (LP: #295212). + * Re-enable the format button now that Devicekit-disks 007 has been + released. + * Depend on DeviceKit-disks >= 007. + * Freeze exception (LP: #432542). + * Update translations from Launchpad. + + [ Roderick B. Greening ] + * Bump version in setup.py, kde_about.py, usb-creator-gtk, and man to 0.2.7 + * Remove completed TODO items + * Update some message strings for translations + * Add the missing retry dialog to the KDE frontend. + * Update man pages to reflect new log file location + * In devicekit backend, ensure mount is empty string '' rather than empty + dbus.Array to prevent crashes in os.statvfs from misc.py + + -- Evan Dandrea Thu, 24 Sep 2009 10:02:28 -0700 + +usb-creator (0.2.6) karmic; urgency=low + + [ Evan Dandrea ] + * Ignore 0 byte devices. Thanks Roderick B. Greening! + * Close the file chooser when Cancel is selected (LP: #426430). Thanks + Severin Heiniger! + * Ellipsize long text strings in the GTK+ treeviews (LP: #424883). + * Make sure the ISO image gets unmounted when the install succesfully + completes (LP: #414821). + * Re-enable the destination status message. + * Fix broken free space update. + * Don't report disks as having 0 B free space. It's confusing. + * Updated translations from Launchpad. + + [ Roderick B. Greening ] + * Make kde frontend call detect_devices from private ref (self.__backend). + * Add update_loop timer to mirror gtk frontend + * Fix Makefile to include ./bin/usb-creator-* for translations + * Update kde frontend and ui to provide better translations in line with + gtk frontend. + * Add the translation script (Messages.sh) for kde .pot file generation + * Bump version in setup.py, kde_about.py, usb-creator-gtk, and man to 0.2.6 + * Enforce a MAX_PERSISTENCE of 4GB, otherwise dd fails tring to create + a file > 4GB + * Add the destination status message to kde frontend. + * Update man pages + * Add unmount ISO call to kde frontend + * Use id-label instead of partition-label in devicekit backend + + [ Harald Sitter ] + * Bump standards version to 3.8.3 + * Fix spelling GTK -> GTK+ + * Don't exceed 80 characters in control file + * Don't exceed 80 characters in changelog file + * KDE UI: + + Backend expects str for add_image, so do a type conversion from QString + + [ Jonathan Riddell ] + * kde_about.py: Use correct translations catalogue + * Extract strings for KDE frontend into .pot file + + -- Evan Dandrea Tue, 15 Sep 2009 18:26:23 +0100 + +usb-creator (0.2.5) karmic; urgency=low + + [ Harald Sitter ] + * Remove settings categories to de-clutter the KDE menu (settings doesn't + make all that much sense for KDE) + + [ Evan Dandrea ] + * Show partition table block devices. + * Fix persistence once more. + * Fail more gracefully when an error occurs while setting up the install + routine. + * Fully re-enable ISO image support (LP: #422671) + * Add some debugging breadcrumbs. + * Unmount partitions before writing a disk image. + * Clear the boot sector code area and set the boot flag on the partition + (LP: #425680). + + [ Roderick B. Greening ] + * Updated man pages + * Updated licence info in kde frontend modules to GPLv3+ + * Bump version in setup.py, kde_about.py, usb-creator-gtk to 0.2.5 + * Fix exit button which fails to exit in usb-creator-gtk (on fail or + successful install dialog) + * Remove unused get_solid_drive() from kde/frontend.py + + [ Steve Langasek ] + * Make sure .ui files are marked as type: gettext/glade in POTFILES.in, so + that source strings are picked up for translation. LP: #419069. + + -- Evan Dandrea Tue, 08 Sep 2009 15:34:58 +0100 + +usb-creator (0.2.4) karmic; urgency=low + + [ Evan Dandrea ] + * Re-enable perodic sufficient free space checks. + * Re-enable optional persistence file creation in the UI. + * Fix image and ISO writing for the devicekit backend. + + [ Roderick B. Greening ] + * Update KDE TODO + * Bump version in setup.py, kde_about.py, usb-creator-gtk to 0.2.4 + * General clean-up in usb-creator-kde to mirror current usb-creator-gtk + - remove _fail, excepthook def's as not needed + - remove trace options + - remove safe command line option + * Update man page + * General clean-up in kde/frontend.py + - remove unused setup_sources_treeview and setup_targets_treeview + - temporarily disable format and other buttons as they are currently broken + + [ Colin Watson ] + * Resolve GTK object ID clash (LP: #422071). + + -- Colin Watson Tue, 01 Sep 2009 15:29:56 +0100 + +usb-creator (0.2.3) karmic; urgency=low + + [ Evan Dandrea ] + * Depend on python-qt4-dbus. Thanks Daniel T. Chen (LP: #404553). + * New KDE icon. Thanks Jonathan Riddell and Ken Wimer! + * Massively cleaned up the structure of the usb-creator code. + * Replaced the HAL backend with a DeviceKit-disks backend. + * Added a Windows frontend and backend (built outside the archive). + * Manage the install routine and progress feedback in separate threads, + rather than a separate process. + * Replace dependency on parted and mtools with devicekit-disks. + + [ Roderick B. Greening ] + * Update ui file name for KDE. + + -- Evan Dandrea Wed, 26 Aug 2009 21:16:18 +0100 + +usb-creator (0.2.2) karmic; urgency=low + + [ Sebastien Bacher ] + * Use gtkbuilder rather than libglade (lp: #403543) + + [ Evan Dandrea ] + * Shuffle treeview selection callbacks around to avoid them getting + triggered before the backend is running. + * Update translations. + + -- Evan Dandrea Fri, 24 Jul 2009 10:38:47 +0100 + +usb-creator (0.2.1) karmic; urgency=low + + * Better i18n support. Thanks Loïc Minier and Juanje Ojeda Croissier! + * Some fixes to the KDE frontend from Roderick B. Greening: + - Update bug e-mail for about settings + - Tighten up some of the import statememnts in kde_frontend + - Connect the apps quit signal to kde_frontend's quit method + - Cleanup/improve progress bar code for kde_frontend + - Make sure we cleanup after finish is called in kde_frontend + + -- Evan Dandrea Thu, 23 Jul 2009 12:42:30 +0100 + +usb-creator (0.2.0) karmic; urgency=low + + [ Roderick B. Greening ] + * Add a KDE frontend. + * Updated packaging + - bump to debhelper 7 + - bump standards version + - add usb-creator-kde package + - split usb-creator into usb-creator-gtk and usb-creator-common + - usb-creator-common conflict/replaces old usb-creator + - add transitional package for usb-creator and rename old + usb-creator to usb-creator-gtk + - update man pages + - update install files according to new split + - update setup.py to look for data files (better for portability) + - update desktop files + * Update pot files for kde addition and gtk transition + * Added KDE Icon and renamed GTK one + * Added a 'Syncing' media message to install.py (syncing takes a while and app sits at 99%) + + [ Evan Dandrea ] + * Add a simplistic estimator of the remaining time. Thanks Lars + Wirzenius (LP: #333051). + * Go back to the Intrepid behavior of using MB precision for the persistent + storage size. + * Add raw disk image support. Thanks Bruno Dilly for the progress logic. + * Change the wording on the reboot message slightly to ease confusion. + Thanks Andrew Keyes. + * Add unittest support. + * Use the logging module, rather than a custom logging class. + * Raise exceptions in backend.popen rather than parsing a tuple returned + from it. + * Add icons for CD images and raw disk images. + * Support drag and drop of CD images and raw disk images. + * Completely refactor the backend and gtk_frotend code. + * Use HAL where possible to unmount partitions in order to avoid races. + * Handle HAL not running and other errors when usb-creator is started. + * Properly connect to the system bus. + * Get mountpoints directly from HAL as needed, rather than trying to keep a + list of them in sync. + * Unmount partitions mounted by usb-creator on unrecoverable failure. + + -- Evan Dandrea Thu, 23 Jul 2009 11:40:58 +0100 + +usb-creator (0.1.16) jaunty; urgency=low + + * gui/usbcreator.glade: gtk-quit, gtk-open, gtk-cancel labels shouldn't be + translatable. + * po/usbcreator.pot: update for previous change. + + -- Loic Minier Fri, 17 Apr 2009 12:52:19 +0200 + +usb-creator (0.1.15) jaunty; urgency=low + + * Set the proper gettext domain. Thanks Timo Jyrinki (LP: #331061). + + -- Evan Dandrea Wed, 18 Mar 2009 21:23:22 +0000 + +usb-creator (0.1.14) jaunty; urgency=low + + * Disable WrapLabel until its bugs are worked out. + + -- Evan Dandrea Wed, 18 Mar 2009 16:38:51 +0000 + +usb-creator (0.1.13) jaunty; urgency=low + + [ Evan Dandrea ] + * Fix the .desktop item i18n support (LP: #331061). Thanks Timo + Jyrinki! + * "Note that using GTK_WIN_POS_CENTER_ALWAYS is almost always a bad idea." + Place the window in the center, don't keep it centered. Thanks Eric + Butler. + * Set the title property of the labels after creating WrapLabels, not + before. Thanks Eric Butler. + * Point Vcs-Bzr in the control file to the proper location. + * Call dd with the correct arguments (LP: #331327). Thanks Martin Pitt! + * Move the addition of usb-creator.desktop.in to POTFILES.in to the build + script. + * Support SD cards and other removable devices. Thanks Eric Butler! + + [ Martin Pitt ] + * setup.py: Remove broken installation of .desktop file; p-distutils-extra + already does that. Fixes FTBFS. + * setup.py: Use p-distutils-extra's clean rule to properly remove build/. + + -- Martin Pitt Sun, 15 Mar 2009 22:48:23 +0100 + +usb-creator (0.1.12) jaunty; urgency=low + + [ Evan Dandrea ] + * Correct grammatical typo in the GTK frontend (LP: #297569). + * Depend on mcopy as syslinux only recommends it (LP: #296093). + * Mark more strings for translation. Thanks István Nyitrai (LP: #310804). + * Change the Debian maintainer to the Ubuntu Installer Team. + * Work around a long standing GTK label bug by using a Python version of + * libview's WrapLabel. + * Fix nonsense 1 byte writes of the casper-rw ext3 loopback fs + (LP: #313364). + * Basic file copy error handling. + * Sync the disk at the end of installation. + * Better handle filesystem-on-disk in the bootloader installing code. + Thanks Loïc Minier (LP: #325375) + + [ Jonathan Ernst ] + * Menu entry should be named "USB startup disk creator" (LP: #286924) + * Add French translation to desktop file + + -- Evan Dandrea Wed, 18 Feb 2009 10:45:56 +0000 + +usb-creator (0.1.11) jaunty; urgency=low + + [ Evan Dandrea ] + * Strip null bytes from the CD label when parsing it from an ISO file + (LP: #287318). + * Internally represent the persistent file size in bytes for greater + accuracy. + * Move self.pipe declaration to the correct location (LP: #291645). + * Add a bootloader installation progress message. + * Install the bootloader to the MBR as well (LP: #273477). + * Specify the filesystem type when mounting iso9660 images. + * Warn the user when usb-creator cannot mount an image (LP: #287753). + * i18n support (LP: #285413, #292556). + * Added Swedish tranlsation (LP: #285811). Thanks Daniel Nylander. + * Add -t option to write a trace file. + * Don't include all .py files in the tree for translation. + * Don't update the pot file on every build. + * Write more information to the log (subprocesses, stderr, etc). + + [ Martin Owens ] + * Fix small issue where enlarging the main window would have a different + expanding effect on the top listview from the bottom listview. + * Add gnomevfs support to use gnome device labels and icons. This should + make things more user friendly. + + [ Mario Limonciello ] + * Add support for providing command line ISO images. + * Add support for defaulting the persistence setting in the UI via + command line. + * Default the GUI to start up centered on the screen. + + -- Evan Dandrea Thu, 20 Nov 2008 09:28:08 +0000 + +usb-creator (0.1.10) intrepid; urgency=low + + * Always write cdrom-detect/try-usb=true, rather than just when + persistence is enabled. + * persist was always getting enabled as the flag for it was being passed as + a string rather than an integer. + * Fix crash when the shutdown function would get called before the install + process began (LP: #277869). + * Added an icon (taken from Ubiquity until we have an icon of our own) + (LP: #285704). + * Add dependency on gksu. Thanks Colin Watson (LP: #286950). + + -- Evan Dandrea Mon, 27 Oct 2008 05:15:18 -0400 + +usb-creator (0.1.9) intrepid; urgency=low + + * Write syslinux configuration to text.cfg as well (LP: #285011). + * Move from System Tools to Administration (LP: #285009). + + -- Evan Dandrea Fri, 17 Oct 2008 10:28:53 -0400 + +usb-creator (0.1.8) intrepid; urgency=low + + * Add cdrom-detect/try-usb=true to the kernel command line so that + usb-creator is usable with alternate CDs (LP: #234185). + * Properly notify that the the user needs to insert a CD, not a USB disk, + when no CD is inserted. + + -- Evan Dandrea Thu, 16 Oct 2008 03:53:04 -0400 + +usb-creator (0.1.7) intrepid; urgency=low + + * Unmount filesystems before formatting the device (LP: #273671). + * Apparently order matters with respect to keyword arguments. + * Filter out removable CD-ROM devices when trying to find empty disks + (LP: #271006). + * Only look for devices that have the media_size property when looking for + empty partition tables (LP: #271006). + * Remove the device representing an empty partition table if we find one of + its partitions (LP: #273671). + * Properly set the boot device. + * Shut down the install process when the cancel button is pressed. + * Add the persistence and noprompt options to syslinux.cfg. + * Handle the install process dying before shutdown() is called. + + -- Evan Dandrea Sun, 28 Sep 2008 20:06:41 -0400 + +usb-creator (0.1.6) intrepid; urgency=low + + * Write the log file to SUDO_USER's home directory, not root's. + * Start the file chooser in SUDO_USER's home directory (LP: #273642). + * Show a warning dialog when an ISO image cannot be used (LP: #272415). + + -- Evan Dandrea Thu, 25 Sep 2008 10:56:00 -0400 + +usb-creator (0.1.5) intrepid; urgency=low + + * Add --safe option to enable syslinux's 'safe, slow, and stupid' mode + (LP: #273740). + * Fix cases where free_space gets called after we've unmounted filesystems + as part of the shutdown process (LP: #273861). + * Lower debhelper requirement for Hardy backport (LP: #273936). + * Update percentage by bytes, not files copied (LP: #269037). + * Remove files and directories that we're going to write to beforehand. + * Notify the user that they need to insert an USB stick when none are + available (LP: #267794). + + -- Evan Dandrea Thu, 25 Sep 2008 02:04:47 -0400 + +usb-creator (0.1.4) intrepid; urgency=low + + * Refactor the code to set up signal receivers and disconnect the + property_modified callback before the main installation process. + * Replaced the MessageDialogs with full dialogs defined in Glade to avoid + the windows not appearing in the taskbar and falling behind other + windows. + * Create a partition table before attempting to create new partitions. + * Require the device be formatted if a vfat partition is not present. + * Show a message dialog with warnings from the backend. + * Set the boot flag when installing the bootloader (LP: #272775). + + -- Evan Dandrea Tue, 23 Sep 2008 03:37:26 -0400 + +usb-creator (0.1.3) intrepid; urgency=low + + [ Evan Dandrea ] + * Added a man page for usb-creator.8. + * UI reworking after discussions with mpt. Thanks Matthew. + - The labels are far less wordy. + - Enabling persistence is now an explict option button selection rather + than implicitly enabled when the slider is moved to a value greater + than 0. + - There are now two treeviews, instead of the previous comboboxes, that + update automatically to reflect changes to the device's structure, and + provide warnings when a device is either unusable or require the user + to delete some files to free up space before continuing. + * Fixed the left-alignment of labels thanks to a tip from Colin Watson. + * Merged the separate CD and ISO lists into the CD list in the backend. + * Replaced the log-output backed command wrapper with a simpler solution + (LP: #269044). + * Now logging to ~/.usb-creator.log instead of just stdout. + * Moved the persistence code from the backend to scripts/install.py and + wired up the persistence scale in the frontend. + * The backend now reports the task description in addition to the progress + value. + * A failure dialog is now shown when scripts/install.py exits non-zero + (LP: #269035). + * Mount the target device at install time if it has not already been + mounted (LP: #269032). + * Properly set the labels of the progress dialog on install startup. + * Do not make the dialogs modal. + * Elevate privileges using gksu. + * Added a .desktop file (LP: #267788). + * Work around a bug in syslinux wherein it can only find the configuration + file for the option labels in the root of the device. + * Handle devices with empty partition tables. + * Automatically mount (and unmount) partitions (LP: #269032). + * Fixed missing Debian dependencies (LP: #269767). + * UI Freeze exception upload (LP: #270530). + + [ Colin Watson ] + * Avoid executing commands via the shell (LP: #269048). + + -- Evan Dandrea Tue, 16 Sep 2008 03:29:55 -0400 + +usb-creator (0.1.2) intrepid; urgency=low + + * Fix incorrect paths leftover from testing. + + -- Evan Dandrea Tue, 09 Sep 2008 09:21:02 -0400 + +usb-creator (0.1.1) intrepid; urgency=low + + * Fix FTBFS. Thanks David Futcher (LP: #267103). + * Corrected licensing to GPLv3 rather than GPLv3+. + * Replaced 'Select a CD image...' combobox item with an Add button + (LP: #267798). + * Fixed some widget spacing issues. + * Fixed progress reporting and switched back to using the internal install + routine. + * Unset the sensitivity of the install button where appropriate. + * Added a successful completion dialog. + * Added a install cancellation confirmation dialog. + * Properly shut down the install process when exiting. + * Properly clean up loop mounted filesystems and temporary directories. + * Added support for physical CDs. + * Fixed a bug wherein a newly inserted USB key would accidentally get added + to the list of sources and trigger an exception. + + -- Evan Dandrea Tue, 09 Sep 2008 03:59:27 -0400 + +usb-creator (0.1) intrepid; urgency=low + + * Initial release (LP: #263551) + + -- Evan Dandrea Mon, 01 Sep 2008 02:07:59 -0400 + diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..dd60839 --- /dev/null +++ b/debian/control @@ -0,0 +1,67 @@ +Source: usb-creator +Section: admin +Priority: optional +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: usb-creator Hackers Team +Uploaders: Dmitrijs Ledkovs , Ignace Mouzannar +Build-Depends: debhelper (>= 9), + dh-translations, + python3, + python3-distutils-extra, + pkg-kde-tools +Standards-Version: 3.9.4 +X-Python3-Version: >= 3.2 +Vcs-Bzr: http://bazaar.launchpad.net/~usb-creator-hackers/usb-creator/trunk + +Package: usb-creator-common +# Restricted to x86, because of syslinux dependency +Architecture: amd64 i386 +Depends: ${misc:Depends}, ${python3:Depends}, python3-dbus, + syslinux, syslinux-legacy, + udisks (>= 1.0~), udisks (<< 1.1), genisoimage, mtools, parted, python3-debian +Description: create a startup disk using a CD or disc image (common files) + Startup Disk Creator converts a USB key or SD card into a volume from which you + can start up and run Ubuntu. You can also store files and settings in any space + left over. + . + The program also works for Debian, or any other Debian-based OS for which you + have a CD or .iso image. + . + This package contains backend engine and common data files used by frontends. + +Package: usb-creator-gtk +# Restricted to x86, because of syslinux dependency +Architecture: amd64 i386 +Depends: ${misc:Depends}, ${python3:Depends}, + usb-creator-common (= ${binary:Version}), + python3-gi, + gir1.2-gtk-3.0, + gir1.2-gudev-1.0, + gir1.2-pango-1.0, + gir1.2-glib-2.0, + gir1.2-unity-5.0, + python3-dbus +Description: create a startup disk using a CD or disc image (for GNOME) + Startup Disk Creator converts a USB key or SD card into a volume from which you + can start up and run Ubuntu. You can also store files and settings in any space + left over. + . + The program also works for Debian, or any other Debian-based OS for which you + have a CD or .iso image. + . + This package contains the GTK+ client frontend. + +Package: usb-creator-kde +# Restricted to x86, because of syslinux dependency +Architecture: amd64 i386 +Depends: ${misc:Depends}, ${python3:Depends}, + usb-creator-common (= ${binary:Version}), python3-pykde4, python3-dbus.mainloop.qt +Description: create a startup disk using a CD or disc image (for KDE) + Startup Disk Creator converts a USB key or SD card into a volume from which you + can start up and run Ubuntu. You can also store files and settings in any space + left over. + . + The program also works for Debian, or any other Debian-based OS for which you + have a CD or .iso image. + . + This package contains the KDE client frontend. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..17249a4 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,39 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: usb-creator +Upstream-Contact: Evan Dandrea +Source: https://launchpad.net/usb-creator/+downloads + +Files: * +Copyright: 2008, Canonical Ltd. +License: GPL-3 + +Files: debian/* +Copyright: 2008, Evan Dandrea + 2010, Dmitrijs Ledkovs + 2010, Ignace Mouzannar +License: GPL-3 + +Files: debian/Ubuntu/* +Copyright: 2008, Canonical Ltd. +License: GPL-3 + +Files: debian/Debian/* +Copyright: 2010, Dmitrijs Ledkovs +License: GPL-3 + +Files: bin/usb-creator-kde usbcreator/frontends/kde/* +Copyright: 2009, Roderick B. Greening + 2008, David Edmundson +License: GPL-3 + +Files: tools/pylauncher/* tools/pypack/* +Copyright: 2007, 2008 Agostino Russo +License: GPL-2 + +License: GPL-2 + On Debian systems, the complete text of the GNU General Public License + version 2 can be found in `/usr/share/common-licenses/GPL-2'. + +License: GPL-3 + On Debian systems, the complete text of the GNU General Public License + version 3 can be found in `/usr/share/common-licenses/GPL-3'. diff --git a/debian/pycompat b/debian/pycompat new file mode 100644 index 0000000..0cfbf08 --- /dev/null +++ b/debian/pycompat @@ -0,0 +1 @@ +2 diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..61c04aa --- /dev/null +++ b/debian/rules @@ -0,0 +1,44 @@ +#!/usr/bin/make -f +vendor := $(shell dpkg-vendor --query Vendor) +vendor_dir := ./debian/$(vendor) +dest := $(CURDIR)/debian/tmp/usr/share/icons/hicolor/scalable/apps +xpm_gtk := $(CURDIR)/debian/usb-creator-gtk/usr/share/pixmaps/ +xpm_kde := $(CURDIR)/debian/usb-creator-kde/usr/share/pixmaps/ + +ifeq ($(vendor),Ubuntu) + DHaddons := python3,translations +else + DHaddons := python3 +endif + +%: + dh $@ -Spython_distutils --with $(DHaddons) + +override_dh_auto_build: + python3 setup.py build + +override_dh_auto_install: + python3 setup.py install --root=$(CURDIR)/debian/tmp --install-layout=deb + +override_dh_auto_clean: + python3 setup.py clean + +override_dh_python3: + dh_python3 -p usb-creator-common -p usb-creator-gtk -p usb-creator-kde + +override_dh_clean: + rm -rf build + find -name __pycache__ -print0 | xargs -0r rm -rf + dh_clean + +override_dh_install: + find . -path "$(vendor_dir)/*.svg" -exec cp {} $(dest) \; + dh_install + +override_dh_installmenu: +ifneq (,$(wildcard $(vendor_dir)/*.xpm)) + mkdir -p $(xpm_gtk) $(xpm_kde) + find . -path "$(vendor_dir)/*-gtk*.xpm" -exec cp {} $(xpm_gtk) \; + find . -path "$(vendor_dir)/*-kde*.xpm" -exec cp {} $(xpm_kde) \; + dh_installmenu +endif diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/debian/source_usb-creator.py b/debian/source_usb-creator.py new file mode 100644 index 0000000..9ab2055 --- /dev/null +++ b/debian/source_usb-creator.py @@ -0,0 +1,17 @@ +'''apport package hook for usb-creator + +(c) 2010 Canonical Ltd. +Author: Brian Murray +''' + +from apport.hookutils import * +from os import path, getenv + +def add_info(report): + + cache_dir = getenv('XDG_CACHE_HOME', path.expanduser('~/.cache')) + log_file = path.join(cache_dir, 'usb-creator.log') + attach_file_if_exists(report, log_file, 'UsbCreatorLog') + + report['UsbDevices'] = usb_devices() + report['UDisksDump'] = apport.hookutils.command_output(['udisks', '--dump']) diff --git a/debian/usb-creator-common.install b/debian/usb-creator-common.install new file mode 100644 index 0000000..dd5edee --- /dev/null +++ b/debian/usb-creator-common.install @@ -0,0 +1,13 @@ +usr/lib/python*/*/*.egg-info +usr/lib/python*/*/usbcreator/__init__.py +usr/lib/python*/*/usbcreator/backends/* +usr/lib/python*/*/usbcreator/frontends/*.py +usr/lib/python*/*/usbcreator/frontends/base/* +usr/lib/python*/*/usbcreator/*.py +usr/share/usb-creator/usb-creator-helper +usr/share/usb-creator/ubuntu-nexus7-USAGE-NOTICE-en.txt +usr/share/polkit-1/actions/* +usr/share/dbus-1/system-services/* +etc/dbus-1/system.d/* +usr/share/apport/package-hooks/source_usb-creator.py +usr/share/locale/* diff --git a/debian/usb-creator-gtk.conf b/debian/usb-creator-gtk.conf new file mode 100644 index 0000000..6692b4b --- /dev/null +++ b/debian/usb-creator-gtk.conf @@ -0,0 +1,31 @@ +# usb-creator-gtk + +# This really should be enchanced user session job +# and not a system one! +# Then the hacks to get DISPLAY & user can go away. +# Also the udev test are ugly =/ + +author "Dmitrijs Ledkovs " + +start on ( + usb-device-added ID_VENDOR_ID=18d1 ID_MODEL_ID=4e40 or + usb-device-added ID_VENDOR_ID=18d1 ID_MODEL_ID=d001 +) + +task + +script + +test -x /usr/bin/fastboot || exit 0 +test -n "`/usr/bin/fastboot devices`" || exit 0 +test -f /usr/share/acpi-support/power-funcs || exit 0 +. /usr/share/acpi-support/power-funcs + +getXconsole + +test -n "$XAUTHORITY" && exit 0 +test "$user" = "lightdm" && exit 0 + +sudo -u $user DISPLAY="$DISPLAY" usb-creator-gtk --fastboot + +end script diff --git a/debian/usb-creator-gtk.install b/debian/usb-creator-gtk.install new file mode 100644 index 0000000..b512e12 --- /dev/null +++ b/debian/usb-creator-gtk.install @@ -0,0 +1,5 @@ +usr/bin/usb-creator-gtk +usr/lib/python*/*/usbcreator/frontends/gtk/* +usr/share/applications/usb-creator-gtk.desktop +usr/share/usb-creator/usbcreator-gtk.ui +usr/share/icons/hicolor/scalable/apps/usb-creator-gtk.svg diff --git a/debian/usb-creator-gtk.maintscript b/debian/usb-creator-gtk.maintscript new file mode 100644 index 0000000..01600ab --- /dev/null +++ b/debian/usb-creator-gtk.maintscript @@ -0,0 +1 @@ +rm_conffile /etc/init/usb-creator-gtk.conf \ No newline at end of file diff --git a/debian/usb-creator-gtk.manpages b/debian/usb-creator-gtk.manpages new file mode 100644 index 0000000..dcebad6 --- /dev/null +++ b/debian/usb-creator-gtk.manpages @@ -0,0 +1 @@ +man/usb-creator-gtk.8 diff --git a/debian/usb-creator-gtk.menu b/debian/usb-creator-gtk.menu new file mode 100644 index 0000000..4af5070 --- /dev/null +++ b/debian/usb-creator-gtk.menu @@ -0,0 +1,6 @@ +?package(usb-creator-gtk):needs="X11" section="Applications/File Management"\ + title="usb-creator-gtk" command="/usr/bin/usb-creator-gtk" \ + longtitle="Startup disk creator" \ + icon16x16="/usr/share/pixmaps/usb-creator-gtk-16x16.xpm" \ + icon32x32="/usr/share/pixmaps/usb-creator-gtk-32x32.xpm" \ + icon="/usr/share/pixmaps/usb-creator-gtk-32x32.xpm" diff --git a/debian/usb-creator-kde.install b/debian/usb-creator-kde.install new file mode 100644 index 0000000..da029ea --- /dev/null +++ b/debian/usb-creator-kde.install @@ -0,0 +1,5 @@ +usr/bin/usb-creator-kde +usr/lib/python*/*/usbcreator/frontends/kde/* +usr/share/applications/usb-creator-kde.desktop +usr/share/kde4/apps/usb-creator-kde/usbcreator-kde.ui +usr/share/icons/hicolor/scalable/apps/usb-creator-kde.svg diff --git a/debian/usb-creator-kde.manpages b/debian/usb-creator-kde.manpages new file mode 100644 index 0000000..d7e2872 --- /dev/null +++ b/debian/usb-creator-kde.manpages @@ -0,0 +1 @@ +man/usb-creator-kde.8 diff --git a/debian/usb-creator-kde.menu b/debian/usb-creator-kde.menu new file mode 100644 index 0000000..9dfdf95 --- /dev/null +++ b/debian/usb-creator-kde.menu @@ -0,0 +1,6 @@ +?package(usb-creator-kde):needs="X11" section="Applications/File Management"\ + title="usb-creator-kde" command="/usr/bin/usb-creator-kde" \ + longtitle="Startup disk creator" \ + icon16x16="/usr/share/pixmaps/usb-creator-kde-16x16.xpm" \ + icon32x32="/usr/share/pixmaps/usb-creator-kde-32x32.xpm" \ + icon="/usr/share/pixmaps/usb-creator-kde-32x32.xpm" diff --git a/desktop/usb-creator-gtk.desktop.in b/desktop/usb-creator-gtk.desktop.in new file mode 100644 index 0000000..a687dbb --- /dev/null +++ b/desktop/usb-creator-gtk.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +_Name=Startup Disk Creator +_GenericName=Startup Disk Creator +_Comment=Create a startup disk using a CD or disc image +Exec=usb-creator-gtk +Icon=usb-creator-gtk +Terminal=false +Type=Application +Categories=System;Settings;GTK;HardwareSettings; +X-Ubuntu-Gettext-Domain=usbcreator diff --git a/desktop/usb-creator-gtk.svg b/desktop/usb-creator-gtk.svg new file mode 100644 index 0000000..337ca31 --- /dev/null +++ b/desktop/usb-creator-gtk.svg @@ -0,0 +1,658 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/desktop/usb-creator-kde.desktop.in b/desktop/usb-creator-kde.desktop.in new file mode 100644 index 0000000..2cb4c35 --- /dev/null +++ b/desktop/usb-creator-kde.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +_Name=Startup Disk Creator +_GenericName=Startup Disk Creator +_Comment=Create a startup disk using a CD or disc image +Exec=usb-creator-kde +Icon=usb-creator-kde +Terminal=false +Type=Application +Categories=System;KDE;Qt; +X-Ubuntu-Gettext-Domain=usbcreator diff --git a/desktop/usb-creator-kde.svg b/desktop/usb-creator-kde.svg new file mode 100644 index 0000000..3e83589 --- /dev/null +++ b/desktop/usb-creator-kde.svg @@ -0,0 +1,1554 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Adobe PDF library 6.66 + + + + + + + + Illustrator + 2006-05-28T18:16:25+02:00 + 2006-05-29T02:42:33Z + 2006-05-28T18:16:25+02:00 + 1 + + + + JPEG + 120 + 256 + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA +AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK +DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f +Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAB4AwER +AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA +AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB +UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE +1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ +qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy +obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp +0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo ++DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYqlGt6sLOMnpT +FWGTfmfpMMrRSXIV0NGHEmh+hMVWf8rU0X/lqH/At/zRirv+VqaL/wAtQ/4Fv+aMFq7/AJWpov8A +y1D/AIFv+aMbV3/K1NF/5ah/wLf80Y2rv+VqaL/y1D/gW/5oxtXf8rU0X/lqH/At/wA0Y2rJNA8z +R3/Fo25I9Cp8Qenh+rCrKFNQCO+Kt4q7FXYq7FXYqxDzp/cSfI/8bYqwbyFBDK+rerGr/wCkgfEA +dqe+Ks2g0zTdv9Eh/wCRa/0xVFjStLp/vHB/yLT+mKqMml6ZT/eSH/kWn9MVQc+m6cP+PWH/AJFr +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 +V2KuxV//2Q== + + + + + + + + uuid:749E204FEFC411DA9064DAB41CCF8339 + uuid:26a751a1-ee39-11da-95ed-00112478973e + AdobeARM + + uuid:cbd6ed1b-ee37-11da-a7f6-00112478973e + uuid:C89EA84CEF4011DA8369AD67D9F1B96A + AdobeARM + http://192.168.0.2:3703/soap/Oxygen/documents/wip_konqueror.ai + + + + image/svg+xml + + + wip_konqueror + + + + image/svg+xml + + + + + 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 +Qvg4v0BKjTrIE5+8TkKvIDEcx1xCAD75HVeZcbqQMNH10MOrMyMnhLJWN7Y1Ajhx77rRco8CRfPr +sdZ1ZV9R0YUNg8xAvTduUcKqqMy9gS4mrvbc6hfrzU73ud2KYh9azRO94cs5gvyodd97QRIRQe59 +PboMmaBFDpEJajOiSFA3Wlvo9IqtxgvQzh+NgJ3B1/pXp+jzKglaaspo2taiwYFM64PqyOYjpP+9 +Ivq2Wo1eb8AwCdTrvdZA729ELKsE4gcu5r1o/oDGGn0/XEG9R3Jxj9M1ASbAKmlGmSPderfnU6zC +YAHa2536VwSqSDOuIzCq26SpXsT0kQpPEdxEQX21nsScBG24KxYxb2Mai12/vfY4J6igHqxtnO0b +VuUlqNCpkqBmN1hTvFZC55q1TuSC71l77f6rqwjFtphsjSN4rLVarpNW4N+IaAGG63PFc8buhluL +M3eXB03c5VR2Y89+2GrVXWftZq1fw0JZfijD4tRCv4H7LlXCcr4k9AasxVV9811bO/61KtVnz9fJ +46q9O/Pbe6GWLdUyvhsf378Vfm23zWtVqnOf7T40Kt3uaq2107z6/Vj+dXi6sZFvyT+X1+Qra3O6 +jvfTbFZ2f/yUFzbMlp6pzJ9qPXXmdHHt6rEklRYPFe3b6dKyunbRL28+2zvvu9NnK7XNZ+l2lb1V +FlfOjNfMXOfiM5N//b2bWXwqZjP5h/pdJq9sn2dyuz0YCxbcFtWqnVlcXelkHSivfXW1M/+tA13e +/3C6XDsrO79+7a+RsRRLPf0Tfp13BqrA+HrWdutCydm3M6ks4Ekmwzj2etb90XuxALL1tbi6k5nV +ekrv0G3W2lGvl6ef4XGnCd/ebroDr/a63eXe9+7P5ZNjqaSd50hfCVCAQsHuyD+0m9dqPhToz5fy +rhCoofwuZURAH7v3pcVrgOIH6wA9Ks9PX3aa1TCgvel7oywCurt6arauAkARCgGrzd8sLj8dH4YB +7X79WsotZL9lfoUBlbaltW8CoMb0jLX8bBNKDhmrdvtD2r4on4aOdGq7s5Q9fjs8CwW6M92uBoA6 +/ELAzu1XtUMRgi+7P56UfQQ6P4DenalrNav35+AzrT0wp0szMPsO2JO5ucCsahfmTpMABW563PID +/dn9efV4JgC69KBf1l9KHtBUlgN7X7g4EgI1S8/nc+FAv2Xmu72lxV440BPzHqA49Dsw1t7c6q0s +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 +pHuv7T+xBD5xq2ezW8fbqf8N76JfuQ== + + + \ No newline at end of file diff --git a/desktop/usb-creator.ico b/desktop/usb-creator.ico new file mode 100644 index 0000000..2f62df0 Binary files /dev/null and b/desktop/usb-creator.ico differ diff --git a/gui/ubuntu-nexus7-USAGE-NOTICE-en.txt b/gui/ubuntu-nexus7-USAGE-NOTICE-en.txt new file mode 100644 index 0000000..99accbb --- /dev/null +++ b/gui/ubuntu-nexus7-USAGE-NOTICE-en.txt @@ -0,0 +1,21 @@ +"Ubuntu for Google Nexus 7" is released for free non-commercial use on +the Google Nexus 7 only. It is provided without warranty, even the +implied warranty of merchantability, satisfaction or fitness for a +particular use. See the licence included with each program for details. + Some licences may grant additional rights; this notice shall not limit +your rights under each program's licence. Licences for each program are +available in the usr/share/doc directory. Source code for Ubuntu can be +downloaded from archive.ubuntu.com. Ubuntu, the Ubuntu logo and +Canonical are registered trademarks of Canonical Ltd. All other +trademarks are the property of their respective owners. + +"Ubuntu for Google Nexus 7" is released for limited use due to the +inclusion of the following hardware drivers: + +[Wireless] - [Broadcom Corporation] +[Bluetooth] - [Broadcom Corporation] +[Graphics] - [NVIDIA Corporation] +[Video Codecs] - [NVIDIA Corporation] + +The original components and licenses can be found at: +https://developers.google.com/android/nexus/drivers#grouper diff --git a/gui/usbcreator-gtk.ui b/gui/usbcreator-gtk.ui new file mode 100644 index 0000000..49d1187 --- /dev/null +++ b/gui/usbcreator-gtk.ui @@ -0,0 +1,973 @@ + + + + + 100 + 1 + 10 + 10 + + + False + 5 + Legal Notice + dialog + + + False + vertical + 2 + + + False + end + + + + + + + + + False + True + end + 0 + + + + + True + False + True + False + + + False + True + 1 + + + + + + + True + Installation Failed + False + True + center + gtk-dialog-error + dialog + center + + + True + False + + + True + False + end + + + gtk-quit + True + True + True + False + True + + + False + False + 0 + + + + + False + True + end + 0 + + + + + True + False + + + True + False + 2 + gtk-dialog-error + 6 + + + True + True + 5 + 0 + + + + + True + False + 10 + 0 + none + + + True + False + 12 + + + True + True + The installation failed. Please see ~/.cache/usb-creator.log for more details. + + True + True + + + + + + + True + True + 1 + + + + + True + True + 2 + + + + + + failed_exit + + + + True + Installation Complete + False + True + center + gtk-dialog-info + dialog + center + + + True + False + + + True + False + end + + + Test Disk + True + True + + + False + False + 0 + + + + + gtk-quit + True + True + True + False + True + + + False + False + 1 + + + + + False + True + end + 0 + + + + + True + False + + + True + False + 2 + gtk-dialog-info + 6 + + + True + True + 5 + 0 + + + + + True + False + 10 + 0 + none + + + True + False + 12 + + + True + True + Installation is complete. You may now run Ubuntu on other computers by booting them with this drive inserted. + True + True + + + + + + + True + True + 1 + + + + + True + True + 2 + + + + + + kvm_test + finished_exit + + + + True + False + gtk-missing-image + + + False + 12 + Installing + False + True + center-always + False + + + True + False + 6 + + + True + True + 0 + True + True + end + + + False + True + 6 + 0 + + + + + 400 + True + False + 0.10000000149011612 + + + False + False + 1 + + + + + True + False + 6 + + + True + True + 0 + 6 + True + True + end + + + True + True + 0 + + + + + gtk-cancel + True + True + False + True + + + False + False + end + 1 + + + + + False + True + 2 + + + + + + + True + Quit the installation? + False + True + center + gtk-dialog-warning + dialog + center + + + True + False + + + True + False + end + + + gtk-cancel + True + True + True + False + True + + + False + False + 0 + + + + + gtk-quit + True + True + True + False + True + + + + False + False + 1 + + + + + False + True + end + 0 + + + + + True + False + + + True + False + 2 + gtk-dialog-warning + 6 + + + True + True + 5 + 0 + + + + + True + False + 10 + 0 + none + + + True + False + 12 + + + True + True + Do you really want to quit the installation now? + True + True + + + + + + + True + True + 1 + + + + + True + True + 2 + + + + + + cancelbutton + warning_exit + + + + False + Make Startup Disk + center + + + + True + False + + + True + False + 12 + 18 + + + True + False + 0 + 0 + To try or install Ubuntu from a removable disk, it needs to be set up as a startup disk. + True + True + + + False + True + 0 + + + + + True + False + 6 + + + True + False + + + True + False + Source disc image (.iso) or CD: + True + + + False + True + 0 + + + + + False + True + 0 + + + + + 70 + True + True + never + in + + + True + True + False + True + + + + + + + + True + True + 1 + + + + + True + False + + + True + False + + + False + False + 1 + + + + + Other... + True + True + True + + + + False + False + end + 1 + + + + + False + False + end + 2 + + + + + True + True + 1 + + + + + True + False + 6 + + + True + False + + + True + False + Disk to use: + True + + + False + True + 0 + + + + + False + True + 0 + + + + + 70 + True + True + never + in + + + True + True + False + + + + + + + + True + True + 1 + + + + + True + False + 6 + + + True + False + + + True + False + + + False + False + 0 + + + + + True + True + 0 + + + + + gtk-open + True + True + True + + + + False + False + 1 + + + + + True + True + True + + + + True + False + 6 + + + True + False + Erase Disk + + + True + True + 0 + + + + + False + + + True + True + 1 + + + + + + + False + False + 2 + + + + + False + True + 2 + + + + + True + True + 2 + + + + + True + False + 6 + + + True + False + 0 + 0 + When starting up from this disk, documents and settings will be: + True + + + True + True + 0 + + + + + True + False + 6 + + + True + False + 12 + + + True + False + 3 + + + Stored in reserved extra space + True + True + False + 0.5 + True + True + + + False + True + 0 + + + + + True + False + 23 + + + True + False + 6 + + + True + False + How much: + + + False + True + 1 + + + + + True + True + adjustment1 + False + 0 + right + + + True + True + end + 1 + + + + + + + True + True + 1 + + + + + True + True + 0 + + + + + Discarded on shutdown, unless you save them elsewhere + True + True + False + 0.5 + True + True + persist_enabled + + + False + True + end + 1 + + + + + + + False + False + 1 + + + + + False + False + 3 + + + + + True + False + end + + + gtk-help + True + True + True + 4 + True + + + False + False + 0 + True + + + + + gtk-close + True + True + True + 4 + True + + + + False + False + 1 + + + + + Make Startup Disk + True + False + True + True + True + True + 4 + + + + False + False + 2 + + + + + False + True + 4 + + + + + + + + diff --git a/gui/usbcreator-kde.ui b/gui/usbcreator-kde.ui new file mode 100644 index 0000000..534de97 --- /dev/null +++ b/gui/usbcreator-kde.ui @@ -0,0 +1,377 @@ + + + Dialog + + + + 0 + 0 + 459 + 397 + + + + + 16777215 + 16777215 + + + + Make Startup Disk + + + + + + To try or install Ubuntu from a removable disk, it needs to be set up as a startup disk. + + + + + + + Source disc image (.iso) or CD: + + + + + + + false + + + + CD-Drive/Image + + + + + OS Version + + + + + Size + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Other... + + + + + + + + + Disk to use: + + + + + + + false + + + + Device + + + + + Label + + + + + Capacity + + + + + Free Space + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Erase Disk + + + + + + + + + + + + When starting up from this disk, documents and settings will be: + + + + + + + + 16777215 + 16777215 + + + + Stored in reserved extra space + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 25 + 20 + + + + + + + + How much: + + + + + + + Qt::Horizontal + + + + + + + 0.0 MB + + + + + + + + + Discarded on shutdown, unless you save them elsewhere + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Make Startup Disk + + + + + + + Quit + + + + + + + + + + KPushButton + QPushButton +
kpushbutton.h
+
+
+ + + + ui_persist_disabled + clicked(bool) + ui_persist_slider + setDisabled(bool) + + + 59 + 349 + + + 237 + 327 + + + + + ui_persist_enabled + clicked(bool) + ui_persist_slider + setEnabled(bool) + + + 63 + 287 + + + 175 + 319 + + + + + ui_persist_enabled + clicked(bool) + ui_persist_text + setEnabled(bool) + + + 38 + 294 + + + 51 + 317 + + + + + ui_persist_enabled + clicked(bool) + ui_persist_label + setEnabled(bool) + + + 382 + 292 + + + 449 + 318 + + + + + ui_persist_disabled + clicked(bool) + ui_persist_text + setDisabled(bool) + + + 93 + 346 + + + 81 + 325 + + + + + ui_persist_disabled + clicked(bool) + ui_persist_label + setDisabled(bool) + + + 282 + 347 + + + 449 + 329 + + + + + ui_quit_button + clicked() + Dialog + reject() + + + 423 + 373 + + + 215 + 235 + + + + +
diff --git a/main.py b/main.py new file mode 100644 index 0000000..c93b843 --- /dev/null +++ b/main.py @@ -0,0 +1,58 @@ +# Copyright (C) 2009 Canonical Ltd. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# USB Creator for Windows. +import sys +import os + +import locale +import logging + +root_dir = os.path.abspath(os.path.dirname(__file__)) +lib_dir = os.path.join(root_dir, 'lib') +sys.path.insert(0, lib_dir) + +from usbcreator.frontends.winui import WinuiFrontend +from usbcreator.backends.windows import WindowsBackend +from usbcreator.misc import setup_gettext, setup_logging, text_type + +setup_logging() + +import ctypes +MB_ICONSTOP = 16 +try: + if not ctypes.windll.advpack.IsNTAdmin(0, 0): + ctypes.windll.user32.MessageBoxW(0, + _(u'Please run this program as an administrator to continue.'), + _(u'Administrator privileges required'), MB_ICONSTOP) + logging.error('Please run this program as an administrator.') + sys.exit(1) +except Exception: + pass + +# TODO evand 2009-07-27: Options! + +translations_dir = os.path.join(root_dir, 'translations') +setup_gettext(localedir=translations_dir) + +try: + b = WindowsBackend() + WinuiFrontend(b) +except Exception as e: + # TODO evand 2009-07-28: Thread cleanup? + ctypes.windll.user32.MessageBoxW(0, + _(u'An unhandled exception occurred:\n%s' % text_type(e)), + _(u'Error'), MB_ICONSTOP) + logging.exception('Unhandled exception:') + sys.exit(1) diff --git a/man/usb-creator-gtk.8 b/man/usb-creator-gtk.8 new file mode 100644 index 0000000..6767b8d --- /dev/null +++ b/man/usb-creator-gtk.8 @@ -0,0 +1,66 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH "USB-CREATOR-GTK" "8" "July 22, 2010" "usb-creator-gtk 0.2.23" "Ubuntu Startup Disk Creator For Gtk+" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +usb\-creator\-gtk \(hy Ubuntu startup disk creation tool for Gtk+ +.SH SYNOPSIS +.B usb-creator-gtk +\fR [ \-s | \-safe ] [ \-i | \-\-iso ] + [ \-n | \-\-not_persistent ] + [ \-h | \-\-help ] [ \-\-version ] +.SH DESCRIPTION +\fBusb\-creator\-gtk\fR takes an Ubuntu CD or CD image file as input and writes +it out in a usable form to a removable disk. +.SH OPTIONS +.TP +.B \-s, \-\-safe +Choose safer options when constructing the disk (may slow down the boot process). +.TP +.B \-i, \-\-iso +Provide a source image (CD or raw disk) to pre\(hy populate the UI. +.TP +.B \-n, \-\-not_persistent +Disable persistent setting by default in the UI. +.TP +.BR \-h, \-\-help +Print a summary of command line options and exit. +.TP +.BR \-\-version +Print the current version and exit. +.SH AUTHOR +\fBusb\-creator\-gtk\fP was written by Evan Dandrea . +.PP +This manual page was written by Evan Dandrea , +for the Ubuntu project (and may be used by others). +.br +Updates by Roderick B. Greening . +.SH "REPORTING BUGS" +Report bugs via Ubuntu Launchpad +.PP +When reporting bugs, please be sure to include a copy of the usb\-creator log file +to assist in debugging. This log file can be found as ~/.cache/usb-creator.log. +.SH COPYRIGHT +Copyright \(co 2009\-2010 Evan Dandrea +.br +Copyright \(co 2009\-2010 Roderick B. Greening +.sp 1 +Some portions GPLv2+ and GPLv3+: GNU GPL version 2 or later . +.br +For additional details about Copyright and License, please refer to the package copyright file. +.sp 1 +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. diff --git a/man/usb-creator-kde.8 b/man/usb-creator-kde.8 new file mode 100644 index 0000000..0207fd4 --- /dev/null +++ b/man/usb-creator-kde.8 @@ -0,0 +1,62 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH "USB-CREATOR-KDE" "8" "July 22, 2010" "usb-creator-kde 0.2.23" "Ubuntu Startup Disk Creator For KDE" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +usb\-creator\-kde \(hy Ubuntu startup disk creation tool for KDE +.SH SYNOPSIS +.B usb\-creator\-kde +\fR [\-i|\-\-iso ] [\-n|\-\-nonpersistent] + [\-h|\-\-help] [\-v|\-\-version] +.SH DESCRIPTION +\fBusb\-creator\-kde\fP takes an Ubuntu CD or CD image file as input and writes +it out in a usable form to a removable disk. +.SH OPTIONS +.TP +.B \-i, \-\-iso +Provide a source image (CD or raw disk) to pre\(hypopulate the UI. +.TP +.B \-n, \-\-nonpersistent +Disable persistent setting by default in the UI. +.TP +.BR \-h, \-\-help +Print a summary of command line options and exit. +.TP +.BR \-v, \-\-version +Print the current version and exit. +.SH AUTHOR +\fBusb-creator-kde\fP was written by Roderick B. Greening , as ported from +\fBusb-creator-gtk\fP. The back-end was written by Evan Dandrea , and is used by this +program. +.PP +This manual page was written by Roderick B. Greening , +for the Ubuntu project (and may be used by others). +.SH "REPORTING BUGS" +Report bugs via Ubuntu Launchpad +.PP +When reporting bugs, please be sure to include a copy of the usb-creator log file +to assist in debugging. This log file can be found as ~/.cache/usb-creator.log. +.SH COPYRIGHT +Copyright \(co 2009-2010 Roderick B. Greening +.br +Copyright \(co 2009-2010 Evan Dandrea +.sp 1 +Some portions GPLv2+ and GPLv3+: GNU GPL version 2 or later . +.br +For additional details about Copyright and License, please refer to the package copyright file. +.sp 1 +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..6f02762 --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,38 @@ +./dbus/com.ubuntu.usbcreator.policy.in +./desktop/usb-creator-gtk.desktop.in +./desktop/usb-creator-kde.desktop.in +./usbcreator/frontends/base/__init__.py +./usbcreator/frontends/base/frontend.py +./usbcreator/frontends/__init__.py +./usbcreator/frontends/kde/kde_about.py +./usbcreator/frontends/kde/translate.py +./usbcreator/frontends/kde/__init__.py +./usbcreator/frontends/kde/frontend.py +./usbcreator/frontends/gtk/unitysupport.py +./usbcreator/frontends/gtk/__init__.py +./usbcreator/frontends/gtk/frontend.py +./usbcreator/frontends/winui/main_dialog.py +./usbcreator/frontends/winui/__init__.py +./usbcreator/frontends/winui/install_window.py +./usbcreator/frontends/winui/winui/defs.py +./usbcreator/frontends/winui/winui/ui.py +./usbcreator/frontends/winui/winui/__init__.py +./usbcreator/frontends/winui/frontend.py +./usbcreator/remtimest.py +./usbcreator/install.py +./usbcreator/__init__.py +./usbcreator/backends/udisks/backend.py +./usbcreator/backends/udisks/__init__.py +./usbcreator/backends/fastboot/backend.py +./usbcreator/backends/fastboot/__init__.py +./usbcreator/backends/base/backend.py +./usbcreator/backends/base/__init__.py +./usbcreator/backends/__init__.py +./usbcreator/backends/windows/backend.py +./usbcreator/backends/windows/__init__.py +./usbcreator/misc.py +./gui/usbcreator-kde.ui +[type: gettext/glade]./gui/usbcreator-gtk.ui +./main.py +./bin/usb-creator-gtk +./bin/usb-creator-kde diff --git a/po/af.po b/po/af.po new file mode 100644 index 0000000..b809131 --- /dev/null +++ b/po/af.po @@ -0,0 +1,492 @@ +# Afrikaans translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-10-19 06:20+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Afrikaans \n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/ar.po b/po/ar.po new file mode 100644 index 0000000..69acdb2 --- /dev/null +++ b/po/ar.po @@ -0,0 +1,530 @@ +# translation of _usbcreator-ar.po to Arabic +# Arabic translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# +# FIRST AUTHOR , 2008. +# OsamaKhalid , 2009. +msgid "" +msgstr "" +"Project-Id-Version: _usbcreator-ar\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 06:13+0000\n" +"Last-Translator: Khaled Hosny \n" +"Language-Team: Arabic\n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "تثبيت محمّل الإقلاع" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "تمنع سياسة النظام تثبيت محمل الإقلاع" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "تهيئة الجهاز" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "تمنع سياسة النظام تهيئة الجهاز" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "كتابة صورة القرص إلى الجهاز" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "تمنع سياسة النظام كتابة صورة القرص على الجهاز" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "وصل الجهاز" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "تمنع سياسة النظام الوصل" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "يثبّت" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "فشل التثبيت." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "هذا الجهاز ليس كبيرا بما يكفي لهذه الصورة." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "لا توجد مساحة خالية كافية لهذه الصورة." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "صور اسطوانات" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "صور أقراص" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "بدأ التشغيل" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "يجب أن تختار الصورة المصدر والجهاز القصود أولا." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"اكتمل التثبيت. يمكن الآن إعادة تشغيل حاسوبك بينما هذا الجهاز متثل به، لتجربة " +"أو تثبيت أوبونتو." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "أأعيد المحاولة؟" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "أأغادر التثبيت؟" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "أتريد حقا مغادرة التثبيت الآن؟" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "مصدر صورة القرص (.iso) أو الاسطوانة:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "كتابة صورة القرص إلى الجهاز" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "اكتمل التثبيت" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "اسطوانة/صورة اسطوانة" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "الصورة" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "إصدارة نظام التشغيل" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "الحجم" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "الجهاز" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "التسمية" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "السعة" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "المساحة الخالية" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "يبدأ..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "اكتمل %d%% (بقي %dد%sث)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% مكتمل" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"اكتمل التثبيت. يمكن الآن إعادة تشغيل حاسوبك بينما هذا الجهاز متثل به، لتجربة " +"أو تثبيت أوبونتو." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "مصدر صورة القرص (.iso) أو الاسطوانة:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "أخرى..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "عند بدء التشعيل من هذا القرص، ستكون المستندات والإعدادات:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "مخزنة في المساحة المحجوزة" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "كم:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "انبذ عند إيقاف التشغيل، إلا إذا حفظتها في مكان آخر" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "أنهِ" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "أنشئ قرص إقلاع" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "أل&غِ" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "اكتمل التثبيت" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "فشل التثبيت" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "الكل" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "أنشئ قرص بدء تشغيل" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "الامتداد \"%s\" غير مدعوم" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"حدث استثناء غير متوقع:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"لا توجد مساحة خالية كافية لكتابة الصورة:\n" +"%s\n" +"(%d م.بايت) > %s (%d م.بايت)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "يثبّت محمل الإقلاع..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "فشل تثبيت محمل الإقلاع." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "يُعدّل التضبيطات..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "ينشئ ملفا ثابتا..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "ينشئ نظام ملفات ext2 في الملف الثابت..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "يكتب صورة القرص..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "تعذّر كتابة صورة القرص (%s) على الجهاز (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "يُزيل الملفات..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "يُزيل الملفات..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "ينسخ الملفات..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "تلبيدات md5 لا تتطابق." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "يثبّت محمل الإقلاع..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "فشل تثبيت محمل الإقلاع." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "تعذّرت القراءة من %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "التلبيدات لا تتطابق. أأعيد المحاولة؟" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "التلبيدات لا تتطابق." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "فشل التثبيت" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "فشل التثبيت. راجع ‪~/.usbcreator.log‬ لمزيد من التفاصيل.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "اكتمل التثبيت" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"اكتمل التثبيت. يمكنك الآن تشغيل أوبونتو على الحواسيب الأخرى عبر تشغيلها وهذا " +"الجهاز متصل بها." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "القرص الذي سيُستخدم:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "مخزنة في مساحة استعادة خارجية" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "من فضلك شغل هذا البرنامج بصلاحيات المدير." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "تحتاج لصلاحيات المدير" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"حدث استثناء غير متوقع:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "عطل" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "من فضلك أدخل اسطوانة أو انقر 'أخرى...'" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 م.بايت" + +#~ msgid "Cancel" +#~ msgstr "ألغِ" + +#~ msgid "Format" +#~ msgstr "هيّئ" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "أنشئ قرص بدء تشغيل يوإس​بي" diff --git a/po/ast.po b/po/ast.po new file mode 100644 index 0000000..aa7d9b2 --- /dev/null +++ b/po/ast.po @@ -0,0 +1,539 @@ +# Asturian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 13:56+0000\n" +"Last-Translator: Iñigo Varela \n" +"Language-Team: Asturian \n" +"Language: ast\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Instalar el xestor d'arranque" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "La política del sistema torga l'instalar el xestor d'arranque" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatiar el preséu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "La política del sistema torga'l formatiar esti preséu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Facer un calcu del preséu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "La política del sistema torga escribir el calcu del discu al preséu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Montar un preséu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "La política del sistema torga'l montaxe" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Creador de discos d'arranque" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Crear un discu d'arranque usando un CD o una imaxe de discu" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Instalando" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Instalación fallía." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "El preséu nun ye abondo grande pa contener esta imaxe." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Nun hai abondo espaciu llibre pa esta imaxe." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Imáxenes de CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Imáxenes de discu" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Arrancando" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Tien d'esbillar primero la fonte de la imaxe y el preséu de destín." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"La instalación completóse. Tien d'aniciar el so equipu con esti preséu " +"inxertáu pa prebar o instalar Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Reintentalo?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "¿Salir de la instalación?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "¿Daveres deseya salir de la instalación agora?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "¿Daveres que quies desaniar el discu enteru?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Pa prebar o instalar Ubuntu dende un discu estrayíble, faise necesario " +"afitalu como discu d'arranque." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "CD o Orixe del calcu (.iso):" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Facer un calcu del preséu" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalación completa" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Unidá de CD/Imaxe" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Imaxe" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Versión del Sitema Operativu" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Tamañu" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Finando..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Desaniciar discu" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Preséu" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etiqueta" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacidá" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Espaciu llibre" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Aniciando..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% completáu (falten %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% completáu" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"La instalación completóse. Tien d'aniciar el so equipu con esti preséu " +"inxertáu pa prebar o instalar Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Pa prebar o instalar Ubuntu dende un discu estrayíble, faise necesario " +"afitalu como discu d'arranque." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "CD o Orixe del calcu (.iso):" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Otru..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Discu estrayíble a usar:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Al arrancar dende'l discu, los documentos y la configuración:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Atroxáu n'espaciu reserváu" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Cuántu espaciu:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Perderánse al apagar sacante que los atroxe n'otru sitiu" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Colar" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Facer un discu d'aniciu" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Encaboxar" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalación completa" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Falló la instalación" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Too" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Crear discu d'aniciu" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "La estensión «%s» nun ta permitía." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Apareció una esceición non capturada:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Espaciu llibre insuficiente pa grabar la imaxe:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Instalando'l cargador d'arranque..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Fallu al instalar el cargador d'arranque..." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Modificando la configuración..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Nun pueden movese los ficheros syslinux en «%s»: %s. ¿Puede que «%s» nun " +"seya una imaxe d'Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Creando un ficheru de persistencia..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Creando un sistema de ficheros ext2 nel ficheru de persistencia..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Finando..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Escribiendo imaxe de discu..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Nun puede escribise la imaxe de discu (%s) al preséu (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Desaniciando ficheros..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Desaniciando ficheros..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Copiando ficheros..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "la suma de comprobación md5 nun concasa." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Instalando'l cargador d'arranque..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Fallu al instalar el cargador d'arranque..." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Nun puede lleese %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "La suma de comprobación nun concasa. ¿Reintentar?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "La suma de comprobación nun concasa." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Falló la instalación" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Falló la instalación. Por favor, llee ~/.usbcreator.log pa más detalles.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalación completa" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Desaniciar discu" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"La instalación completóse. Agora puedes executar Ubuntu n'otros equipos " +"arrancándolos col discu (o llápiz-usb) inxertáu." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Discu a usar:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Guardaránse nun espaciu reserváu" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Execute esti programa como alministrador pa continuar." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Necesítense privilexos d'alministrador" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Asocedió una esceición non remanada:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Fallu" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Meti'l CD o escueyi «Otru...»." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Encaboxar" + +#~ msgid "Format" +#~ msgstr "Formatu" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Crear discu USB d'aniciu" diff --git a/po/be.po b/po/be.po new file mode 100644 index 0000000..5323e95 --- /dev/null +++ b/po/be.po @@ -0,0 +1,530 @@ +# Belarusian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-02-05 13:10+0000\n" +"Last-Translator: Mikola Tsekhan \n" +"Language-Team: Belarusian \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Усталяваць загрузчык" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Устаноўка загрузчыка забароненая сыстэмай" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Фарматаваць прыладу" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Фарматаваньне прылады забаронена сыстэмай" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Стварыць вобраз прылады" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Запiс вобраза на гэтую прыладу забаронены сыстэмай" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Прымацаваць прыладу" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Мацаваньне прылады забаронена сыстэмай" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Стваральнік загрузачных дыскаў" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Стварыць загрузачны дыск, выкарстоўвая CD або дыскавую выяву." + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Устаноўка" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Устаноўка скончылася памылкай." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Занадта маленькі памер прылады для запiсу гэтага вобразу." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Недастаткова вольнай прасторы для гэтага вобразу." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Вобраз CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Вобразы дыску" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Запуск" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Спачатку неабходна абраць вобраз крыніцы і мэтавую прыладу." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Усталёўка пасьпяхова скончана. Зараз можна перазагрузіць кампутар і " +"загрузіцца з падрыхтаванага носьбіта, каб паспрабаваць, альбо усталяваць " +"Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Паўтарыць?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Пакінуць працэс устаноўкі?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Вы насамрэч жадаеце выйсьці з праграмы усталёўкі?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Каб паспрабаваць усталяваць Ubuntu са зьменнага дыска, ён мусіць быць " +"пазначаны як загрузачны." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Вобраз зыходнага дыску (.iso) або CD" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Стварыць вобраз прылады" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Інсталяцыя скончана" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-Прылада/Вобраз" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Вобраз" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Вэрсія АС" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Памер" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Прылада" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Этыкетка:" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Ёмістасьць" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Вольная прастора" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Запуск..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% завершана (%dm%ss засталося)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% зроблена" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Усталёўка пасьпяхова скончана. Зараз можна перазагрузіць кампутар і " +"загрузіцца з падрыхтаванага носьбіта, каб паспрабаваць, альбо усталяваць " +"Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Каб паспрабаваць усталяваць Ubuntu са зьменнага дыска, ён мусіць быць " +"пазначаны як загрузачны." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Вобраз зыходнага дыску (.iso) або CD" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Іншае..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Зьменны дыск для выкарыстаньня:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Пры запуску з гэтага дыску, прылады й дакумэнты будуць:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Захаваны ў вылучанай дыскавай прасторы" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Колькi:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Выдаляцца пры выключэньні, калі вы не захаваеце іх куды-небудзь" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Выйсьці" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Зрабiць дыск для запуску" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Скасаваць" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Інсталяцыя скончаная" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Інсталяцыя завяршылася памылкай" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Усе" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Зрабiць дыск для запуску" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Пашырэньне \"%s\" не падтрымлiваецца" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Знойдзена неапрацаванае выключэньне:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Бракуе вольнай прасторы для запiсу вобраза:\n" +"%s\n" +"(%d MБ) > %s (%d MБ)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Устаноўка загрузчыка..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Памылка ўстаноўкі загрузчыка." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Зьмяненьне канфiгурацыі..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Стварэньне файла захаваньняў..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Стварэньне файлавай cыcтэмы ext2 у файле захаваньняў..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Запiс вобраза..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Не атрымоўваецца запiсаць вобраз (%s) на прыладу (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Выдаленьне файлаў..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Выдаленьне файлаў..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Капіяваньне файлаў..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Не супадаюць кантрольныя сумы md5..." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Устаноўка загрузчыка..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Памылка ўстаноўкі загрузчыка." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Не атрымоўваецца чытаць з %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Не супадаюць кантрольныя сумы. Паўтарыць?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Не супадаюць кантрольныя сумы." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Памылка інсталяцыі" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Устаноўка скончылася няўдала. Больш iнфармацыi глядзiце ў ~/.usbcreator.log\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Інсталяцыя скончана" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Усталёўка завершана. Зараз можна запускаць Ubuntu на іншых кампутарах, " +"стартуючы з гэтага дыска." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Выкарыстоўваемы дыск:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Захаваны ў вылучанай дыскавай прасторы" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Каб працягнуць, урухомьце гэтую праграму ад імя адміністратара." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Патрабуюцца правы адміністратара" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Неапрацаванае выключэньне:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Памылка" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Калі ласка ўстаўце CD альбо выберыце 'Іншае...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MБ" + +#~ msgid "Cancel" +#~ msgstr "Скасаваць" diff --git a/po/bg.po b/po/bg.po new file mode 100644 index 0000000..9507561 --- /dev/null +++ b/po/bg.po @@ -0,0 +1,541 @@ +# Bulgarian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-23 09:35+0000\n" +"Last-Translator: Kamen Lichev \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Инсталиране на програмата за начално зареждане" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" +"Системна политика пречи на инсталирането на програма за начално зареждане" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Форматиране на устройство" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Системна политика пречи на форматирането на това устройство" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Записване на образа в устройството" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Системна политика пречи на записване на образа в това устройство" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Монтиране на устройство" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Системна политика пречи на монтиране" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Създаване на стартираща USB флаш памет" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Създаване на стартиращ диск чрез използване на CD или имидж от диск" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Инсталиране" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Инсталирането е неуспешно." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Устройството не е достатъчно голямо, за да съхранява образа." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Няма достатъчно свободно място за този образ." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD образи" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Образи на диск" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Започване" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Първо трябва да изберете източник с образ и целево устройство." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Инсталацията завърши. Можете да рестартирате компютъра и да пробвате или " +"инсталирате Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Повторен опит?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Излизане от инсталацията?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Наистина ли искате да излезете от инсталацията сега?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Сигурни ли сте, че желаете да изтриете целия диск?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"За да опитате да инсталирате Убунту от сменяем диск, той трябва да се " +"настрои като стартиращ." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Източник на образ на диск (.iso) или CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Записване на образа в устройството" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Инсталацията завърши" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD Устройство/Образ" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Образ" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Версия на ОС" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Големина" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Завършване…" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Изтрий диск" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Устройство" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Име" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Обем" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Свободно място" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Стартиране..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% готови (остават %dм%sс)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% завършени" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Инсталацията завърши. Можете да рестартирате компютъра и да пробвате или " +"инсталирате Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"За да опитате да инсталирате Убунту от сменяем диск, той трябва да се " +"настрои като стартиращ." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Източник на образ на диск (.iso) или CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Друг..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Сменяем диск който да се използва:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Когато стартирате от този диск, докумнтите и настройките ще бъдат:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Резервирано място" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Колко:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Отхвърлени при изключване, освен, ако не ги запишете някъде другаде" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Спиране на програмата" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Създаване" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Отказване" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Инсталацията завърши" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Инсталацията е неуспешна." + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Всички" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Направи стартиращ диск" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Разширението \"%s\" не се поддържа." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Възникна неочаквано изключение:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Няма достатъчно място з азапис на образа:\n" +"%s\n" +"\n" +"(%d МБ) > %s (%d МБ)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Инсталиране на програмата за начално зареждане..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Неуспех при инсталирането на програмата за начално." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Променяне на конфигурацията..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Не мога да преместя syslinux файловете в \"%s\": %s. Може би \"%s\" не е " +"Убунту имидж?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Създаване на запазващ файл..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Създаване на ext2 файлова система в запазващия файл..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Завършване…" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Записване на образа..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Образът не може да се запише (%s) на устройството (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Премахване на файлове..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Премахване на файлове..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Копиране на файлове..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 сумите не съвпадат." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Инсталиране на програмата за начално зареждане..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Неуспех при инсталирането на програмата за начално." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Не може да се прочете от %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Сумите не съвпадат. Повторен опит?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Сумите не съвпадат." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Инсталацията е неуспешна" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Инсталацията е неуспешна. Моля вижте ~/.usbcreator.log за повече " +"информация.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Инсталацията завърши" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Изтрий диск" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Инсталацията е завършена. Сега можете да стартирате други компютри с помощта " +"на тази флаш памет." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Диск:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Съхранени в резервирано допълнително място" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "За да продължите, моля изпълнете тази програма като администратор." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Необходими са права на администратор." + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Възникна необработено изключение:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Грешка" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Моля, поставете CD или изберете 'Друг'..." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 МБ" + +#~ msgid "Cancel" +#~ msgstr "Отказване" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Направи USB стартиращ диск" + +#~ msgid "Format" +#~ msgstr "Форматиране" diff --git a/po/bn.po b/po/bn.po new file mode 100644 index 0000000..990b7af --- /dev/null +++ b/po/bn.po @@ -0,0 +1,508 @@ +# Bengali translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-09 11:58+0000\n" +"Last-Translator: shababhsiddique \n" +"Language-Team: Bengali \n" +"Language: bn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "বুটলোডার ইনস্টল করুন" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "সিস্টেম পলিসি বুটলোডার ইন্সটল প্রতিরোধ করে" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "ড্রাইভ ফরম্যাট করুন" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "সিস্টেম পলিসি ড্রাইভ ফরম্যাট করা প্রতিরোধ করে" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "ড্রাইভ ফরম্যাট করুন" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "ড্রাইভ মাউন্ট করুন" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "ইনস্টল করা হচ্ছে" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "ইনস্টলেশন ব্যর্থ।" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "শুরু করা হচ্ছে" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "ইনস্টল বন্ধ করা হবে?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "আপনি সত্যিই কি ইনস্টলেশন বন্ধ করতে চান?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "সোর্স ডিস্ক এর ইমেজ (.iso) অথবা সিডি" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "ড্রাইভ ফরম্যাট করুন" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "ইনস্টল করা শেষ" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "ইমেজ" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "সাইজ" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "ডিভাইস" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "লেবেল" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "ধারণক্ষমতা" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "ফাঁকা জায়গা" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "শুরু করা হচ্ছে..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% সম্পন্ন" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "সোর্স ডিস্ক এর ইমেজ (.iso) অথবা সিডি" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "অন্যান্য..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "প্রস্থান" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "স্টার্টআপ ডিস্ক তৈরী করো" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "বাতিল (&C)" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "ইনস্টলেশন সম্পূর্ণ হয়েছে" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "ইনস্টলেশন ব্যর্থ" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "সকল" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "স্টার্টআপ ডিস্ক তৈরী করো" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "\"%s\" এক্সেটেন্সন টি সাপোর্ট দেয়া সম্ভব নয়" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"ইমেজ রাইট করবার মত ফ্রি স্পেস নেই:\n" +"%s\n" +"\n" +"(%d এম বি) > %s (%d এম বি)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "বুটলোডার ইনস্টল করা হচ্ছে" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "বুটলোডার ইনস্টল ব্যার্থ হয়েছে" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "কনফিগারেশন সম্পাদনা করা হচ্ছে" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "ফাইল মুছে ফেলা হচ্ছে" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "ফাইল মুছে ফেলা হচ্ছে" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "ফাইলসমূহ কপি করা হচ্ছে..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "বুটলোডার ইনস্টল করা হচ্ছে" + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "বুটলোডার ইনস্টল ব্যার্থ হয়েছে" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "চেকসাম মিলছে না। পুন:?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "চেকসাম মিলছে না।" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "ইনস্টলেশন প্রক্রিয়া ব্যর্থ হয়েছে" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "ইনস্টল করা শেষ" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "ত্রুটি" + +#~ msgid "0.0 MB" +#~ msgstr "০.০ মেগাবাইট" + +#~ msgid "Cancel" +#~ msgstr "বাতিল" diff --git a/po/bs.po b/po/bs.po new file mode 100644 index 0000000..a3b30a7 --- /dev/null +++ b/po/bs.po @@ -0,0 +1,500 @@ +# Bosnian translation for usb-creator +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-02-08 05:18+0000\n" +"Last-Translator: Miro Glavić \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatiraj uređaj" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Montiraj uređaj" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Instaliranje" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Instalacija neuspjela." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Pokretanje" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Probaj ponovo?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Napusti instalaciju?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalacija Završena" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Slika" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OS Verzija" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Veličina" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Uređaj" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Oznaka" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapacitet" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Slobodan Prostor" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Pokretanje..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Drugi..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Koliko:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Napusti" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Poništi" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalacija završena" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Instalacija neuspjela" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Sve" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Modificiranje konfiguracije..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Uklanjanje datoteka..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Uklanjanje datoteka..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kopiranje datoteka..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Nemoguće čitati sa %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Instalacija Neuspjela" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalacija Završena" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Upotrijebi disk:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Neophodne administratorske privilegije" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "Greška" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Poništi" diff --git a/po/ca.po b/po/ca.po new file mode 100644 index 0000000..982c362 --- /dev/null +++ b/po/ca.po @@ -0,0 +1,543 @@ +# Catalan translations for usb-creator package +# Traduccions al català del paquet «usb-creator». +# Copyright (C) 2009 THE usb-creator'S COPYRIGHT HOLDER +# This file is distributed under the same license as the usb-creator package. +# David Planella , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-21 22:10+0000\n" +"Last-Translator: David Planella \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Instaŀla el carregador d'arrencada" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Les normes del sistema impedeixen instaŀlar el carregador d'arrencada" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formata el dispositiu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Les normes del sistema impedeixen formatar el dispositiu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Crea una imatge del dispositiu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"Les normes del sistema impedeixen escriure una imatge de disc al dispositiu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Munta un dispositiu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Les normes del sistema impedeixen el muntatge" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Creador de discos d'arrencada" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Creeu un disc d'arrencada a partir d'un CD o imatge de disc" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "S'està instal·lant" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "La instal·lació ha fallat." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Aquest dispositiu no és prou gran per a contenir aquesta imatge." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "No hi ha prou espai lliure per a aquesta imatge." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Imatges de CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Imatges de disc" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "S'està iniciant" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"Primer heu de seleccionar la font de la imatge i el dispositiu de destinació." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Ha finalitzat la instaŀlació. Ara podeu reiniciar l'ordinador amb aquest " +"dispositiu inserit per a provar o instaŀlar l'Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Voleu tornar-ho a intentar?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Voleu sortir de la instal·lació?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Segur que voleu sortir de la instal·lació?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Segur que voleu esborrar tot el disc?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Per a provar o instal·lar l'Ubuntu des d'un disc extraïble, cal configurar-" +"lo com a disc d'arrencada." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Imatge de disc (.iso) o CD d'origen:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Crea una imatge del dispositiu" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "S'ha completat la instal·lació" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Unitat de CD/imatge" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Imatge" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Versió del SO" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Mida" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "S'està acabant..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Esborra el disc" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Dispositiu" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etiqueta" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacitat" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Espai lliure" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "S'està iniciant..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% completat (resten %dm %ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% completat" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Ha finalitzat la instaŀlació. Ara podeu reiniciar l'ordinador amb aquest " +"dispositiu inserit per a provar o instaŀlar l'Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Per a provar o instal·lar l'Ubuntu des d'un disc extraïble, cal configurar-" +"lo com a disc d'arrencada." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Imatge de disc (.iso) o CD d'origen:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Altre..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Disc extraïble a utilitzar:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "En arrencar des d'aquest disc, els documents i la configuració:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Emmagatzemat a l'espai reservat" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Quant:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Es descartaran en apagar, a no ser que els deseu en un altre lloc" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Surt" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Crea un disc d'arrencada" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Cancel·la" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "S'ha completat la instal·lació" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Ha fallat la instal·lació" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Tots" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Crea un disc d'arrencada" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "No s'admet l'ús de l'extensió «%s»" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"S'ha produït una excepció no controlada:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"No hi ha prou espai per a escriure la imatge:\n" +"%s\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "S'està instaŀlant el carregador d'arrencada..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Ha fallat la instaŀlació del carregador d'arrencada." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "S'està modificant la configuració..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"No s'han pogut moure els fitxers syslinux de «%s»: %s. Pot ser que «%s» no " +"sigui una imatge de l'Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "S'està creant un arxiu de dades permanents..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" +"S'està creant un sistema de fitxers ext2 al fitxer de dades permanents..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "S'està acabant..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "S'està escrivint la imatge del disc..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "No s'ha pogut escriure la imatge de disc (%s) al dispositiu (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "S'estan eliminant els fitxers..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "S'estan eliminant els fitxers..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "S'estan copiant els fitxers..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Les sumes de verificació md5 no coincideixen." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "S'està instaŀlant el carregador d'arrencada..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Ha fallat la instaŀlació del carregador d'arrencada." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "No s'ha pogut llegir de %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Les sumes de verificació no coincideixen. Voleu tornar-ho a intentar?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Les sumes de verificació no coincideixen." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Ha fallat la instal·lació" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"La instal·lació ha fallat. Vegeu el fitxer ~/.usbcreator.log per a obtenir " +"més informació.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "S'ha completat la instal·lació" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Esborra el disc" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Ha finalitzat la instaŀlació. Ara podeu executar l'Ubuntu en altres " +"ordinadors engegant-los amb aquesta unitat inserida." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disc a utilitzar:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Es desaran en un espai reservat addicional" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Executeu aquest programa com a administrador per a continuar." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Calen privilegis d'administrador" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"S'ha produït una excepció no controlada:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Error" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Inseriu un CD o seleccioneu «Altre...»." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Canceŀla" + +#~ msgid "Format" +#~ msgstr "Formata" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Creació d'un disc d'arrencada USB" diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 0000000..901fdef --- /dev/null +++ b/po/cs.po @@ -0,0 +1,533 @@ +# Czech translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 06:09+0000\n" +"Last-Translator: Vojtěch Trefný \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Nainstalovat zavaděč" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Zařízení je chráněno proti instalaci zavaděče" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Naformátovat zařízení" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Zařízení je chráněno proti formátování" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Vytvořit obraz zařízení" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Zařízení je chráněno proti zápisu obrazu disku" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Připojit zařízení" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Zařízení je chráněno proti připojení" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Tvůrce spouštěcího disku" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Vytvořit spouštěcí disk pomocí CD nebo obrazu disku" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Instalace" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Instalace selhala." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Pro tento obraz není na zařízení dostatek místa." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Pro tento obraz není dostatek volného místa." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Obrazy CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Obrazy disků" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Spouštění" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Nejprve musíte zvolit zdrojový obraz a cílové zařízení." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Instalace byla dokončena. Pro instalaci či vyzkoušení Ubuntu ponechte tento " +"disk připojený a restartujte počítač." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Opakovat?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Ukončit instalaci?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Opravdu chcete nyní přerušit instalaci?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Pro vyzkoušení či instalaci Ubuntu z výměnného disku musí být tento disk " +"nastaven jako spouštěcí." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Zdrojový obraz disku (.iso) nebo CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Vytvořit obraz zařízení" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalace dokončena" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD mechanika/Obraz" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Obraz" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Verze OS" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Velikost" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Zařízení" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Jmenovka" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapacita" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Volné místo" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Spouští se..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% dokončeno (zbývá %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% dokončeno" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Instalace byla dokončena. Pro instalaci či vyzkoušení Ubuntu ponechte tento " +"disk připojený a restartujte počítač." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Pro vyzkoušení či instalaci Ubuntu z výměnného disku musí být tento disk " +"nastaven jako spouštěcí." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Zdrojový obraz disku (.iso) nebo CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Další..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Použitý výměnný disk:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Pokud budete pracovat s tímto diskem, data a nastavení budou:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "uložena na vyhrazeném místě" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Kolik:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "po vypnutí ztracena, pokud je neuložíte jinam" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Ukončit" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Vytvořit spouštěcí disk" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Zrušit" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalace dokončena" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Instalace selhala" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Vše" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Vytvořit spouštěcí disk" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Rozšíření \"%s\" není podporováno." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Nastala nezachycená výjimka:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Nedostatečné místo pro zápis obrazu:\n" +"%s\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Instaluje se zavaděč..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Instalace zavaděče selhala." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Úprava konfigurace..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Nelze přesunout systémové soubory Linuxu do \"%s\": %s. Je možné, že soubor " +"\"%s\" není obraz disku Ubuntu." + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Vytváří se trvalý soubor..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Vytváří se souborový systém ext2 v souboru..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Zapisuje se obraz disku..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Obraz disku (%s) nelze zapsat na zařízení (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Odstraňují se soubory..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Odstraňují se soubory..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kopírují se soubory..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Kontrolní součty md5 nesouhlasí." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Instaluje se zavaděč..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Instalace zavaděče selhala." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Nelze číst z %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Kontrolní součty nesouhlasí. Opakovat?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Kontrolní součty nesouhlasí." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Instalace selhala" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Instalace selhala. Více informací naleznete v souboru ~/.usbcreator.log.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalace dokončena" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Instalace byla dokončena. Nyní lze spustit Ubuntu na jiných počítačích s " +"pomocí tohoto zařízení." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Použitý disk:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "uložena na speciálně vytvořeném místě" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Pro pokračování spusťte tento program jako administrátor." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Jsou požadována oprávnění administrátora." + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Došlo neošetřené výjimce:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Chyba" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Prosím vložte CD nebo zvolte \"Další...\"." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Zrušit" + +#~ msgid "Format" +#~ msgstr "Formátovat" diff --git a/po/csb.po b/po/csb.po new file mode 100644 index 0000000..dc91b62 --- /dev/null +++ b/po/csb.po @@ -0,0 +1,534 @@ +# Kashubian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-18 06:41+0000\n" +"Last-Translator: Mark Kwidzińsczi \n" +"Language-Team: Kashubian \n" +"Language: csb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Instalacëjô ladowny programë" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Systemòwô pòlitika blokùjë mòżnotã instalacëji ladowny programë" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Fòrmatowanié ùrządzenia" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Systemòwô pòlitika blokùjë mòżnotã fòrmatowniô negò ùrządzenia" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Zapisëwanié òbrôzu na ùrządzenié" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Systemòwô pòlitika blokùjë mòżnotã zapisëwaniô òbrôzu na ùrządzenié" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Mòntowanié ùrządzenia" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Systemòwô pòlitika blokùjë mòżnotã mòntowaniô" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Asystenta zrëszeniowégò diskù" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Ùsôdzë startowi disk brëkùjąc òbrôzu CD" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Instalacëjô" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Instalacëjô nie darzëła sã." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Ùrządzenié ni ma dosc placu, abë pòmieszczëc òbrôz." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Felënk wòlnegò placu dlô negò òbrôzu." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Òbrôzë CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Òbrôzë diskù" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Zrëszanié" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Nót je wprzód wëbrac zdrojowi òbrôz ë ùrządzenié do zôpisu." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Instalacëjô zakùńczonô. Mòże terô zrëszëc kòmpùtr znowa z przëłączonym " +"ùrządzeniém, abë wëpróbòwac abò winstalowac Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Znowic próbã?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Zakùńczëc instalacëjã?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Chcesz terô zakùńczëc instalacëjã?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Jes gwës tegò, że chcesz rëmnąc całowny disk?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Abë wëpróbòwac, abò winstalowac, Ubuntu z przenosnegò diskù, je nót gò " +"nastawic jakno startowi." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Òbrôz zdrojowégò diskù (.iso) abò CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Zapisëwanié òbrôzu na ùrządzenié" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalacëjô zakùńczonô" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Nëk CD/Òbrôz" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Òbrôz" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Wersëjô systemë" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Miara" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Kùńczenié..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Rëmôj disk" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Ùrządzenié" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Znakòwnik" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Plac na diskù" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Wòlny plac" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Zrëszanié...." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% ùkùńczoné (%dm%ss òstało)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% ùkùńczoné" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Instalacëjô zakùńczonô. Mòże terô zrëszëc kòmpùtr znowa z przëłączonym " +"ùrządzeniém, abë wëpróbòwac abò winstalowac Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Abë wëpróbòwac, abò winstalowac, Ubuntu z przenosnegò diskù, je nót gò " +"nastawic jakno startowi." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Òbrôz zdrojowégò diskù (.iso) abò CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Jinszé" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Wëbierk przenosnegò diskù:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Przë zrëszaniu z negò diskù dokùmentë ë nastôwë bãdą:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Trzëmóné w rezerwòwónym placu" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Miara:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Pòcësniãté prz zakùńczeniu, mést, że òstaną zapisóné na jinszim placu" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Zakùńczë" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Ùsôdzë zrëszëniowi disk" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "Ò&przestóń" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalacëjô zakùńczonô" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Felënk instalacëji" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Wszëtczé" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Ùsôdzë zrëszëniowi disk" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Rozszerzenié \"%s\" nie je wspieróné." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Pòkôzôł sã nieprzechwëcony wëjimk:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Felëje dosc wòlnegò placu do zapisaniô òbrôzu:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Instalacëjô ladowny programë..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Instalacëjô ladowny programë nie darzëła sã." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Mòdifikacëjô kònfigùracëji..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Ni mòże przesënąc systemòwich lopków Linuksa w \"%s\": %s. Mòże \"%s\" nie " +"je òbrôzã Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Ùsôdzanié stałegò lopka..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Ùsôdzanié systemë lopków ext2 w stałim lopkù..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Kùńczenié..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Zapisëwanié òbrôzu diskù...." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Nie dało sã zapisac òbrôzu diskù (%s) w ùrządzeniu (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Rëmanié lopków..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Rëmanié lopków..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kòpérowanié lopków..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Zesëmòłania md5 nie są równé." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Instalacëjô ladowny programë..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Instalacëjô ladowny programë nie darzëła sã." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Nie szło czëtac z %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Kòntrolné zesëmòwania nie są równé. Spróbòwac znowa?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Kòntrolné zesëmòwania nie są równé." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Fela instalacëji" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Instalacëjô nie darzëła sã. Zdrzë w lopkù ~/.usbcreator.log za wicy " +"detalama.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalacëjô zakùńczonô" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Rëmôj disk" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Instalacëjô zakùńczonô. Mòże terô zrëszëc Ubuntu na jinszich kòmpùtrach przë " +"zrëszaniu systemë z tim wëtkniãtim nëkã." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disk do ùżëcô:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Trzëmóné w rezerwòwónym dodôwnym placu" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Proszã zrëszëc" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Nót je sprôwniczëch prawów" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Pòkôzôł sã nieòbsłëżony wëjimk:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Fela" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Proszã włożëc CD abò wëbrac 'Jinszé...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Òprzestóń" diff --git a/po/cv.po b/po/cv.po new file mode 100644 index 0000000..752207d --- /dev/null +++ b/po/cv.po @@ -0,0 +1,499 @@ +# Chuvash translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-12-18 04:19+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chuvash \n" +"Language: cv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Lartassi" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Lartsa pĕtertĕmĕr" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OS verssĕ" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Pysăkăšĕ" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Hatĕr" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Pallă" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Aslăš" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Părahăşla" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Lartsa pĕtertĕmĕr" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Lartsa pĕtertĕmĕr" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "Jănăš" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MP" + +#~ msgid "Cancel" +#~ msgstr "Părahăşla" diff --git a/po/da.po b/po/da.po new file mode 100644 index 0000000..f92e211 --- /dev/null +++ b/po/da.po @@ -0,0 +1,536 @@ +# Danish translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# Mads Bille Lundby , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-26 12:02+0000\n" +"Last-Translator: Ask Hjorth Larsen \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Installér opstartsindlæseren" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Systempolitik forhindrer installation af opstartsindlæser" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatér enheden" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "System" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Opret aftrykskopi af enheden" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Systempolitik forhindrer skrivning af diskaftryk til denne enhed" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Montér en enhed" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Systempolitik forhindrer montering" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Oprettelse af startdisk" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Opret en startdisk ved hjælp af en cd eller et diskaftryk" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Installerer" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Fejl under installationen." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Denne enhed er ikke stor nok til at rumme dette aftryk." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Der er ikke nok fri plads til dette aftryk." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Cd-aftryk" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Diskaftryk" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Starter op" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Du skal først vælge både kildeaftryk og destinationsenhed." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Installationen er færdig. Du kan nu genstarte din computer med denne enhed " +"indsat for at afprøve eller installere Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Prøv igen?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Afslut installationen?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Er du sikker på, at du vil afslutte installationen nu?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Er du sikker på at du vil slette hele disken?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"For at prøve eller installere Ubuntu fra en flytbar disk, skal den være " +"oprettet som en startdisk." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Kildediskaftryk (.iso) eller cd:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Opret aftrykskopi af enheden" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Installationen er fuldført" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Cd-drev/aftryk" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Aftryk" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OS-version" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Størrelse" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Færdiggør..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Slet disken" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Enhed" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Mærkat" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapacitet" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Fri plads" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Starter..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% færdig (%dm%ss tilbage)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% færdig" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Installationen er færdig. Du kan nu genstarte din computer med denne enhed " +"indsat for at afprøve eller installere Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"For at prøve eller installere Ubuntu fra en flytbar disk, skal den være " +"oprettet som en startdisk." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Kildediskaftryk (.iso) eller cd:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Andet..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Flytbar disk der skal benyttes:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Ved opstart fra denne disk, vil dokumenter og opsætning blive:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Gemt i reserveret område" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Hvor meget:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Kasseres ved lukning, medmindre du gemmer dem andre steder" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Afslut" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Opret opstartsdisk" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Annullér" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Installationen er færdig" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Fejl under installationen" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Alle" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Opret opstartsdisk" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Udvidelsen \"%s\" understøttes ikke." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Der opstod en undtagelse, der ikke blev håndteret:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Der er ikke tilstrækkelig plads til at skrive aftrykket:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Installerer opstartsindlæseren..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Fejl under installation af opstartsindlæser." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Ændrer konfiguration..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Kunne ikke flytte syslinux filer i \"%s\": %s. Måske er \"%s\" ikke et " +"Ubuntu-aftryk?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Opretter en bevaringsfil..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Opretter et ext2-filsystem i bevaringsfilen..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Færdiggør..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Skriver diskaftryk..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Kunne ikke skrive diskaftrykket (%s) til enheden (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Fjerner filer..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Fjerner filer..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kopierer filer..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5-tjeksummer er ikke ens." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Installerer opstartsindlæseren..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Fejl under installation af opstartsindlæser." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Kunne ikke læse fra %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Tjeksummer er ikke ens. Prøv igen?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Tjeksummer er ikke ens." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Installationen mislykkedes" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Fejl under installation. Se venligst flere detaljer i ~/.usbcreator.log.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Installationen er fuldført" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Slet disken" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Installationen er færdig. Du kan nu køre Ubuntu på andre computere ved at " +"starte dem op med dette drev indsat." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disk som skal bruges:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Gemt på reserveret ekstra plads" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Kør venligst dette program som en administrator for at fortsætte." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Administratorrettigheder er påkrævet" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Der opstod en uhåndteret undtagelse:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Fejl" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Indsæt venligst en cd eller vælg \"Andet...\"." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Annullér" + +#~ msgid "Format" +#~ msgstr "Formatér" diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..9584998 --- /dev/null +++ b/po/de.po @@ -0,0 +1,549 @@ +# German translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-18 09:31+0000\n" +"Last-Translator: Daniel Schury \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Bootloader installieren" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Systemrichtlinien verbieten das Installieren des Bootloaders" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Das Laufwerk formatieren" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Systemrichtlinien verbieten das Formatieren des Datenträgers" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Speicherabbild erstellen" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"Systemrichtlinien verbieten das Schreiben eines Datenträger-Abbildes auf " +"dieses Medium" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Einen Datenträger einhängen" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Systemrichtlinien verbieten das Einhängen" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Startmedienersteller" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Mithilfe eines Abbilds oder einer CD ein Startmedium erstellen" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Installation wird durchgeführt" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Installation fehlgeschlagen." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Der Datenträger ist nicht groß genug, um das Abbild zu speichern." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Es ist nicht genügend freier Speicherplatz für das Abbild vorhanden." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD-Abbilder" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Datenträger-Abbilder" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Wird gestartet" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"Sie müssen zuerst sowohl die Quelldatei als auch das Ziellaufwerk wählen." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Die Installation ist beendet. Um Ubuntu auszuprobieren oder zu installieren, " +"starten Sie den Rechner neu, während der Datenträger eingelegt ist." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Erneut versuchen?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Installation beenden?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Möchten Sie die Installation jetzt wirklich beenden?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Möchten Sie wirklich den gesamten Datenträger löschen?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Um Ubuntu von einem Wechseldatenträger aus auszuprobieren oder zu " +"installieren, müssen Sie diesen als Startlaufwerk einrichten." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Quellabbilddatei (*.iso) oder CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Speicherabbild erstellen" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Installation abgeschlossen" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-Laufwerk/-Abbild" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Abbild" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OS-Version" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Größe" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Fertig stellen …" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Datenträger wird gelöscht" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Datenträger" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Beschriftung" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapazität" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Freier Speicherplatz" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Starte …" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% fertig (%dm%ss ausstehend)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% fertiggestellt" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Die Installation ist beendet. Um Ubuntu auszuprobieren oder zu installieren, " +"starten Sie den Rechner neu, während der Datenträger eingelegt ist." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Um Ubuntu von einem Wechseldatenträger aus auszuprobieren oder zu " +"installieren, müssen Sie diesen als Startlaufwerk einrichten." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Quellabbilddatei (*.iso) oder CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Weitere …" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Zu verwendender Wechseldatenträger:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" +"Wenn Sie von diesem Datenträger starten, werden Dokumente und Einstellungen:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "In reserviertem Bereich gespeichert" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Größe:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" +"Beim Herunterfahren verwerfen, falls sie nicht an einem anderen Ort " +"gespeichert werden." + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Schließen" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Erzeuge Startdatenträger" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Abbrechen" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Installation beendet" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Installation fehlgeschlagen" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Alles" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Startmedium erstellen" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Die Erweiterung »%s« wird nicht unterstützt." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Eine unbehandelte Ausnahme wurde ausgelöst:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Nicht genügend freier Speicher zum Schreiben des Abbildes:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Bootloader wird installiert …" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Installation des Bootloaders fehlgeschlagen." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Konfiguration wird angepasst …" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Konnte syslinux-Dateien nicht nach »%s« verschieben: %s. Eventuell ist »%s« " +"kein Ubuntu-Abbild?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Persistente Datei wird erstellt …" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "ext2-Dateisystem wird in der persistenten Datei erstellt …" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Fertig stellen …" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Datenträger-Abbild wird geschrieben …" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" +"Datenträger-Abbild (%s) konnte nicht auf den Datenträger (%s) geschrieben " +"werden." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Dateien werden entfernt ..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Dateien werden entfernt ..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Dateien werden kopiert …" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5-Prüfsummen stimmen nicht überein." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Bootloader wird installiert …" + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Installation des Bootloaders fehlgeschlagen." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Von %s konnte nicht gelesen werden" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Die Prüfsummen stimmen nicht überein. Erneut versuchen?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Die Prüfsummen stimmen nicht überein." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Installation fehlgeschlagen" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Die Installation ist fehlgeschlagen. Weitere Details finden Sie in der Datei " +"~/.usbcreator.log.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Installation abgeschlossen" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Datenträger wird gelöscht" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Die Installation ist abgeschlossen. Sie können Ubuntu nun auf anderen " +"Rechnern ausführen, indem Sie diese mit diesem Datenträger starten." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Zu verwendender Datenträger:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "In reservierten Extrabereich gespeichert" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" +"Um fortzufahren, führen Sie das Programm bitte als Systemverwalter aus." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Systemverwaltungsrechte werden benötigt." + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Eine unbehandelte Ausnahme ist aufgetreten:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Fehler" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Bitte legen Sie eine CD ein oder wählen Sie »Weitere …«." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Abbrechen" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "USB-Startmedium erstellen" + +#~ msgid "Format" +#~ msgstr "Formatieren" diff --git a/po/dv.po b/po/dv.po new file mode 100644 index 0000000..1cd081f --- /dev/null +++ b/po/dv.po @@ -0,0 +1,496 @@ +# Divehi translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-12-13 08:01+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Divehi \n" +"Language: dv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "ބޫޓްލޯޑަރ އަޅާ" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "ބޫޓްލޯޑަރ އެޅުމަށް ސިސްޓަމް ޕޮލިސީ އެބަހުރަސްއަޅާ" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "ޑިވައިސްގެ ހުރިހާ ޑޭޓާތައް އެއްކޮށް ފުހެލާ" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "ޑިވައިސްގެ ޑޭޓާތައް ފުހެލުމަށް ސިސްޓަމް ޕޮލިސީ އެބަހުރަސްއަޅާ" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "ޑިވައިސްގެ އިމޭޖެއްނަގާ" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "މިޑިވައިސްއަށް ޑިސްކް އިމޭޖް އެޅުމަށް ސިސްޓަމް ޕޮލިސީ އެބަހުރަސްއަޅާ" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "ޑިވައިސް މައުންޓްކުރޭ" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "މައުންޓް ކުރުމަށް ސިސްޓަމް ޕޮލިސީ އެބަހުރަސްއަޅާ" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "ހުލުވެމުންދަނީ" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "ޑިވައިސްގެ އިމޭޖެއްނަގާ" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "ހުސް ޖާގަ" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "ހުޅުވެމުން ދަނީ ..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% ފުރިހަމަވެފައި" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "ރިސާވްޑް ޖާގައެއްގައި ރައްކާކުރެވިފައި" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "ކިހާ ވަރެއް:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "ވައްތަރު \"%s\" ގަބޫލެއް ނުކުރޭ." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "ބޫޓްލޯޑަރ އެޅެނީ..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "ބޫޓްލޯޑަރއެއް ނޭޅުނު." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "ކޮންފިގަރޭސަން ބަދަލްކުރަނީ...." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "ނިންމުންތަކާއިބެހޭ ފައިލް ތައްޔާރުކުރަނީ..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "ފައިލްތައް ފޮހެވެމުންދަނީ ..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "ފައިލްތައް ފޮހެވެމުންދަނީ ..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "ބޫޓްލޯޑަރ އެޅެނީ..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "ބޫޓްލޯޑަރއެއް ނޭޅުނު." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "މައްސަލަ" diff --git a/po/ee.po b/po/ee.po new file mode 100644 index 0000000..baf9f6b --- /dev/null +++ b/po/ee.po @@ -0,0 +1,492 @@ +# Ewe translation for usb-creator +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-02-16 10:28+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Ewe \n" +"Language: ee\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/el.po b/po/el.po new file mode 100644 index 0000000..d379678 --- /dev/null +++ b/po/el.po @@ -0,0 +1,552 @@ +# Greek translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# Fotis Tsamis , 2010. +# Sterios Prosiniklis , 2010. +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-27 12:04+0000\n" +"Last-Translator: sterios prosiniklis \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Εγκατάσταση του διαχειριστή εκκίνησης" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" +"Η πολιτική του συστήματος αποτρέπει την εγκατάσταση του διαχειριστή εκκίνησης" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Διαμόρφωση της συσκευής" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Η πολιτική του συστήματος αποτρέπει την διαμόρφωση αυτής της συσκευής" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Δημιουργία εικόνας στην συσκευή" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"Η πολιτική του συστήματος αποτρέπει την εγγραφή μιας εικόνας δίσκου σε αυτή " +"τη συσκευή" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Προσάρτηση μιας συσκευής" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Η πολιτική του συστήματος αποτρέπει την προσάρτηση" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Δημιουργός δίσκου εκκίνησης" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" +"Δημιουργήστε ένα δίσκο εκκίνησης χρησιμοποιώντας ένα CD ή ένα αρχείο εικόνας " +"δίσκου" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Εγκατάσταση" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Η εγκατάσταση απέτυχε." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Η συσκευή δεν είναι αρκετά μεγάλη για να χωρέσει αυτή την εικόνα." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Δεν υπάρχει αρκετός ελεύθερος χώρος για αυτή την εικόνα." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Αρχεία εικόνας CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Αρχεία εικόνας δίσκου" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Γίνεται εκκίνηση" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"Πρέπει πρώτα να επιλέξετε και την πηγαία εικόνα και τη συσκευή προορισμού." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Η εγκατάσταση ολοκληρώθηκε. Μπορείτε να επανεκκινήσετε τον υπολογιστή σας " +"με αυτή τη συσκευή συνδεδεμένη για να δοκιμάσετε ή να εγκαταστήσετε το " +"Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Προσπάθεια ξανά;" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Διακοπή της εγκατάστασης;" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Θέλετε πραγματικά να εγκαταλείψετε την εγκατάσταση;" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Σίγουρα θέλετε να διαγράψετε όλα τα περιεχόμενα του δίσκου;" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Για να δοκιμάσετε ή να εγκαταστήσετε το Ubuntu από έναν αφαιρούμενο δίσκο, " +"πρέπει να οριστεί σαν ένας δίσκος εκκίνησης." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Τοποθεσία αρχείου εικόνας (.iso) ή CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Δημιουργία εικόνας στην συσκευή" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Η εγκατάσταση ολοκληρώθηκε" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Οδηγός CD/Εικόνα" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Εικόνα" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Έκδοση λειτουργικού" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Μέγεθος" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Ολοκλήρωση..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Διαγραφή δίσκου" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Συσκευή" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Ετικέτα" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Χωρητικότητα" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Ελεύθερος χώρος" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Εκκίνηση..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% ολοκληρώθηκε (απομένουν %d λεπτά και %s δευτερόλεπτα)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% ολοκληρώθηκε" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Η εγκατάσταση ολοκληρώθηκε. Μπορείτε να επανεκκινήσετε τον υπολογιστή σας " +"με αυτή τη συσκευή συνδεδεμένη για να δοκιμάσετε ή να εγκαταστήσετε το " +"Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Για να δοκιμάσετε ή να εγκαταστήσετε το Ubuntu από έναν αφαιρούμενο δίσκο, " +"πρέπει να οριστεί σαν ένας δίσκος εκκίνησης." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Τοποθεσία αρχείου εικόνας (.iso) ή CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Άλλο..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Αφαιρούμενο μέσο για χρήση:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" +"Όταν θα γίνεται εκκίνηση από αυτόν τον δίσκο, τα έγγραφα και οι ρυθμίσεις θα:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Αποθηκεύονται σε δεσμευμένο χώρο" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Μέγεθος:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" +"Απορρίπτονται κατά τον τερματισμό, εκτός αν τα αποθηκεύσετε κάπου αλλού" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Έξοδος" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Δημιουργία δίσκου εκκίνησης" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Ακύρωση" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Η εγκατάσταση ολοκληρώθηκε" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Η εγκατάσταση απέτυχε" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Όλα" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Δημιουργία δίσκου εκκίνησης" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Η επέκταση \"%s\" δεν υποστηρίζεται." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Εμφανίστηκε μια εξαίρεση που δεν επιλύθηκε:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Ανεπαρκής ελεύθερος χώρος για εγγραφή της εικόνας:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Εγκατάσταση του διαχειριστή εκκίνησης..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Αδυναμία εγκατάστασης του διαχειριστή εκκίνησης." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Επεξεργασία ρυθμίσεων..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Η μεταφορά των αρχείων syslinux στον \"%s\": %s είναι αδύνατη. Μήπως το \"%s" +"\" δεν είναι μια εικόνα του Ubuntu;" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Δημιουργία αρχείου μόνιμης αποθήκευσης..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Δημιουργία συστήματος αρχείων ext2 στο αρχείο μόνιμης αποθήκευσης..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Ολοκλήρωση..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Εγγραφή εικόνας δίσκου..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Αδυναμία εγγραφής της εικόνας δίσκου (%s) στη συσκευή (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Διαγραφή αρχείων..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Διαγραφή αρχείων..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Αντιγραφή αρχείων..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Τα αθροίσματα ελέγχου md5 δεν ταιριάζουν." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Εγκατάσταση του διαχειριστή εκκίνησης..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Αδυναμία εγκατάστασης του διαχειριστή εκκίνησης." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Αδυναμία ανάγνωσης από %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Τα αθροίσματα ελέγχου δεν ταιριάζουν. Νέα προσπάθεια;" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Τα αθροίσματα ελέγχου δεν ταιριάζουν." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Η εγκατάσταση απέτυχε" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Η εγκατάσταση απέτυχε. Παρακαλούμε δείτε το ~/.usbcreator.log για " +"περισσότερες λεπτομέρειες.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Η εγκατάσταση ολοκληρώθηκε" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Διαγραφή δίσκου" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Η εγκατάσταση ολοκληρώθηκε. Τώρα μπορείτε να εκτελέσετε το Ubuntu σε άλλους " +"υπολογιστές αν τους εκκινήσετε με αυτή τη συσκευή συνδεδεμένη." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Δίσκος που θα χρησιμοποιηθεί:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Αποθήκευση στον δεσμευμένο χώρο" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" +"Παρακαλούμε εκτελέστε αυτό το πρόγραμμα ως διαχειριστής για να συνεχίσετε." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Απαιτούνται προνόμια διαχειριστή" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Εμφανίστηκε μια εξαίρεση που δεν επιλύθηκε:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Σφάλμα" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Παρακαλούμε εισάγετε ένα CD ή επιλέξτε «Άλλο...»." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 ΜΒ" + +#~ msgid "Cancel" +#~ msgstr "Ακύρωση" + +#~ msgid "Format" +#~ msgstr "Διαμόρφωση" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Δημιουργία του δίσκου USB ως δίσκο εκκίνησης" diff --git a/po/en_AU.po b/po/en_AU.po new file mode 100644 index 0000000..09667d0 --- /dev/null +++ b/po/en_AU.po @@ -0,0 +1,531 @@ +# English (Australia) translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-06 00:41+0000\n" +"Last-Translator: Andrew Janke \n" +"Language-Team: English (Australia) \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Install the bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "System policy prevents installing the bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Format the device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "System policy prevents formatting this device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Image the device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "System policy prevents writing a disk image to this device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Mount a device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "System policy prevents mounting" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Startup Disk Creator" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Create a startup disk using a CD or disc image" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Installing" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Installation failed." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "The device is not large enough to hold this image." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "There is not enough free space for this image." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD Images" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Disk Images" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Starting up" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "You must select both source image and target device first." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Retry?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Quit the installation?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Do you really want to quit the installation now?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Source disc image (.iso) or CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Image the device" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Installation Complete" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-Drive/Image" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Image" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OS Version" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Size" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Device" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Label" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacity" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Free Space" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Starting up..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% complete (%dm%ss remaining)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% complete" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Source disc image (.iso) or CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Other..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Removable disk to use:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "When starting up from this disk, documents and settings will be:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Stored in reserved space" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "How much:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Discarded on shutdown, unless you save them elsewhere" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Quit" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Make startup disk" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Cancel" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Installation complete" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Installation failed" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "All" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Make Startup Disk" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "The extension \"%s\" is not supported." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"An uncaught exception was raised:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Installing the bootloader..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Failed to install the bootloader." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Modifying configuration..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Creating a persistence file..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Creating an ext2 filesystem in the persistence file..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Writing disk image..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Could not write the disk image (%s) to the device (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Removing files..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Removing files..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Copying files..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 checksums do not match." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Installing the bootloader..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Failed to install the bootloader." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Could not read from %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Checksums do not match. Retry?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Checksums do not match." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Installation Failed" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"The installation failed. Please see ~/.usbcreator.log for more details.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Installation Complete" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disk to use:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Stored in reserved extra space" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Please run this program as an administrator to continue." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Administrator privileges required" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"An unhandled exception occurred:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Error" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Please insert a CD or select 'Other...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Cancel" diff --git a/po/en_CA.po b/po/en_CA.po new file mode 100644 index 0000000..a84f0de --- /dev/null +++ b/po/en_CA.po @@ -0,0 +1,529 @@ +# English (Canada) translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-02-07 22:27+0000\n" +"Last-Translator: Paul Kishimoto \n" +"Language-Team: English (Canada) \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Install the bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "System policy prevents installing the bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Format the device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "System policy prevents formatting this device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Image the device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "System policy prevents writing a disk image to this device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Mount a device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "System policy prevents mounting" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Startup Disk Creator" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Create a startup disk using a CD or disc image" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Installing" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Installation failed." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "The device is not large enough to hold this image." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "There is not enough free space for this image." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD Images" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Disk Images" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Starting up" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "You must select both source image and target device first." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Retry?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Quit the installation?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Do you really want to quit the installation now?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Source disc image (.iso) or CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Image the device" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Installation Complete" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-Drive/Image" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Image" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OS Version" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Size" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Device" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Label" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacity" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Free Space" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Starting up..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% complete (%dm%ss remaining)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% complete" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Source disc image (.iso) or CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Other..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Removable disk to use:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "When starting up from this disk, documents and settings will be:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Stored in reserved space" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "How much:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Discarded on shutdown, unless you save them elsewhere" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Quit" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Make startup disk" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Cancel" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Installation complete" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Installation failed" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "All" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Make Startup Disk" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "The extension \"%s\" is not supported." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"An uncaught exception was raised:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Installing the bootloader..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Failed to install the bootloader." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Modifying configuration..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Creating a persistence file..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Creating an ext2 filesystem in the persistence file..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Writing disk image..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Could not write the disk image (%s) to the device (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Removing files..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Removing files..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Copying files..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 checksums do not match." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Installing the bootloader..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Failed to install the bootloader." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Could not read from %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Checksums do not match. Retry?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Checksums do not match." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Installation Failed" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"The installation failed. Please see ~/.usbcreator.log for more details.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Installation Complete" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disk to use:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Stored in reserved extra space" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Please run this program as an administrator to continue." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Administrator privileges required" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"An unhandled exception occurred:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Error" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Please insert a CD or select 'Other...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Cancel" diff --git a/po/en_GB.po b/po/en_GB.po new file mode 100644 index 0000000..1d9110b --- /dev/null +++ b/po/en_GB.po @@ -0,0 +1,539 @@ +# English (United Kingdom) translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 12:59+0000\n" +"Last-Translator: Chris Woollard \n" +"Language-Team: English (United Kingdom) \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Install the bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "System policy prevents installing the bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Device Format" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "System policy prevents formatting this device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Image the device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "System policy prevents you from writing a disk image to this device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Mount a device" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "System policy prevents you from mounting" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Startup Disk Creator" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Create a startup disk using a CD or disc image" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Installing" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Installation failed." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "The device is not large enough to hold this image." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "There is not enough free space for this image." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD Images" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Disk Images" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Starting up" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "You must select both source image and target device first." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Retry?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Quit the installation?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Do you really want to quit the installation now?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Are you sure you want to erase the entire disk?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"start-up disk." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Source disc image (.iso) or CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Image the device" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Installation Complete" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-Drive/Image" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Image" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OS Version" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Size" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Finishing..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Erase Disk" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Device" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Label" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacity" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Free Space" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Starting up..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% complete (%dm%ss remaining)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% complete" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"start-up disk." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Source disc image (.iso) or CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Other..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Removable disk to use:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "When starting up from this disk, documents and settings will be:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Stored in reserved space" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "How much:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Discarded on shutdown, unless you save them elsewhere" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Quit" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Make startup disk" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Cancel" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Installation complete" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Installation failed" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "All" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Make Startup Disk" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "The extension \"%s\" is not supported." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"An uncaught exception was raised:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Installing the bootloader..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Failed to install the bootloader." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Modifying configuration..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Creating a persistence file..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Creating an ext2 filesystem in the persistence file..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Finishing..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Writing disk image..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Could not write the disk image (%s) to the device (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Removing files..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Removing files..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Copying files..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 checksums do not match." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Installing the bootloader..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Failed to install the bootloader." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Could not read from %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Checksums do not match. Retry?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Checksums do not match." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Installation Failed" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"The installation failed. Please see ~/.usbcreator.log for more details.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Installation Complete" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Erase Disk" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disk to use:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Stored in reserved extra space" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Please run this program as an administrator to continue." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Administrator privileges required" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"An unhandled exception occurred:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Error" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Please insert a CD or select 'Other...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Cancel" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Make USB Startup Disk" diff --git a/po/eo.po b/po/eo.po new file mode 100644 index 0000000..fc1b91c --- /dev/null +++ b/po/eo.po @@ -0,0 +1,533 @@ +# Esperanto translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-23 20:25+0000\n" +"Last-Translator: Patrick (Petriko) Oudejans \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Instali la praŝargilon" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "La sistemaj principoj malpermesas instali la startoŝargilon." + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Strukturi aparaton" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "La sistema politiko malhelpas strukturi ĉi tiun aparaton" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Bildigi la aparaton" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "La sistema politiko malhelpas skribi diskobildo sur ĉi tiu aparato" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Surmeti aparaton" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "La sistema politiko malhelpas surmeton" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Kreilo de startdiskoj" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Krei startdiskon uzante lumdiskon aŭ diskbildon" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Instalanta" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Instalado fiaskis" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "La aparato ne estas sufiĉe granda por enhavi ĉi tiun bildon." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Ne estas sufiĉe vaka spaco por ĉi tiu bildo." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "KD bildoj" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "KD bildoj" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Ŝarĝanta" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Vi devas elekti kaj la bildofonton kaj la trafotan aparaton" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"La instalado estas kompleta. Vi devas restarti vian komputilon kun ĉi tiu " +"aparato konektita por provi aŭ instali Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Ĉu reklopodi?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Ĉu ĉesi la instaladon?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Ĉu vi certe volas ĉesi la instaladon nun?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Ĉu vi vere volas viŝi la tutan diskon?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Por provi aŭ instali Ubuntu-n de demetebla disko necesas agordi tiun ĉi " +"diskon kiel start-diskon." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Fonta KD aŭ bildo (.iso):" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Bildigi la aparaton" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalado kompletiĝis" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "KD" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Bildo" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Operaciuma versio" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Grando" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Finas..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Viŝi diskon" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Disponaĵo" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etikedo" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapacito" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Libera spaco" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Ŝarĝanta..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% kompleta (%dm%ss plurestanta)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% kompleta" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"La instalado estas kompleta. Vi devas restarti vian komputilon kun ĉi tiu " +"aparato konektita por provi aŭ instali Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Por provi aŭ instali Ubuntu-n de demetebla disko necesas agordi tiun ĉi " +"diskon kiel start-diskon." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Fonta KD aŭ bildo (.iso):" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Alia..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Demetebla disko uzota:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Kiam ekfuncianta el ĉi tiu disko, la dokumentoj kaj preferencoj estos:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Konservita en la rezervita spaco" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Kiom da:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Ne konservita dum elŝalto, krom se vi ĝin konservus aliloke" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Ĉesu" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Fari komencan diskon" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Rezignu" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalado kompletiĝis" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Instalado malsukcesis" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Ĉiuj" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Krei komencan diskon" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "La finaĵo \"%s\" ne estas subtenata." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Nekaptita escepto okazis:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Nesufiĉe vaka spaco por skribi la bildon:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Instalante la praŝarĝilon" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Fiaskis la praŝarĝila instalado" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Modifanta agordojn..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Mi ne povis movi la syslinux-dosierojn en\"%s\": %s. Eble \"%s\" ne estas " +"bajtvico de Ubuntu-disko." + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Kreado de konservebla dosiero..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Kreado de dosiersistemo de tipo \"eĉt2\" en la konservebla dosiero..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Finas..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Skribanta diskobildon" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Ne eblas skribi la diskobildon (%s) sur la aparato (%s)" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Foriganta dosierojn..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Foriganta dosierojn..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kopiante dosierojn..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "La sumo de konstato md5 ne koincidas." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Instalante la praŝarĝilon" + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Fiaskis la praŝarĝila instalado" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Ne eblas legi el %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "La sumo de konstato md5 ne koincidas. Ĉu reklopodi?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "La sumo de konstato ne koincidas." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Instalado malsukcesis" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Fiaskis la instalado. Bonvolu vidi ~/.usbcreator.log por pli da detaloj.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalado kompletiĝis" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Viŝi diskon" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"La instalado estas kompleta. Nun vi povas ruli Ubuntu en aliaj komputiloj, " +"komencante ilin pere de ĉi tiu disko enmetita." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Uzenda disko:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Konservita en aparta plia spaco." + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Ruli ĉi tiun programaron kiel administranton por daŭrigi." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Necesas la rajtoj de administranto" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Netraktita escepto okazis:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Eraro" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Bonvolu enmeti KD aŭ elekti \"Alia...\"" + +#~ msgid "0.0 MB" +#~ msgstr "0,0 MB" + +#~ msgid "Cancel" +#~ msgstr "Nuligi" diff --git a/po/es.po b/po/es.po new file mode 100644 index 0000000..9c12b2a --- /dev/null +++ b/po/es.po @@ -0,0 +1,538 @@ +# Spanish translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 06:28+0000\n" +"Last-Translator: Paco Molinero \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Instalar el gestor de arranque" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "La política del sistema impide instalar el gestor de arranque" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatear el dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "La política del sistema evita que se formatee este dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Crear imagen del dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"La política del sistema impide escribir imagen del disco al dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Montar un dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "La política del sistema impide el montaje" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Creador de discos de arranque" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Crear un disco de arranque usando un CD o una imagen de disco" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Instalando" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Instalación fallida." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "El dispositivo no es lo bastante grande para contener esta imagen." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "No hay suficiente espacio libre para esta imagen." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Imágenes de CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Imágenes de disco" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Iniciando" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"Primero debe seleccionar el origen de la imagen y el dispositivo de destino." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"La instalación se ha completado. Debe reiniciar su equipo con este " +"dispositivo insertado para probar o instalar Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "¿Reintentar?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "¿Salir de la instalación?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "¿Desea salir de la instalación?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "¿Está seguro de querer borrar el disco entero?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Para probar o instalar Ubuntu desde un disco extraíble, es necesario " +"establecerlo como disco de arranque." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "CD o imagen (.iso) de origen:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Crear imagen del dispositivo" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalación completa" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Unidad de CD/Imagen" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Imagen" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Versión del S.O." + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Tamaño" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Finalizando..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Borrar disco" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Dispositivo" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etiqueta" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacidad" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Espacio libre" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Iniciando..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% completado (faltan %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% completado" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"La instalación se ha completado. Debe reiniciar su equipo con este " +"dispositivo insertado para probar o instalar Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Para probar o instalar Ubuntu desde un disco extraíble, es necesario " +"establecerlo como disco de arranque." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "CD o imagen (.iso) de origen:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Otro..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Disco extraíble a usar:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Al iniciar desde el disco, los documentos y la configuración:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Almacenado en espacio reservado" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Espacio:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Se perderán al apagar a menos que los guarde en otro sitio" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Salir" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Crear un disco de inicio" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Cancelar" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalación completada" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "La instalación ha fallado" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Todo" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Crear disco de inicio" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "La extensión «%s» no está permitda." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Apareció una excepción no capturada:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"El espacio libre es insuficiente para grabar la imagen:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Instalando el cargador de arranque..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Falló la instalación del cargador de arranque." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Modificando la configuración..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"No se pueden mover los archivos syslinux en «%s»: %s. ¿Puede que «%s» no sea " +"una imagen de Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Creando un archivo de persistencia..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Creando un sistema de archivos ext2 en el archivo de persistencia..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Finalizando..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Escribiendo imagen de disco..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "No se puede escribir la imagen del disco (%s) en el dispositivo (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Eliminando archivos..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Eliminando archivos..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Copiando archivos..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "la suma de comprobación md5 no coincide." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Instalando el cargador de arranque..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Falló la instalación del cargador de arranque." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "No se puede leer %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "La suma de comprobación no coincide. ¿Reintentar?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "La suma de comprobación no coincide." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "La instalación ha fallado" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Falló la instalación. Vea por favor ~/.usbcreator.log para más detalles\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalación completa" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Borrar disco" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"La instalación se ha completado. Ahora puede ejecutar Ubuntu en otros " +"equipos arrancándolos con el disco insertado." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disco a usar:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Se guardarán en un espacio reservado adicional" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Ejecute este programa como administrador para continuar." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Se necesitan privilegios de administrador" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Ocurrió una excepción no manejada:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Error" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Inserte el CD o seleccione «Otro...»." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Format" +#~ msgstr "Formatear" diff --git a/po/et.po b/po/et.po new file mode 100644 index 0000000..8530fad --- /dev/null +++ b/po/et.po @@ -0,0 +1,532 @@ +# Estonian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-21 16:09+0000\n" +"Last-Translator: mahfiaz \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Alglaaduri paigaldamine" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Süsteemireegel keelab alglaaduri paigaldamise" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Seadme vormindamine" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Süsteemireegel keelab selle seadme vormindamise" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Seadmest tõmmise tegemine" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Süsteemireegel keelab sellele seadmele kettatõmmise kirjutamise" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Seadme haakimine" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Süsteemireegel keelab haakimise" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Käivitusketta looja" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Käivitusketta loomine CD või plaaditõmmise abil" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Paigaldamine" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Paigaldamine nurjus." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Seade pole selle tõmmise mahutamiseks piisavalt suur." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Selle tõmmise jaoks pole piisavalt vaba ruumi." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD-tõmmised" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Kettatõmmised" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Käivitamine" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Enne tuleb valida nii tõmmise allikas kui kasutatav seade." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Paigaldamine on lõppenud. Võid oma arvuti taaskäivitada jättes selle seadme " +"ühendatuks, et Ubuntut proovida või paigaldada." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Kas proovida uuesti?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Kas lahkuda paigaldusest?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Kas sa tõesti tahad paigaldusest praegu lahkuda?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Kas oled kindel, et tahad kustutada kogu ketta?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Et Ubuntut proovida või paigaldada eemaldatavalt andmekandjalt, peab see " +"olema seadistatud käivituskettana." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Lähteplaadi tõmmis (.iso) või CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Seadmest tõmmise tegemine" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Paigaldamine lõpetatud" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-seade/tõmmis" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Tõmmis" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OS-i versioon" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Suurus" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Lõpetamine..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Ketta kustutamine" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Seade" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Pealdis" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Maht" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Vaba ruum" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Käivitamine..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% complete (%dm %ss remaining)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% valmis" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Paigaldamine on lõppenud. Võid oma arvuti taaskäivitada jättes selle seadme " +"ühendatuks, et Ubuntut proovida või paigaldada." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Et Ubuntut proovida või paigaldada eemaldatavalt andmekandjalt, peab see " +"olema seadistatud käivituskettana." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Lähteplaadi tõmmis (.iso) või CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Muu..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Kasutatav eemaldatav andmekandja:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Sellelt seadmelt käivitamisel dokumendid ja sätted:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Säilitatakse eraldatud alal" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Kui palju:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Hüljatakse sulgemisel, kui pole salvestatud mujale" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Lõpeta" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Käivitusketta loomine" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Loobu" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Paigaldamine on lõppenud" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Paigaldamine nurjus" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Kõik" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Käivitusseadme valmistamine" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Laiend \"%s\" pole toetatud." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Esines püüdmatu erandolukord:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Tõmmise kirjutamiseks pole piisavalt vaba ruumi:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Alglaaduri paigaldamine..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Alglaaduri paigaldamine nurjus." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Seadistuse muutmine..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Syslinux failide liigutamine kohas \"%s\" pole võimalik: %s. Võib-olla pole " +"\"%s\" Ubuntu tõmmis?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Andmepüsimise faili loomine..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Ext2 failisüsteemi loomine andmepüsimise faili..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Lõpetamine..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Kettatõmmise kirjutamine..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Kettatõmmise (%s) kirjutamine seadmele (%s) pole võimalik." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Failide eemaldamine..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Failide eemaldamine..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Failide kopeerimine..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Md5 kontrollsummad ei klapi." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Alglaaduri paigaldamine..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Alglaaduri paigaldamine nurjus." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "%s-st lugemine pole võimalik" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Kontrollsummad ei klapi. Kas proovida uuesti?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Kontrollsummad ei klapi." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Paigaldamine nurjus" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "Paigaldamine nurjus. Lisateavet leiad ~/.usbcreator.log failist.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Paigaldamine lõpetatud" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Ketta kustutamine" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Paigaldamine on lõpetatud. Nüüd võid kasutada Ubuntut teistes arvutites, kui " +"sisestad selle seadme alglaadimisel." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Kasutatav seade:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Säilitatakse reserveeritud lisaruumis" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Jätkamiseks palun käivita see programm administraatorina." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Vajalikud on administraatori õigused" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Esines käsitsematu erandlik olukord:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Tõrge" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Sisesta CD või vali 'Muu..'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Katkesta" diff --git a/po/eu.po b/po/eu.po new file mode 100644 index 0000000..653b3f1 --- /dev/null +++ b/po/eu.po @@ -0,0 +1,526 @@ +# Basque translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-10 15:30+0000\n" +"Last-Translator: Oier Mees \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Abio-kargatzailea instalatu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Sistemaren politikak ez du abio-kargatzailea instalatzea baimentzen" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Gailua formateatu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Sistemaren politikak ez du gailu hau formateatzea baimentzen" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Gailua irudiratu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"Sistemaren politikak ez du gailu honetan disko-irudi bat idaztea baimentzen" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Gailu bat muntatu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Sistemaren politikak ez du muntatzea baimentzen" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Instalatzen" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Instalazioak huts egin du." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Gailua ez da irudi hau jasotzeko bezain handia." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Ez dago irudi honentzako leku libre nahikorik." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD-Irudiak" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Disko-Irudiak" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Abiarazten" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Lehenik, jatorrizko-irudia eta helburu-gailua hautatu behar dituzu." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Instalazioa burutu da. Ubuntu probatu edo instalatzeko, gailu hau sartuta " +"duela abiarazi ezazu zure ordenagailua." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Berriro saiatu?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Instalazioa utzi?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Instalazioa benetan utzi nahi al duzu?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Jatorrizko disko-irudia (.iso) edo CDa:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Gailua irudiratu" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalazioa Burututa" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-Unitatea/Irudia" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Irudia" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "SE Bertsioa" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Tamaina" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Gailua" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etiketa" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapazitatea" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Leku librea" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Abiarazten..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% osatuta (%dm%ss falta)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% osatuta" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Instalazioa burutu da. Ubuntu probatu edo instalatzeko, gailu hau sartuta " +"duela abiarazi ezazu zure ordenagailua." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Jatorrizko disko-irudia (.iso) edo CDa:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Beste batzuk..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Disko honetatik abiaraztean, dokumentu eta ezarpenak:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Erreserbatutako lekuan gorde" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Zenbat:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Itzaltzean galdu, zuk beste nonbait gorde ezean" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Irten" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Abio-diskoa sortu" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Utzi" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalazioa burututa" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Instalazioak huts egin du" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Denak" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Abio-Diskoa sortu" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "\"%s\" luzapena ez dago jasana." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Harrapatu ez den salbuespena gertatu da:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Irudia idazteko leku libre nahikorik ez:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Abio-kargatzailea instalatzen..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Ezin izan da abio-kargatzailea instalatu." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Konfigurazioa aldatzen..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Persistentzia-fitxategia sortzen..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Ext2 fitxategi-sistema sortzen persistentzia-fitxategian..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Disko-irudia idazten..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Ezin izan da (%s) disko-irudia idatzi (%s) gailuan." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Fitxategiak kentzen..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Fitxategiak kentzen..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Fitxategiak kopiatzen..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 checksum-ak ez datoz bat." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Abio-kargatzailea instalatzen..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Ezin izan da abio-kargatzailea instalatu." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Ezin izan da %s-tik irakurri" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Checksum-ak ez datoz bat. Berriro saiatu?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Checksum-ak ez datoz bat." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Instalazioak huts egin du" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Huts egin du instalazioak. Xehetasun gehiagorako, ~/.usbcreator.log irakurri " +"dezakezu.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalazioa Burututa" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Instalazioa burutu da. Orain, Ubuntu beste ordenagailu batzuetan erabili " +"ahalko duzu, unitate hau barruan dutela abiaraziz gero." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Zein disko erabili:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Leku extran gorde" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Jarraitzeko, administratzaile bezala exekutatu ezazu programa hau." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Administratzaile-baimenak behar" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Salbuespen kudeaezina gertatu da:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Errorea" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "CD bat sartu edo 'Beste batzuk...' hautatu ezazu." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Utzi" diff --git a/po/fa.po b/po/fa.po new file mode 100644 index 0000000..bc275d1 --- /dev/null +++ b/po/fa.po @@ -0,0 +1,492 @@ +# Persian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-11-01 13:33+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Persian \n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 0000000..2c8b1d3 --- /dev/null +++ b/po/fi.po @@ -0,0 +1,540 @@ +# Finnish translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 08:18+0000\n" +"Last-Translator: Timo Jyrinki \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Käynnistyslataimen asennus" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Järjestelmän valtuutusasetus estää käynnistyslataimen asentamisen" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Laitteen alustus" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Järjestelmän valtuutusasetus estää tämän laitteen alustamisen" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Laitteen levykuva" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"Järjestelmän valtuutusasetus estää levykuvan kirjoittamisen tälle laitteelle" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Laitteen liittäminen" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Järjestelmän valtuutusasetus estää liittämisen" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Käynnistyslevyn luonti" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Luo käynnistyslevy käyttäen CD-levyä tai levykuvaa pohjana" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Asennetaan" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Asennus epäonnistui." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Laite ei ole riittävän suuri sisältämään tätä levykuvaa." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Tälle levykuvalle ei ole riittävästi vapaata tilaa." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD-levykuvat" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Levykuvat" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Käynnistyy" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Valitse ensin sekä lähdetiedosto että kohdelaite." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Asennus on valmis. Voit nyt käynnistää tietokoneen uudelleen tämän laitteen " +"ollessa kytkettynä kokeillaksesi Ubuntua tai asentaaksesi sen." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Yritetäänkö uudelleen?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Poistu asennuksesta?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Haluatko varmasti poistua asennuksesta nyt?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Haluatko todella tyhjentää koko levyn?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Irrotettava levy tulee valmistella toimivaksi käynnistyslevyksi, jotta siltä " +"voidaan kokeilla tai asentaa Ubuntu." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Lähdelevykuva (.iso) tai CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Laitteen levykuva" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Asennus valmis" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-asema/levykuva" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Kuva" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Käyttöjärjestelmän versio" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Koko" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Viimeistellään..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Tyhjennä levy" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Laite" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Nimike" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapasiteetti" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Vapaa tila" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Käynnistetään..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% valmis (%dm%ss jäljellä)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% valmis" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Asennus on valmis. Voit nyt käynnistää tietokoneen uudelleen tämän laitteen " +"ollessa kytkettynä kokeillaksesi Ubuntua tai asentaaksesi sen." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Irrotettava levy tulee valmistella toimivaksi käynnistyslevyksi, jotta siltä " +"voidaan kokeilla tai asentaa Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Lähdelevykuva (.iso) tai CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Muu..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Käytettävä irrotettava levy/asema:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Käynnistettäessä levyltä, asiakirjat ja asetukset:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Tallennetaan varattuun tilaan" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Kuinka paljon:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Hylätään sammutettaessa, ellet tallenna niitä muualle" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Lopeta" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Luo käynnistyslevy" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Peru" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Asennus valmis" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Asennus epäonnistui" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Kaikki" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Luo käynnistyslevy" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Laajennusta ”%s” ei tueta." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Tapahtui kaappaamaton poikkeus:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Vapaata tilaa ei ole riittävästi levykuvan kirjoittamiseen:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Asennetaan käynnistyslatainta..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Käynnistyslataimen asennus epäonnistui." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Muutetaan asetuksia..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Syslinux-tiedostoja ei voitu siirtää kohteessa \"%s\": %s. Oletko varma, " +"että \"%s\" on Ubuntu-levykuva?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Luodaan pysyväistiedostoa..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Luodaan ext2-tiedostojärjestelmää pysyväistiedostoon..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Viimeistellään..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Kirjoitetaan levykuvaa..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Levykuvaa (%s) ei voi kirjoittaa laitteelle (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Poistetaan tiedostoja..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Poistetaan tiedostoja..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kopioidaan tiedostoja..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5-tarkistussummat eivät täsmää." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Asennetaan käynnistyslatainta..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Käynnistyslataimen asennus epäonnistui." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Lukeminen ei onnistu kohteesta %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Tarkistussummat eivät täsmää. Yritetäänkö uudelleen?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Tarkistussummat eivät täsmää." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Asennus epäonnistui" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Asennus epäonnistui. Katso lisätietoja tiedostosta ~/.usbcreator.log.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Asennus valmis" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Tyhjennä levy" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Asennus on valmis. Voit nyt käynnistää Ubuntun muilla tietokoneilla " +"käynnistämällä ne tämän aseman ollessa liitettynä." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Käytettävä levy:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Tallennettu varattuun lisätilaan" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Suorita tämä ohjelma ylläpitäjänä jatkaaksesi." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Järjestelmän ylläpito-oikeudet vaaditaan." + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Tapahtui käsittelemätön poikkeus:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Virhe" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Syötä CD tai valitse ”Muu...”." + +#~ msgid "0.0 MB" +#~ msgstr "0,0 MB" + +#~ msgid "Cancel" +#~ msgstr "Peru" + +#~ msgid "Format" +#~ msgstr "Alusta" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Luo USB-käynnistyslevy" diff --git a/po/fo.po b/po/fo.po new file mode 100644 index 0000000..7f1abde --- /dev/null +++ b/po/fo.po @@ -0,0 +1,502 @@ +# Faroese translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-11-15 17:58+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Faroese \n" +"Language: fo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Legg inn byrjunarløðaran" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Forsniða tóleindina" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Seta í eina tóleind" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Leggi inn" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Byrji" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Gevast við hesi innlegging" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Vil tú veruliga gevast at leggja inn nú?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Innlegging liðug" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Stødd" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Tóleind" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Spjaldur" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Megni" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Byrji..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% liðugt (%dm%ss væntar)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% liðugt" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Annað..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Enda" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Ógilda" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Innlegging liðug" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Alt" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Stovna byrjunardisk" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Leingjarin \"%s\" er ikki stuðlaður." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Leggi byrjunarløðaran inn..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Kundi ikki leggja byrjunarløðaran inn." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Stovni eina áhaldandi fílu..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Stovni eitt ext2 fílukervi í áhaldandi fíluni..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Taki fílur burtur..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Taki fílur burtur..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Avritar fílu..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Leggi byrjunarløðaran inn..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Kundi ikki leggja byrjunarløðaran inn." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Kundi ikki lesa frá %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Innlegging miseydnaðist" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Innlegging liðug" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "Brek" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Ógilda" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 0000000..7d24389 --- /dev/null +++ b/po/fr.po @@ -0,0 +1,546 @@ +# French translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-18 13:14+0000\n" +"Last-Translator: Emmanuel Sunyer \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Installer le chargeur d'amorçage" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "La politique du système interdit d'installer le chargeur d'amorçage" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formater le volume" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "La politique du système interdit de formater ce volume" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Faire une image du volume" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"La politique du système interdit d'écrire un image disque sur ce volume" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Monter un volume" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "La politique du système interdit le montage" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Créateur de disque de démarrage" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Créer un disque de démarrage à partir d'un CD ou d'une image disque" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Installation" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Échec de l'installation." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Ce volume n'a pas assez d'espace pour contenir cette image." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Il n'y a pas assez d'espace libre pour cette image." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Images de CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Images de disque" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Démarrage" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"Vous devez d'abord choisir l'image source et le périphérique de destination." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"L'installation est terminée. Vous pouvez maintenant redémarrer votre " +"ordinateur avec le périphérique inséré pour essayer ou installer Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Réessayer ?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Quitter l'installation ?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Voulez-vous vraiment quitter l'installation maintenant ?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Voulez-vous vraiment effacer entièrement le disque ?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Pour essayer ou installer Ubuntu depuis un disque amovible, il doit être " +"défini comme disque de démarrage." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Image du disque source (.iso) ou CD :" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Faire une image du volume" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Installation terminée" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Lecteur CD ou image disque" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Image" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Version du système d'exploitation" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Taille" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Finalisation..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Effacer le disque" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Périphérique" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Libellé" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacité" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Espace libre" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Démarrage…" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% accompli (%dm%ss restant)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% accompli" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"L'installation est terminée. Vous pouvez maintenant redémarrer votre " +"ordinateur avec le périphérique inséré pour essayer ou installer Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Pour essayer ou installer Ubuntu depuis un disque amovible, il doit être " +"défini comme disque de démarrage." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Image du disque source (.iso) ou CD :" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Autre..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Disque amovible à utiliser :" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" +"Lors du démarrage depuis ce disque, les documents et les réglages seront :" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Stockés en espace réservé" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Taille :" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" +"Supprimés à l'extinction, à moins que vous ne les enregistriez ailleurs" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Quitter" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Créer un disque amorçable" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Annuler" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Installation terminée" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "L'installation a échoué" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Tous" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Créer un disque de démarrage" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "L'extension « %s » n'est pas prise en charge." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Une erreur irrécupérable est survenue :\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Espace disque insuffisant pour écrire l'image :\n" +"%s\n" +"\n" +"(%d Mio) > %s (%d Mio)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Installation du chargeur d'amorçage…" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Échec de l'installation du chargeur d'amorçage." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Modification de la configuration…" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Impossible de déplacer les fichiers syslinux de « %s » : %s. « %s » n'est " +"peut-être pas une image Ubuntu." + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Création d'un fichier persistant…" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Création d'un système de fichiers ext2 dans le fichier persistant…" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Finalisation..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Écriture de l'image disque…" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Impossible d'écrire l'image disque (%s) sur le périphérique (%s)" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Suppression des fichiers..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Suppression des fichiers..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Copie des fichiers..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Les sommes de contrôle MD5 ne concordent pas." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Installation du chargeur d'amorçage…" + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Échec de l'installation du chargeur d'amorçage." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Impossible de lire sur %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Les sommes de contrôle ne concordent pas. Réessayer ?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Les sommes de contrôle ne concordent pas." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "L'installation a échoué" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"L'installation a échoué. Veuillez consulter ~/.usbcreator.log pour plus de " +"renseignements.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Installation terminée" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Effacer le disque" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"L'installation est terminée. Vous pouvez maintenant utiliser Ubuntu sur " +"d'autres ordinateurs en les faisant démarrer sur cette clé USB." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disque à utiliser :" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Enregistrés sur un espace réservé supplémentaire" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" +"Veuillez exécuter ce programme en tant qu'administrateur pour pouvoir " +"continuer." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Des privilèges administratif sont requis" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Une erreur irrécupérable est survenue :\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Erreur" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Veuillez insérer un CD ou sélectionnez « Autre… »." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 Mio" + +#~ msgid "Cancel" +#~ msgstr "Annuler" + +#~ msgid "Format" +#~ msgstr "Formater" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Créer un disque de démarrage USB" diff --git a/po/gl.po b/po/gl.po new file mode 100644 index 0000000..407475c --- /dev/null +++ b/po/gl.po @@ -0,0 +1,539 @@ +# Galician translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-18 09:39+0000\n" +"Last-Translator: Miguel Anxo Bouzada \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Instalar o cargador de inicio" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "A política do sistema impide a instalación do cargador de inicio" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatar o dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "A política do sistema impide o formatado deste dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Crear unha imaxe de dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"A política do sistema impide a escritura dunha imaxe de disco neste " +"dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Montar un dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "A política do sistema impide a montaxe" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Creador de discos de arranque" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Crear un disco de arranque usando un CD o unha imaxe de disco" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "A instalar" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Fallou a instalación." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "A unidade non é grande dabondo para conter esta imaxe." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Non hai espazo suficiente para esta imaxe." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Imaxes de CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Imaxes de disco" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "A iniciar" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"Primeiro debe seleccionar unha imaxe de orixe e un dispositivo de destino." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Completouse a instalación. Pode reiniciar o computador con este dispositivo " +"introducido para probar ou instalar o Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Quere tentalo de novo?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Quere saír da instalación?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Quere realmente saír agora da instalación?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Está seguro de querer borrar o disco enteiro?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Para probar ou instalar Ubuntu desde un disco extraíbel , é necesario " +"estabelecelo como disco de arranque." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Imaxe de disco (.iso) ou CD de orixe:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Crear unha imaxe de dispositivo" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Rematou a instalación" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Lector de CD/Imaxe" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Imaxe" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Versión do sistema operativo" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Tamaño" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Rematando..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Borrar disco" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Dispositivo" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etiqueta" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacidade" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Espazo libre" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "A iniciar..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% completado (faltan %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% completado" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Completouse a instalación. Pode reiniciar o computador con este dispositivo " +"introducido para probar ou instalar o Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Para probar ou instalar Ubuntu desde un disco extraíbel , é necesario " +"estabelecelo como disco de arranque." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Imaxe de disco (.iso) ou CD de orixe:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Outro..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Disco extraíbel a usar:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" +"Cando inicie dende este disco os documentos e a configuración deben ser:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Almacenados nun espazo reservado" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Cantidade:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Descartados ao apagar, a non ser que os garde noutro lugar" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Saír" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Crear un disco de inicio" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Cancelar" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalación completada" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Fallou a instalación" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Todos" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Facer disco de inicio" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "A extensión \"%s\" non é compatíbel." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Provocouse unha excepción non recollida:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Non hai espazo suficiente para escribir a imaxe:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "A instalar o cargador de inicio..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Non se puido instalar o cargador de inicio..." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "A modificar a configuración..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Non se poden mover os ficheiros syslinux en «%s»: %s. Pode ser que «%s» no " +"sexa unha imaxe de Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "A crear un ficheiro persistente..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "A crear un sistema de ficheiros ext2 no ficheiro persistente..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Rematando..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "A escribir a imaxe de disco..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Non se puido escribir a imaxe do disco (%s) no dispositivo (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "A eliminar os ficheiros..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "A eliminar os ficheiros..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "A copiar os ficheiros..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "As sumas de comprobación md5 non coinciden." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "A instalar o cargador de inicio..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Non se puido instalar o cargador de inicio..." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Non se puido ler %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "As sumas de comprobación non coinciden. Quere tentalo de novo?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "As sumas de comprobación non coinciden." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Fallou a instalación" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "Fallou a instalación. Consulte ~/.usbcreator.log para máis detalles.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Rematou a instalación" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Borrar disco" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Instalación completada. Vostede pode executar Ubuntu en outra computadora " +"arrincándoa con este dispositivo conectado." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disco a empregar:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Almacenados nun espazo adicional reservado" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Execute este programa como administrador para continuar." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Requírense privilexios de administrador" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Produciuse unha excepción non xestionada:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Erro" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Insira un CD ou seleccione \"Outro...\"." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Format" +#~ msgstr "Formatar" diff --git a/po/gu.po b/po/gu.po new file mode 100644 index 0000000..539a869 --- /dev/null +++ b/po/gu.po @@ -0,0 +1,500 @@ +# Gujarati translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-10-03 12:03+0000\n" +"Last-Translator: Sam \n" +"Language-Team: Gujarati \n" +"Language: gu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "સ્થાપન કરે છે" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "સ્થાપન નિષ્ફળ ગયું" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "શરૂ થાય છે" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "ફરી પ્રયત્ન કરવો છે?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "સ્થાપન છોડી દેવું?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "શું તમે ખરેખર સ્થાપન છોડી બહાર નીકળવા માગો છો?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "સ્થાપના સમાપ્ત" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "ચિત્ર" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "માપ" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "ઉપકરણ" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "લેબલ" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "ક્ષમતા" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "મુક્ત જગ્યા" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "ચાલુ થઇરહયુ છ." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% સમાપ્ત (%dm%ss બાકી)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% પૂર્ણ" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "અન્ય..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "ખાસ જગ્યા મા સંગ્રહીત છ." + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "કેટલ:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "બહાર નીકળો" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "રદ કરો (&C)" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "સ્થાપન સફળ થયું" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "સ્થાપન નિષ્ફળ ગયું" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "બધા" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "ફાઇલો કઢાય છ..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "ફાઇલો કઢાય છ..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "ફાઇલોની નકલ કરી રહ્યા છીએ" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 checksums મળતા નથી." + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "%s મા થી વાંચી શકાતુ નથી." + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "md5 checksums મળતા નથી..ફરી પ્રયાસ કરવો છ?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "checksums મળતા નથી." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "સ્થાપન નિષ્ફળ ગયું" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "સ્થાપના સમાપ્ત" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "વાપરવા માટેની Disk:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "ભૂલ" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "રદ્ કરો" diff --git a/po/he.po b/po/he.po new file mode 100644 index 0000000..adb17fc --- /dev/null +++ b/po/he.po @@ -0,0 +1,535 @@ +# Hebrew translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 08:58+0000\n" +"Last-Translator: Yaron \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "התקנת תוכנית האיתחול" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "מדיניות המערכת מונעת את התקנת תוכנית האיתחול" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "פירמוט ההתקן" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "מדיניות המערכת מונעת את הפירמוט של התקן הזה" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "הכנת דמות של ההתקן" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "מדיניות המערכת מונעת מכתיבת דמות דיסק להתקן זה" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "עגינת ההתקן" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "מדיניות המערכת מונעת עיגון" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "יוצר תקליטור האיתחול" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "צור תקליטור איתחול בעזרת תקליטור או תמונת תקליטור" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "מתקין" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "התקנה נכשלה." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "ההתקן אינו גדול מספיק בכדי להחזיק בתמונה זו." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "אין מספיק מקום פנוי עבור תמונה זו." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "תמונות תקליטור" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "תמונות דיסק" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "מתחיל" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "עליך לבחור את תמונת המקור ואת התקן היעד תחילה." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"ההתקנה הושלמה. תוכל כעת לאתחל את המחשב עם התקן זה בכדי לנסות או להתקין את " +"Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "לנסות שנית?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "לצאת מההתקנה?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "האם אתה בטוח שברצונך לצאת מההתקנה כעת?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "האם ברצונך למחוק את הכונן כולו?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"בכדי לנסות או להתקין את אובונטו מתוך התקן נייד, יש צורך בהגדרת תקליטור אתחול." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "דמות תקליטור המקור (.iso) או תקליטור:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "הכנת דמות של ההתקן" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "ההתקנה הושלמה" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "כונן/דמות תקליטור" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "תמונה" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "גרסת מערכת הפעלה" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "נפח" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "בהליכי סיום..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "מחיקת הכונן" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "התקן" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "תווית" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "קיבולת" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "שטח פנוי" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "מתחיל..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% הושלמו (%dm%ss נותרו)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% הושלם" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"ההתקנה הושלמה. תוכל כעת לאתחל את המחשב עם התקן זה בכדי לנסות או להתקין את " +"Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"בכדי לנסות או להתקין את אובונטו מתוך התקן נייד, יש צורך בהגדרת תקליטור אתחול." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "דמות תקליטור המקור (.iso) או תקליטור:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "אחר..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "התקן נייד לשימוש:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "בעת הפעלה מכונן זה, המסמכים וההגדרות:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "שמור במקום מיועד" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "כמה נפח:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "ימחקו בעת הכיבוי, אלא אם כן תשמור אותם למקום אחר." + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "יציאה" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "צור דיסק איתחול" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&ביטול" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "ההתקנה הושלמה" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "ההתקנה נכשלה" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "הכל" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "צור התקן איתחול" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "ההרחבה \"%s\" אינה נתמכת." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"הועלתה חריגה שלא נתפסה:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"אין מספיק מקום פנוי לכתיבת קובץ התמונה:\n" +"%s\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "מתבצעת התקנת תוכנית האיתחול..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "ארע כשל בהתקנת האיתחול." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "מתבצעים שינויים לתצורה..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"לא ניתן להעביר את קובצי ה־syslinux אל \"%s\": %s. היתכן כי \"%s\" אינו קובץ " +"תמונה של אובונטו?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "יוצר קובץ התמדה..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "יוצר מערכת קבצים ext2 בתוך קובץ ההתמדה..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "בהליכי סיום..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "כותב תמונת דיסק..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "לא ניתן לכתוב את תמונת הדיסק (%s) להתקן (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "מסיר קבצים..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "מסיר קבצים..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "מעתיק קבצים..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "מספרי ה־md5 אינם תואמים." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "מתבצעת התקנת תוכנית האיתחול..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "ארע כשל בהתקנת האיתחול." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "לא ניתן לקרא מ־%s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "מספרי ה־Checksum אינם תואמים. לנסות שוב?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "מספרי ה־Checksum אינם תואמים." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "ההתקנה נכשלה" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "ההתקנה נכשלה. יש לבדוק את ~/.usbcreator.log למידע נוסף.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "ההתקנה הושלמה" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "מחיקת הכונן" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"ההתקנה הושלמה. תוכל כעת להריץ את Ubuntu במחשבים נוספים ע\"י הפעלתם עם התקן " +"זה מחובר." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "דיסק לשימוש:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "יאוחסנו בנפח שמור נוסף" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "יש להריץ את תוכנה זו כמנהל בכדי להמשיך." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "דרושות פריוילגיות מנהל" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"ארעה חריגה בלתי מטופלת:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "שגיאה" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "אנא הכנס תקליטור או בחר 'אחר...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 מ\"ב" + +#~ msgid "Cancel" +#~ msgstr "ביטול" + +#~ msgid "Format" +#~ msgstr "פירמוט" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "צור התקן איתחול USB" diff --git a/po/hi.po b/po/hi.po new file mode 100644 index 0000000..5bdbd34 --- /dev/null +++ b/po/hi.po @@ -0,0 +1,492 @@ +# Hindi translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-07-25 02:49+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/hr.po b/po/hr.po new file mode 100644 index 0000000..696b59f --- /dev/null +++ b/po/hr.po @@ -0,0 +1,534 @@ +# Croatian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 06:09+0000\n" +"Last-Translator: Blagus \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Instaliraj boot učitavač" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Politika sustava sprječava instalaciju boot učitavača" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatiraj uređaj" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Politika sustava sprječava formatiranje ovog uređaja" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Napravi sliku uređaja" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Politika sustava sprječava zapisivanje slike diska na ovaj uređaja" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Montiraj uređaj" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Politika sustava sprječava montiranje" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Stvaratelj diska za pokretanje" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Stvorite disk za pokretanje koristeći CD ili diskovnu sliku" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Instalacija" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Instalacija nije uspjela." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Uređaj nije dovoljno velik za ovu sliku." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Za ovu sliku nema dovoljno prostora." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD slike" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Diskovne slike" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Pokretanje" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Najprije morate odabrati izvorni i ciljni uređaj." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Instalacija je dovršena. Računalo možete ponovno pokrenuti dok je ovaj " +"uređaj priključen, te isprobati ili instalirati Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Pokušati ponovno?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Izlaz iz instalacije?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Želite li doista izaći iz instalacije?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Da biste isprobali ili instalirali Ubuntu s prijenosnog diska, potrebno ga " +"je podesiti kao disk za pokretanje." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Izvorna slika diska (.iso) ili CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Napravi sliku uređaja" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalacija završena" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD pogon/slika" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Slika" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Inačica OS-a" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Veličina" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Uređaj" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Oznaka" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapacitet" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Slobodan prostor" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Pokretanje..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% dovršeno (preostalo %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% dovršeno" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Instalacija je dovršena. Računalo možete ponovno pokrenuti dok je ovaj " +"uređaj priključen, te isprobati ili instalirati Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Da biste isprobali ili instalirali Ubuntu s prijenosnog diska, potrebno ga " +"je podesiti kao disk za pokretanje." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Izvorna slika diska (.iso) ili CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Ostalo" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Prijenosni disk koji za korištenje:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Kada se pokreće s ovog diska, dokumenti i postavke će biti:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Spremljene na rezerviranom prostoru" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Koliko puno:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Poništene na izlazu, osim ako ih ne spremite negdje drugdje" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Izlaz" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Napravi disk za pokretanje" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Odustani" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalacija dovršena" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Instalacija nije uspjela" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Sve" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Napravi disk za pokretanje" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Ekstenzija \"%s\" nije podržana." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Uzdignuta je neuhvaćena iznimka:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Nedovoljno slobodnog prostora za zapisivanje slike:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Instalacija boot učitavača..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Neuspjela instalacija boot učitavača." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Izmjena konfiguracije..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Premještanje syslinux datoteka u \"%s\" nije uspjelo: %s. Možda \"%s\" nije " +"Ubuntu slika?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Stvaranje datoteke dosljednosti..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Stvaranje ext2 datotečnog sustava u datoteci dosljednosti..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Zapisivanje slike diska..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Zapisivanje slike diska (%s) na uređaj (%s) nije uspjelo." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Uklanjanje datoteka..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Uklanjanje datoteka..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kopiranje datoteka..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 vrijednost se ne podudara." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Instalacija boot učitavača..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Neuspjela instalacija boot učitavača." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Čitanje s %s nije moguće" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Kontrolne vrijednosti se ne podudaraju. Pokušati ponovno?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Kontrolne vrijednosti se ne podudaraju." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Instalacija nije uspjela" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Instalacija nije uspjela. Za više detalje provjerite ~/.usbcreator.log.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalacija završena" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Instalacija je završena. Ubuntu sada možete pokretati na drugim računalima " +"tako da ovaj uređaj postavite kao početni disk za učitavanje." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disk za korištenje:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Spremljene u rezerviranom dodatnom prostoru" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Za nastavak, molim pokrenite ovaj program kao administrator." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Potrebne su administratorske ovlasti" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Pojavila se nepodržana iznimka:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Greška" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Molim umetnite CD ili odaberite 'Drugo...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Otkaži" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Napravi USB Disk za pokretanje" diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 0000000..3eab7f0 --- /dev/null +++ b/po/hu.po @@ -0,0 +1,541 @@ +# Hungarian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-18 10:57+0000\n" +"Last-Translator: Gabor Kelemen \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Rendszerbetöltő telepítése" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "A rendszer házirendje megakadályozza a rendszerbetöltő telepítését" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Eszköz formázása" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "A rendszer házirendje megakadályozza az eszköz formázását" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Lemezkép írása az eszközre" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "A rendszer házirendje megakadályozza lemezkép írását az eszközre" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Eszköz csatolása" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "A rendszer házirendje megakadályozza a csatolást" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Indítólemez-készítő" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Indítólemez létrehozása CD vagy lemezkép segítségével" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Telepítés" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "A telepítés nem sikerült." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Az eszköz nem elég nagy a lemezkép tárolásához" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Nincs elég szabad hely a lemezképhez." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD képek" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Lemezképek" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Indítás" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Ki kell választani a forrás-képfájlt és a céleszközt is." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"A telepítés elkészült. Újraindíthatja a számítógépet az eszközről az Ubuntu " +"kipróbálásához vagy telepítéséhez." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Újrapróbálja?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Megszakítja a telepítést?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Valóban meg kívánja szakítani a telepítést?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Biztos benne, hogy törölni szeretné a teljes meghajtót?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Az Ubuntu cserélhető meghajtóról való kipróbálásához vagy telepítéséhez azt " +"először indítómeghajtóvá kell tenni." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Forrás lemezkép (.iso) vagy CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Lemezkép írása az eszközre" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "A telepítés befejeződött." + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-meghajtó vagy lemezkép" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Kép" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OS verzió" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Méret" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Befejezés…" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Meghajtó törlése" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Eszköz" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Címke" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapacitás" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Szabad hely" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Betöltés…" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% kész (%d perc %s másodperc van hátra)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% kész" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"A telepítés elkészült. Újraindíthatja a számítógépet az eszközről az Ubuntu " +"kipróbálásához vagy telepítéséhez." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Az Ubuntu cserélhető meghajtóról való kipróbálásához vagy telepítéséhez azt " +"először indítómeghajtóvá kell tenni." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Forrás lemezkép (.iso) vagy CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Egyéb…" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Használandó cserélhető meghajtó:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" +"Ha az Ubuntu erről a lemezről indul, a dokumentumok és beállítások helye:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Tárolás lefoglalt területen" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Mennyi van hátra:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Eldobva leállításkor, hacsak nem menti máshová" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Kilépés" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Indítólemez készítése" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Mégsem" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "A telepítés befejeződött" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "A telepítés meghiúsult" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Összes" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Indítólemez készítése" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Nem támogatott kiterjesztés: „%s”." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Kezeletlen kivétel:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Nincs elég szabad hely a lemezkép kiírásához:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "A rendszerbetöltő telepítése…" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "A rendszerbetöltő telepítése sikertelen." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "A beállítások módosítása…" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Nem sikerült mozgatni a syslinux fájlokat a(z) „%s” helyről: %s. A(z) „%s” " +"talán nem is Ubuntu lemezkép?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Állapottartó fájl létrehozása…" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Ext2 fájlrendszer létrehozása az állapottartó fájlban…" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Befejezés…" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Lemezkép írása…" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "„%s” képfájl „%s” lemezre való írása sikertelen." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Fájlok eltávolítása…" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Fájlok eltávolítása…" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Fájlok másolása…" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Az md5 összegek nem egyeznek." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "A rendszerbetöltő telepítése…" + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "A rendszerbetöltő telepítése sikertelen." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "„%s” nem olvasható" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Az ellenőrzőösszegek nem egyeznek. Újrapróbálja?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Az ellenőrzőösszegek nem egyeznek." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "A telepítés meghiúsult." + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"A telepítés meghiúsult. További részletekért lásd a ~/.usbcreator.log " +"fájlt.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "A telepítés befejeződött." + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Meghajtó törlése" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"A telepítés befejeződött. Már futtathatja az Ubuntut más számítógépeken ezt " +"a meghajtót használva indításhoz." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Használandó lemez:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Tárolás a fenntartott szabad helyen" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Kérem, az alkalmazás adminisztrátorként futtassa a folytatáshoz." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Adminisztráltori jogok szükségesek" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Kezeletlen kivétel:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Hiba" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Helyezzen be egy CD-t, vagy válassza az „Egyéb…” gombot" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Mégse" + +#~ msgid "Format" +#~ msgstr "Formázás" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "USB indítólemez készítése" diff --git a/po/id.po b/po/id.po new file mode 100644 index 0000000..e593522 --- /dev/null +++ b/po/id.po @@ -0,0 +1,540 @@ +# Indonesian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-26 09:16+0000\n" +"Last-Translator: Muhammad Takdir \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Pasang bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Kebijakan sistem mencegah memasang bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Format perangkat" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Kebijakan sistem mencegah memformat perangkat ini" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Image perangkat" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Kebijakan sistem mencegah menulis sebuah disk image ke perangkat ini" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Mengkaitkan perangkat" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Kebijakan sistem mencegah pengkaitan" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Pembuat Cakram Startup" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Membuat cakram startup menggunakan sebuah CD atau cetakan cakram" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Memasang" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Pemasangan gagal." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Piranti tidak cukup besar untuk menampung cetakan ini." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Tidak cukup ruang kosong untuk cetakan ini." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Cetakan-cetakan CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Cetakan-cetakan Cakram" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Mulai" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Anda harus memilih pasangan sumber cetakan dan piranti sasaran dahulu." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Instalasi telah selesai. Anda silakan mem-boot ulang komputer sekarang " +"dengan memasukkan peranti ini untuk mencoba atau menginstall Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Coba lagi?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Keluar dari instalasi?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Apakah Anda ingin keluar dari instalasi sekarang?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Apakah anda yakin akan menghapus semua isi cakram?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Untuk mencoba atau memasang Ubuntu dari disk yang mudah dipindahkan, perlu " +"diatur sebagai disk startup" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Sumber cetakan cakram (.iso): atau CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Image perangkat" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalasi Selesai" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Peranti-CD/Cetakan" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Cetakan" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Versi OS" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Ukuran" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Menyelesaikan..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Hapus isi cakram" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Piranti" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Label" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapasitas" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Ruang Kosong" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Memulai..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% selesai (%dm%ss tersisa)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% selesai" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Instalasi telah selesai. Anda silakan mem-boot ulang komputer sekarang " +"dengan memasukkan peranti ini untuk mencoba atau menginstall Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Untuk mencoba atau memasang Ubuntu dari disk yang mudah dipindahkan, perlu " +"diatur sebagai disk startup" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Sumber cetakan cakram (.iso): atau CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Lainnya..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Removable disk yang digunakan:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Ketika menjalkan dari disk ini, maka dokumen dan pengaturan akan:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Disimpan pada ruang terpesan" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Berapa banyak:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Dibuang saat shutdown, kecuali jika Anda menyimpannya di tempat lain" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Keluar" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Buat startup disk" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Batal" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Pemasangan selesai" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Pemasangan gagal" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Semua" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Buat Disket Startup" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Ekstensi \"%s\" tidak didukung." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Eksepsi tidak tertangkap dimunculkan:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Ruang kosong tidak mencukupi untuk menulis image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Memasang bootloader..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Gagal memasang bootloader." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Mengubah konfigurasi..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Tidak bisa memindahkan berkas-berkas syslinux dalam \"%s\": %s. Mungkin \"%s" +"\" bukan sebuah cetakan Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Membuat sebuah berkas persistensi..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Membuat sebuah sistem berkas ext2 pada berkas persistensi..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Menyelesaikan..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Menulisi cetakan cakram..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Tidak dapat menulis cetakan cakram (%s) ke piranti (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Menghapus berkas..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Menghapus berkas..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Menyalin berkas..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 checksums tidak sama." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Memasang bootloader..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Gagal memasang bootloader." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Tidak dapat membaca dari %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Checksums tidak sama. Coba lagi?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Checksums tidak sama." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Instalasi Gagal" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Pemasangan gagal. Silahkan lihat ~/.usbcreator.log untuk lebih jelas.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalasi Selesai" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Hapus isi cakram" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Pemasangan telah selesai. Anda sekarang dapat menjalankan Ubuntu di " +"komputer lain dengan memasukkan penggerak ini pada saat dinyalakan." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disk untuk digunakan:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Disimpan dalam ruang tambahan" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" +"Silakan jalankan program ini sebagai seorang administrator untuk melanjutkan." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Peran sebagai administrator diperlukan" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Eksepsi yang tidak tertangani terjadi:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Kesalahan" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Silakan masukkan CD atau pilih 'Lainnya...'." + +#~ msgid "0.0 MB" +#~ msgstr "0,0 MB" + +#~ msgid "Cancel" +#~ msgstr "Batal" + +#~ msgid "Format" +#~ msgstr "Format" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Buat Disket Startup USB" diff --git a/po/is.po b/po/is.po new file mode 100644 index 0000000..ea07e37 --- /dev/null +++ b/po/is.po @@ -0,0 +1,520 @@ +# Icelandic translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-29 16:11+0000\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Setja upp ræsiforritið" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Kerfið heimilar þér ekki að setja upp ræsiforritið" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Forsníða tækið" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Kerfið heimilar þér ekki að forsníða tækið" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Mynda tækið" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Kerfið heimar þér ekki að skrifa diskamynd á þetta tæki" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Tengja tæki" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Kerfið heimilar ekki að tengja" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Set inn" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Uppsetning mistókst." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Tækið rúmar myndinni ekki." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Það vantar meira pláss undir myndina." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Geisladisksmyndir" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Diskamyndir" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Ræsi" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Þú verður fyrst að velja bæði mynd og tæki sem á að nota." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Viltu reyna aftur?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Viltu hætta við uppsetninguna?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Viltu hætta við uppsetninguna?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Ertu viss um að þú viljir að öllu sé eytt út af disknum?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Mynd (.iso) eða geisladiskur sem á að nota:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Mynda tækið" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Uppsetningu lokið" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Mynd eða geisladrif" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Mynd" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Útgáfa stýrkierfis" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Stærð" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Slæ botn í þetta..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Eyða út af disknum" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Tæki" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Nafn" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Stærð" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Laust pláss" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Ræsi..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% komið (%dm%ss eftir)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% búið" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Mynd (.iso) eða geisladiskur sem á að nota:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Annað..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Hvað viltu gera við ný gögn og stillingar þegar þú notar USB lykilinn?" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Geymt í fráteknu plássi" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Hve mikið pláss:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Ég vil ekki geyma ný gögn eða stillingar þegar ég slekk á tölvunni." + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Hætta" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Búa til ræsidisk" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Hætta við" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Uppsetningu lokið" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Uppsetning tókst ekki" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Allt" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Búa til ræsidisk" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Endingin „%s“ er ekki studd." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Undantekning fannst:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Það vantar meira pláss til að skrifa myndina:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Set upp ræsiforritið..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Það tókst ekki að setja upp ræsiforritið..." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Breyti stillingum..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Bý til varanlega skrá..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Bý til ext2 skráakerfi í varanlegu skránni..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Slæ botn í þetta..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Skrifa diskamynd..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Gat ekki skrifað diskamyndina (%s) á tækið (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Fjarlægi skrár..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Fjarlægi skrár..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Afrita skrár..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 prófsummurnar passa ekki." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Set upp ræsiforritið..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Það tókst ekki að setja upp ræsiforritið..." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Gat ekki lesið af %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Prófsummurnar passa ekki. Viltu reyna aftur?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Prófsummurnar passa ekki." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Uppsettning mistókst" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Uppsetningu lokið" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Eyða út af disknum" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Uppsetningu er lokið. Núna getur þú keyrt Ubuntu á öðrum tölvum með því að " +"tengja þetta drif við þær og kveikja á þeim." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "USB-tæki sem á að nota:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Ég vil taka frá pláss á lyklinum fyrir ný gögn og stillingar:" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Keyrðu þetta forrit sem kerfisstjóri til að halda áfram." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Kerfisstjóraheimilda er krafist" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "Villa" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Settu inn geisladisk eða veldu ‚Annað...‘" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Hætta við" + +#~ msgid "Format" +#~ msgstr "Forsníða" diff --git a/po/it.po b/po/it.po new file mode 100644 index 0000000..1700b2e --- /dev/null +++ b/po/it.po @@ -0,0 +1,547 @@ +# Italian translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 13:15+0000\n" +"Last-Translator: Milo Casagrande \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Installa il bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "La politica di sistema impedisce l'installazione del bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatta il dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "La politica di sistema impedisce la formattazione del dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Crea un'immagine del dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"La politica di sistema impedisce la scrittura di un'immagine disco su questo " +"dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Monta un dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "La politica di sistema impedisce il montaggio" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Creatore dischi di avvio" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Crea un disco di avvio usando un CD o un'immagine di un disco" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Installazione in corso" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Installazione non riuscita." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" +"Il dispositivo non è abbastanza capiente per contenere questa immagine." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Non c'è abbastanza spazio per questa immagine." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Immagini CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Immagini disco" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Avvio in corso" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"È necessario innanzitutto selezionare sia l'immagine sorgente che il " +"dispositivo di destinazione." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"L'installazione è completata. Ora è possibile riavviare il computer con " +"questo dispositivo inserito per provare o installare Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Riprovare?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Interrompere l'installazione?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Interrompere veramente l'installazione?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Cancellare veramente il disco?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Per provare o installare Ubuntu da un disco rimovibile, questo deve essere " +"impostato come disco di avvio." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Immagine disco (.iso) o CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Crea un'immagine del dispositivo" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Installazione completata" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Unità CD/Immagine" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Immagine" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Versione SO" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Dimensione" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Chiusura..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Cancella disco" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Dispositivo" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etichetta" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacità" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Spazio libero" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Avvio..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% completato (%d min e %s sec rimanenti)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% completato" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"L'installazione è completata. Ora è possibile riavviare il computer con " +"questo dispositivo inserito per provare o installare Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Per provare o installare Ubuntu da un disco rimovibile, questo deve essere " +"impostato come disco di avvio." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Immagine disco (.iso) o CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Altro..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Disco rimovibile da usare:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" +"Quando si avvia da questo dispositivo i documenti e le impostazioni verranno:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Salvati su spazio riservato" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Dimensione:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" +"Eliminati in fase di arresto, a meno che non vengano salvati in un'altra " +"posizione" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Esci" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Crea disco di avvio" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "A&nnulla" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Installazione completata" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Installazione non riuscita" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Tutto" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Crea disco di avvio" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "L'estensione «%s» non è supportata." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"È stata lanciata un'eccezione non catturata:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Spazio libero non sufficiente per scrivere l'immagine:\n" +"%s\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Installazione del bootloader..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Installazione del bootloader non riuscita." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Modifica della configurazione..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Impossibile spostare i file syslinux in «%s»: %s. Forse «%s» non è " +"un'immagine di Ubuntu." + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Creazione file persistente..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Creazione di un file system ext2 nel file persistente..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Chiusura..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Scrittura immagine disco..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Impossibile scrivere l'immagine del disco (%s) sul dispositivo (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Rimozione dei file..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Rimozione dei file..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Copia dei file..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "I codici di controllo MD5 non corrispondono." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Installazione del bootloader..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Installazione del bootloader non riuscita." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Impossibile leggere da %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "I codici di controllo non corrispondono. Riprovare?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "I codici di controllo non corrispondono." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Installazione non riuscita" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"L'installazione non è riuscita. Per maggiori informazioni, consultare il " +"file «~/.usbcreator.log».\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Installazione completata" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Cancella disco" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"L'installazione è completata. Ora è possibile eseguire Ubuntu su altri " +"computer avviandoli con questa unità inserita." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disco da usare:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Salvati su spazio aggiuntivo riservato" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Eseguire questo programma come utente amministratore per continuare." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Necessari i privilegi di amministratore" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Si è verificata un'eccezione non gestita:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Errore" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Inserire un CD o selezionare «Altro...»." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Annulla" + +#~ msgid "Format" +#~ msgstr "Formatta" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Crea disco di avvio USB" diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 0000000..ea7e43b --- /dev/null +++ b/po/ja.po @@ -0,0 +1,536 @@ +# Japanese translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-20 15:41+0000\n" +"Last-Translator: Kentaro Kazuhama \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "ブートローダのインストール" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "システムポリシーによりブートローダをインストールできません" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "デバイスのフォーマット" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "システムポリシーによりこのデバイスをフォーマットできません" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "デバイスのイメージ化" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "システムポリシーによりこのデバイスにディスクイメージを書き込めません" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "デバイスのマウント" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "システムポリシーによりマウントできません" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "スタートアップ・ディスクの作成" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "CD またはディスクイメージを使ってスタートアップ・ディスクを作成します" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "インストールしています" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "インストールに失敗しました。" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "デバイスにこのイメージを保存するには十分な容量がありません。" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "このイメージを書き込むための十分な容量がありません。" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD イメージ" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "ディスクイメージ" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "開始しています" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "最初に元のイメージとターゲットとするデバイスを選択する必要があります。" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"インストールが完了しました。Ubuntu を試したりインストールするのであれば、この" +"デバイスを差し込んだ状態のまま今すぐコンピュータを再起動してください。" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "再試行しますか?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "インストールを終了しますか?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "本当にインストールを終了しますか?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"リムーバブルディスクから Ubuntu を試したりインストールするには、スタートアッ" +"プ・ディスクとして設定する必要があります。" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "インストール元ディスクイメージ(.iso)またはCD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "デバイスのイメージ化" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "インストールが完了しました" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD ドライブ/イメージ" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "イメージ" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OSバージョン" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "サイズ" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "終了しています..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "デバイス" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "ラベル" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "ディスク容量" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "空き容量" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "起動しています..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% 完了 (残り %d 分 %s 秒)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% 完了" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"インストールが完了しました。Ubuntu を試したりインストールするのであれば、この" +"デバイスを差し込んだ状態のまま今すぐコンピュータを再起動してください。" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"リムーバブルディスクから Ubuntu を試したりインストールするには、スタートアッ" +"プ・ディスクとして設定する必要があります。" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "インストール元ディスクイメージ(.iso)またはCD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "その他..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "使用するリムーバブルディスク" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "このUSBディスクから起動した際の、作成した文章や設定の扱い:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "未使用のスペースに保存する" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "確保する容量:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "シャットダウン時に、全ての変更を破棄する" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "終了" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "スタートアップ・ディスクの作成" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "キャンセル(&C)" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "インストールが完了しました" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "インストールに失敗しました" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "すべて" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "スタートアップ・ディスクの作成" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "拡張子 \"%s\" はサポートされていません。" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"捕捉されなかった例外が発生しました:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"イメージを書き込むのに十分な容量がありません。\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "ブートローダをインストールしています..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "ブートローダのインストールに失敗しました。" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "設定を変更しています..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"\"%s\": %s にある syslinux ファイルを移動できませんでした。\"%s\" は Ubuntu " +"イメージでない可能性があります。" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "永続的ファイルを作成しています..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "永続的ファイルにext2ファイルシステムを作成しています..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "終了しています..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "ディスクイメージを書き込んでいます..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "ディスクイメージ (%s) をデバイス (%s) に書き込めません。" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "ファイルを削除しています..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "ファイルを削除しています..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "ファイルをコピーしています..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5チェックサムが一致しません。" + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "ブートローダをインストールしています..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "ブートローダのインストールに失敗しました。" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "%s から読み込めません" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "チェックサムが一致しません。再試行しますか?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "チェックサムが一致しません。" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "インストールに失敗しました" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"インストールに失敗しました。エラーの詳細は ~/.usbcreator.log を参照してくださ" +"い。\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "インストールが完了しました" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"インストールが完了しました。このドライブを差し込んで起動することで、他のコン" +"ピュータ上でUbuntuを立ち上げることができます。" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "使用するディスク:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "データ保存領域を確保し、行われた変更を保存する" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "続けるには、このプログラムを管理者として実行してください。" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "管理者権限が必要です" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"未処理例外が発生しました:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "エラー" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "CDを挿入するか、「その他」を選択してください。" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "キャンセル" + +#~ msgid "Format" +#~ msgstr "フォーマット" diff --git a/po/jv.po b/po/jv.po new file mode 100644 index 0000000..bcff6b8 --- /dev/null +++ b/po/jv.po @@ -0,0 +1,493 @@ +# Javanese translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-02-16 15:39+0000\n" +"Last-Translator: Arief Setiadi Wibowo \n" +"Language-Team: Javanese \n" +"Language: jv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Yakin arep mbatalke nginstal?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalasi Komplit." + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "liyane" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Sepiro:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Gawe Disket Startup" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Instalasi Gagal" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalasi Komplit." + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/kk.po b/po/kk.po new file mode 100644 index 0000000..1f67817 --- /dev/null +++ b/po/kk.po @@ -0,0 +1,492 @@ +# Kazakh translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-10-23 05:19+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/kn.po b/po/kn.po new file mode 100644 index 0000000..accc368 --- /dev/null +++ b/po/kn.po @@ -0,0 +1,492 @@ +# Kannada translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-11-11 09:17+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Kannada \n" +"Language: kn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/ko.po b/po/ko.po new file mode 100644 index 0000000..54af3a7 --- /dev/null +++ b/po/ko.po @@ -0,0 +1,538 @@ +# Korean translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 06:11+0000\n" +"Last-Translator: Bundo \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "부트로더 설치" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "시스템 정책에 의해 부트로더 설치를 허용하지 않습니다" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "장치 포맷" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "시스템 정책에 의해 이 장치의 포맷을 허용하지 않습니다" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "장치 이미지화" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"시스템 정책에 의해 디스크 이미지를 해당 장치에 쓰기는 것을 허용하지 않습니다" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "장치 마운트" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "시스템 정책에 의해 마운트를 허용하지 않습니다" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "시동 디스크 생성기" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "CD 혹은 디스크이미지로부터 시동 디스크 만들기" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "설치하기" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "설치 실패." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "이 이미지를 담기엔 저장장치가 크지 않습니다." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "이 이미지를 위한 여유공간이 없습니다." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD 이미지" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "디스크 이미지" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "시작하는 중" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "먼저 원본 이미지 파일과 대상 장치를 선택해야 합니다." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"설치가 완료되었습니다. 우분투를 경험 혹은 설치하기 위해 이 장치를 꽂은채로 컴" +"퓨터를 재부팅 할수 있습니다." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "다시할까요?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "설치를 끝내시겠습니까?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "설치를 정말로 지금 끝내시겠습니까?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"이동식 디스크에서 우분투를 사용하거나 설치하실려면 시동디스크로 설정되어야 합" +"니다." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "원본 디스크 이미지 (.iso) 혹은 CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "장치 이미지화" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "설치 완료" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-드라이브/이미지" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "이미지" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OS 버전" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "크기" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "장치" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "레이블" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "용량" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "여유 공간" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "시작..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% 완성함 (%dm%ss 남음)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% 완료됨" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"설치가 완료되었습니다. 우분투를 경험 혹은 설치하기 위해 이 장치를 꽂은채로 컴" +"퓨터를 재부팅 할수 있습니다." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"이동식 디스크에서 우분투를 사용하거나 설치하실려면 시동디스크로 설정되어야 합" +"니다." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "원본 디스크 이미지 (.iso) 혹은 CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "찾아보기..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "사용할 이동식 디스크:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "이 디스크로 부팅하는 경우, 문서와 설정들은:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "확보된 공간에 저장됨" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "크기:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "따로 저장해 두지 않았다면 전원을 끌 때 사라집니다" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "끝내기" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "시동 디스크 만들기" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "취소(&C)" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "설치를 마쳤습니다" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "설치 실패" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "전체" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "부팅 디스크 만들기" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "확장자 \"%s\" 는(은) 지원되지 않습니다." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"잡히지 않은 예외가 발생했습니다:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"이미지 쓰기에 충분치 않은 공간:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "부트로더 설치중..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "부트로더 설치 실패" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "설정 변경중..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"\"%s\"에 있는 syslinux 파일을 옮길 수 없음: %s. \"%s\"은(는) Ubuntu 이미지가 " +"아닐 수 있습니다." + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "지속 파일 생성중..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "ext2 파일시스템을 지속 파일에 생성중..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "디스크 이미지 쓰는중..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "디스크 이미지 (%s) 를(을) 장치 (%s) 에 쓸수가 없습니다." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "파일 제거..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "파일 제거..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "파일 복사 중..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 체크섬이 맞지 않습니다." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "부트로더 설치중..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "부트로더 설치 실패" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "%s 을 읽을수 없습니다" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "체크섬이 맞지 않습니다. 다시할까요?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "체크섬이 맞지 않습니다." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "설치 실패" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"설치가 실패하였습니다. 자세한 사항은 ~/.usbcreator.log 파일을 참조하세요.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "설치 완료" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"설치가 완료되었습니다. 이 드라이브를 다른 컴퓨터에 꽂아 부팅하여 우분투를 동" +"작시킬수 있습니다." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "사용하려는 디스크:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "별도로 마련된 공간에 저장됩니다" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "계속하려면 관리자 계정으로 이 프로그램을 실행시키십시요." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "관리자 권한이 필요함" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"다루어지지 않는 예외상황이 발생됨:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "오류" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "CD를 넣거나 '찾아보기...'를 누르십시오." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "취소" + +#~ msgid "Format" +#~ msgstr "포맷" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "USB 부팅 디스크 만들기" diff --git a/po/lt.po b/po/lt.po new file mode 100644 index 0000000..5140e0a --- /dev/null +++ b/po/lt.po @@ -0,0 +1,540 @@ +# Lithuanian translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-24 06:59+0000\n" +"Last-Translator: Mantas Kriaučiūnas \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Įdiegti sistemos paleidiklį" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Sistemos politika neleidžia įdiegti sistemos paleidimo programos" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatuoti įrenginį" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Sistemos politika neleidžia formatuoti šio įrenginio" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Sukurti įrenginio atvaizdį" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Sistemos politika neleidžia įrašyti disko atvaizdžio į šį įrenginį" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Prijungti įrenginį" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Sistemos politika neleidžia prijungti įrenginių" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Paleidimo laikmenos kūrimas" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Sukurti paleidimo laikmeną naudojant CD ar disko atvaizdį" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Diegiama" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Įdiegimas nepavyko." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Šis įrenginys per mažas, kad jame tilptų šis atvaizdis." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Trūksta laisvos vietos šiam atvaizdžiui." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD atvaizdžiai" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Disko atvaizdžiai" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Paleidžiama" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"Jūs pirmiausia pasirinkti ir Linux CD/DVD atvaizdį, ir paskirties įrenginį." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Diegimas baigtas. Galite paleisti ar įdiegti Linux sistemą paleidę " +"kompiuterį iš naujo su pajungta (įkišta) šia laikmena." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Pakartoti?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Nutraukti diegimą?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Ar tikrai norite nutraukti diegimą dabar?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Ar tikrai norite ištrinti viską iš šios laikmenos?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Ubuntu Linux bandymui ar diegimui iš keičiamosios laikmenos reikia ją " +"nustatyti kaip paleidžiamąją BIOS nustatymuose." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Linux CD/DVD atvaizdžio failas (.iso) ar įrenginys su Linux CD/DVD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Sukurti įrenginio atvaizdį" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Įdiegimas baigtas" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD įrenginys/Atvaizdis" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Atvaizdis" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OS versija" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Dydis" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Baigiama..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Išvalyti laikmeną" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Įrenginys" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Žymė" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Talpa" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Laisva vieta" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Paleidžiama..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% baigta (liko %d min %s s)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% baigta" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Diegimas baigtas. Galite paleisti ar įdiegti Linux sistemą paleidę " +"kompiuterį iš naujo su pajungta (įkišta) šia laikmena." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Ubuntu Linux bandymui ar diegimui iš keičiamosios laikmenos reikia ją " +"nustatyti kaip paleidžiamąją BIOS nustatymuose." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Linux CD/DVD atvaizdžio failas (.iso) ar įrenginys su Linux CD/DVD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Kitas…" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Keičiamoji laikmena naudojimui:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" +"Paleidus sistemą iš šios laikmenos dokumentai, nustatymai ir kiti duomenys " +"bus:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Išsaugoti specialiame faile" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Failo dydis:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" +"Naikinami išjungiant kompiuterį, nebent jūs pats išsaugosite juos kitur" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Išeiti" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Padaryti paleidžiamąją laikmeną (diską)" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Atsisakyti" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Diegimas baigtas" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Įdiegti nepavyko" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Visi" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Sukurti paleidimo laikmeną" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Plėtinys „%s“ nepalaikomas." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Įvyko išimtinė situacija:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Nepakanka laisvos vietos atvaizdžiui įrašyti:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Įdiegiamas sistemos paleidiklis..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Nepavyko įdiegti sistemos paleidiklio." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Keičiama konfigūracija..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Nepavyko perkelti syslinux failų į „%s“: %s. Galbūt „%s“ nėra Ubuntu " +"atvaizdis?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Kuriamas papildomai rezervuotos vietos failas..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Kuriama ext2 failų sistema papildomos vietos faile..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Baigiama..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Rašomas disko atvaizdis..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Nepavyko įrašyti disko atvaizdžio (%s) į įrenginį (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Šalinami failai..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Šalinami failai..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kopijuojami failai..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "kontrolinės sumos (md5) nesutampa." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Įdiegiamas sistemos paleidiklis..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Nepavyko įdiegti sistemos paleidiklio." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Nepavyko perskaityti iš %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Kontrolinės sumos nesutampa. Pakartoti?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Kontrolinės sumos nesutampa." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Įdiegti nepavyko" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Diegimas nepavyko. Daugiau informacijos rasite faile ~/.usbcreator.log.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Įdiegimas baigtas" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Išvalyti laikmeną" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Įdiegimas baigtas. Dabar galite paleisti Ubuntu kituose kompiuteriuose " +"prijungę šią laikmeną." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Pasirinkite laikmeną:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Saugomi papildomoje rezervuotoje vietoje pasirinktoje laikmenoje" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Norėdami tęsti, paleiskite šią programą kaip administratorius." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Reikalingos administratoriaus privilegijos" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Įvyko neapdorojamoji išimtinė situacija:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Klaida" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Įdėkite CD arba pasirinkite „Kitas...“" + +#~ msgid "0.0 MB" +#~ msgstr "0,0 MB" + +#~ msgid "Cancel" +#~ msgstr "Atsisakyti" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Padaryti USB paleidimo laikmeną" diff --git a/po/lv.po b/po/lv.po new file mode 100644 index 0000000..ec5bb95 --- /dev/null +++ b/po/lv.po @@ -0,0 +1,535 @@ +# Latvian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# +# FIRST AUTHOR , 2009. +# Rūdolfs Mazurs , 2010. +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-21 10:23+0000\n" +"Last-Translator: Pēteris Krišjānis \n" +"Language-Team: Latviešu \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Instalēt ielādētāju" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Sistēmas politika neļauj instalēt ielādētāju" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatēt ierīci" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Sistēmas politika neļauj formatēt ierīci" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Rakstīt ierīcē diska attēlu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Sistēmas politika neļauj ierīcē rakstīt diska attēlu" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Montēt ierīci" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Sistēmas politika nepieļauj montēšanu" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Starta diska veidotājs" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Izveidot starta disku, izmantojot CD vai diska attēlu" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Instalē" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Instalēšana neizdevās." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Ierīce nav pietiekami ietilpīga, lai ietvertu šo attēlu." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Ierīcē nav pietiekami daudz brīvas vietas." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD attēli" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Diska attēli" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Startējas" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Vispirms ir jānorāda avota attēls un mērķa ierīce." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Instalēšana ir pabeigta. Tagad varat pārstartēt datoru ar šo iekārtu, lai " +"izmēģinātu vai instalētu Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Atkārtot?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Iziet no instalēšanas?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Vai tiešām vēlaties iziet no instalēšanas tagad?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Vai esat pārliecināts, ka vēlaties dzēst visu disku?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Lai izmēģinātu vai instalētu Ubuntu no izņemamā diska, tam jābūt iestatītam " +"kā startējamam." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Avota diska attēls (.iso) vai CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Rakstīt ierīcē diska attēlu" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalēšana pabeigta" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD ierīce/attēls" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Attēls" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OS versija" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Izmērs" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Biedz..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Dzēst disku" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Ierīce" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etiķete" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Ietilpība" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Brīvā vieta" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Startē..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% pabeigti (atlicis %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% pabeigti" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Instalēšana ir pabeigta. Tagad varat pārstartēt datoru ar šo iekārtu, lai " +"izmēģinātu vai instalētu Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Lai izmēģinātu vai instalētu Ubuntu no izņemamā diska, tam jābūt iestatītam " +"kā startējamam." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Avota diska attēls (.iso) vai CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Cits..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Izņemamais disks:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Palaižot sistēmu no šī diska, dokumenti un iestatījumi tiks:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Saglabāti rezervētā vietā" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Cik daudz:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Atmesti, izslēdzot sistēmu (ja jūs tos nesaglabāsiet citur)" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Iziet" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Izveidot starta disku" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "At&celt" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalēšana pabeigta" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Instalēšana neizdevās" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Visi" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Izveidot starta disku" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Paplašinājums \"%s\" nav atbalstīts." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Parādījās nenoķerts izņēmums:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Nepietiek brīvās vietas, lai ierakstītu attēlu:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Instalē ielādētāju..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Neizdevās uzinstalēt ielādētāju." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Maina konfigurāciju..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Neizdevās pārvietot syslinux failus \"%s\": %s. Varbūt \"%s\" nav Ubuntu " +"sistēmas attēls?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Izveido pastāvīgo failu..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Izveido ext2 failsistēmu pastāvīgajā failā..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Biedz..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Raksta diska attēlu..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Neizdevās ierakstīt diska attēlu (%s) ierīcē (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Izņem failus..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Izņem failus..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kopē failus..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 kontrolsummas nesakrīt." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Instalē ielādētāju..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Neizdevās uzinstalēt ielādētāju." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Neizdevās nolasīt no %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Kontrolsummas nesakrīt. Atkārtot?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Kontrolsummas nesakrīt." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Instalēšana neizdevās" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Instalēšana neizdevās. Sīkāku informāciju lūdzu skatīt failā ~/.usbcreator." +"log.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalēšana pabeigta" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Dzēst disku" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Instalēšana ir pabeigta. Tagad varat palaist Ubuntu uz citiem datoriem, " +"ieslēdzot tos, kad ievietota šī ierīce." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Izmantot disku:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Saglabāti speciāli atvēlētā vietā" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Lai turpinātu, lūdzu, palaidiet šo programmu kā administrators." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Vajadzīgas administratora privilēģijas" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Parādījās nepārvaldīts izņēmums:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Kļūda" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Lūdzu, ievietojiet CD vai izvēlieties 'Cits...'" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Atcelt" diff --git a/po/ml.po b/po/ml.po new file mode 100644 index 0000000..a000328 --- /dev/null +++ b/po/ml.po @@ -0,0 +1,495 @@ +# Malayalam translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-11-06 12:04+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Malayalam \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "ബൂട്ട്‌‌ലോഡര്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്യുക" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "ഡിവൈസ് ഫോര്‍മാറ്റ് ചെയ്യുക" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "ഡിവൈസിന്റെ ഇമേജ് സൃഷ്‌ടിക്കുക" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "ഡിവൈസിന്റെ ഇമേജ് സൃഷ്‌ടിക്കുക" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "ബൂട്ട്‌‌ലോഡര്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്തുകൊണ്ടിരിക്കുന്നു...." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "ബൂട്ട്‌‌ലോഡര്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്യുന്നതില്‍ പരജയപ്പെട്ടു." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "ബൂട്ട്‌‌ലോഡര്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്തുകൊണ്ടിരിക്കുന്നു...." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "ബൂട്ട്‌‌ലോഡര്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്യുന്നതില്‍ പരജയപ്പെട്ടു." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/mr.po b/po/mr.po new file mode 100644 index 0000000..ac86dca --- /dev/null +++ b/po/mr.po @@ -0,0 +1,492 @@ +# Marathi translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-11-09 12:24+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Marathi \n" +"Language: mr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/ms.po b/po/ms.po new file mode 100644 index 0000000..ac9ff1b --- /dev/null +++ b/po/ms.po @@ -0,0 +1,536 @@ +# Malay translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 06:14+0000\n" +"Last-Translator: melayubuntu \n" +"Language-Team: Malay \n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Pasang pemuatboot" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Polisi sistem menghalang proses pemasangan pemuatboot" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatkan peranti" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Polisi sistem menghalang proses format peranti ini" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Imejkan peranti" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Polisi sistem menghalang proses menulis imej cakera ke peranti ini" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Lekap peranti" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Polisi sistem menghalang proses lekapan" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Pembuat Disk Ulang Mula" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Buatkan disk ulang mula mengunakan CD atau imej cakera padat." + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Memasang" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Pemasangan gagal." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Saiz cakera USB anda tidak cukup besar untuk menempatkan imej pemula." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Ruang bebas tidak mencukupi untuk imej pemula ini." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Imej-imej CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Imej-imej Cakera" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Memulakan" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"Anda mesti memilih kedua-dua sumber imej tersebut dan memilih peranti dahulu" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Pemasangan selesai. Anda sekarang boleh buka semula komputer anda dengan " +"menggunakan peranti ini untuk mencuba Ubuntu atau buat pemasangan." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Cuba lagi?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Batalkan pemasangan?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Anda pasti untuk keluar dari pemasangan sekarang?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Untuk mencuba atau memasang Ubuntu dari disk, ia perlu di tetapkan sebagai " +"disk ulang mula." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Sumber Cakera Imej (.iso) atau CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Imejkan peranti" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Pemasangan Selesai" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Pemacu CD/Imej" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Imej" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Versi OS" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Saiz" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Peranti" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Label" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapasiti" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Ruang Bebas" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Memulakan..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% selesai (%dm%ss tinggal)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% selesai" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Pemasangan selesai. Anda sekarang boleh buka semula komputer anda dengan " +"menggunakan peranti ini untuk mencuba Ubuntu atau buat pemasangan." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Untuk mencuba atau memasang Ubuntu dari disk, ia perlu di tetapkan sebagai " +"disk ulang mula." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Sumber Cakera Imej (.iso) atau CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Lain-lain" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Disk untuk digunakan:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Apabila bermula dari cakera ini, dokumen dan ketetapan akan menjadi:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Disimpan di ruang yang telah disediakan" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Berapa banyak:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" +"Batalkan semasa shutdown, kecuali anda telah menyimpannya di tempat lain" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Tamatkan" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Buat cakera pemula" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Batal" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Pemasangan selesai" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Pemasangan gagal" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Semua" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Buat Cakera USB Pemula" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Format fail \"%s\" tidak disokong." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Satu pengecualian yang tidak ditahan ditimbulkan:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Ruang bebas tidak mencukupi untuk menulis imej:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Memasang bootloader..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Gagal memasang bootloader." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Mengubah tetapan.." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"TIdak dapat memindahkan fail-fail syslinux di \"%s\": %s. Mungkin \"%s\" " +"bukan imej Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Mewujudkan fail kekal..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Mewujudkan sistem fail ext2 dalam fail kekal tersebut..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Menulis imej cakera..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Gagal tulis imej cakera (%s) ke atas peranti (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Membuang fail-fail..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Membuang fail-fail..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Menyalin fail-fail..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Checksums md5 tidak sama." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Memasang bootloader..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Gagal memasang bootloader." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Gagal baca dari %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Checksums tidak sama. Cuba lagi?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Checksums tidak sama." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Pemasangan Gagal" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Pemasangan gagal. Sila lihat ~/.usbcreator.log untuk maklumat lanjut.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Pemasangan Selesai" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Pemasangan selesai. Anda sekarang sudah boleh gunakan Ubuntu di komputer " +"lain dengan menggunakan pemacu USB ini." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Cakera untuk diguna:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Telah disimpan di dalam ruang tambahan yang ditetapkan" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Sila laksanakan program ini sebagai pentadbir untuk teruskan." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Hak pentadbir diperlukan" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Satu pengecualian yang tidak diselia berlaku:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Ralat" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Sila masukkan CD atau pilih 'Lain-lain...'" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Batal" + +#~ msgid "Format" +#~ msgstr "Format" diff --git a/po/nap.po b/po/nap.po new file mode 100644 index 0000000..8166d2e --- /dev/null +++ b/po/nap.po @@ -0,0 +1,499 @@ +# Neapolitan translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-10-04 00:26+0000\n" +"Last-Translator: cambuasciane \n" +"Language-Team: Neapolitan \n" +"Language: nap\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Resenisce" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "'E rèole d\"a sistema nun lassano lefrecà chisto pigno" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Mmaggene" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Verzione d\"o sistemo d'operazione" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Grannézze" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Pigno" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Ticchettino" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacetà" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Spazio libbero" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Cummincianno da chisto disco, 'e documiente e reolaziune sarranno:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Quande:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Ascì" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "'A stenzione \"%s\" nun se supporta" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Se ha spuntato na deroga sorpresa\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Nun rimane abbastanzo spazio libbero pe scippà 'o mmaggine\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Nun ha pututo scippà 'o mmaggine d\"o disco (%s) 'nd\"o pigno (%s)" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Caccianno 'e documiente" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Caccianno 'e documiente" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Recopienne 'e documiente" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/nb.po b/po/nb.po new file mode 100644 index 0000000..080bdfd --- /dev/null +++ b/po/nb.po @@ -0,0 +1,538 @@ +# Norwegian Bokmal translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 15:30+0000\n" +"Last-Translator: Christian Aasan \n" +"Language-Team: Norwegian Bokmal \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Installer oppstartslaster" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Systemrettigheter hindrer installasjon av oppstartslaster" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formater enheten" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Systemrettigheter hindrer formatering av denne enheten" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Lag bildefil av enheten" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Systemrettigheter hindrer skrive bildefil til enhet" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Monter en enhet" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Systemrettigheter hindrer montering" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Verktøy for oppstartdisk" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Lag oppstartsdisk ved hjelp av CD- eller diskavtrykk." + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Installerer" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Installasjonen mislyktes." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Enheten er ikke stor nok til å lagre dette bildet" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Det er ikke nok ledig plass til å lagre bildefilen." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Bildefiler fra CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Bildefiler fra disk" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Starter opp" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Du må velge både en bildefil og en målenhet før du starter." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Installasjonen er fullført. Du må nå starte datamaskinen på nytt med denne " +"enheten tilkoblet for å prøve ut eller å installere Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Prøve igjen?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Avbryte installasjonen?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Er du sikker på at du vil avbryte installasjonen nå?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Er du sikker på at du vil slette hele disken?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"For å prøve å installere Ubuntu fra en flyttbar disk må den settes opp som " +"en oppstartsdisk." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Bildefil fra CD (.iso) eller CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Lag bildefil av enheten" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Installasjon fullført" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-stasjon/bildefil" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Bildefil" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Versjon av operativsystem" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Størrelse" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Fullfører..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Slett disk" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Enhet" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etikett" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapasitet" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Ledig plass" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Starter opp..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% fullført (%dm%ss gjenstår)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% fullført" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Installasjonen er fullført. Du må nå starte datamaskinen på nytt med denne " +"enheten tilkoblet for å prøve ut eller å installere Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"For å prøve å installere Ubuntu fra en flyttbar disk må den settes opp som " +"en oppstartsdisk." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Bildefil fra CD (.iso) eller CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Annet..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Bruk følgende flyttbar disk:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Når du starter fra denne disken, vil dokumenter og innstillinger være:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Lagret på reservert område" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Hvor mye:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Forkastes ved avslutning, med mindre du lagrer dem et annet sted" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Avslutt" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Lag oppstartsdisk" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Avbryt" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Installasjonen er fullført" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Installasjon mislyktes" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Alle" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Lag oppstartsdisk" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Utvidelsen \"%s\" er ikke støttet." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Et unntak oppstod:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Ikke nok ledig plass til å lagre bildefilen:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Installerer oppstartslasteren..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Installasjon av oppstartslaster feilet." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Endrer konfigurasjon..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Kunne ikke flytte syslinux-filene i \"%s\": %s. Er \"%s\" et Ubuntu-avtrykk?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Oppretter en lagringsfil..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Oppretteret ext2 filsystem for lagringsfilen..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Fullfører..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Lager bildefil fra disk..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Kunne ikke skrive bildefil (%s) til enheten (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Fjerner filer..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Fjerner filer..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kopierer filer..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5-kontrollsummene stemmer ikke." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Installerer oppstartslasteren..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Installasjon av oppstartslaster feilet." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Klarte ikke lese fra %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Kontrollsummene stemte ikke overens. Forsøke igjen?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Kontrollsummer stemmer ikke overens." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Installasjonen mislyktes" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Installasjonen mislyktes. Vennligst sjekk ~/.usbcreator.log for detaljer.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Installasjon fullført" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Slett disk" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Installasjonen er fullført. Du kan nå kjøre Ubuntu på andre datamaskiner ved " +"å starte dem opp fra denne enheten." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disk som skal brukes:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Lagret i reservert ekstraområde" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Kjør dette programmet som administrator for å fortsette." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Administratorrettigheter påkreves" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Et unntak som ikke kunne behandles oppstod:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Feil" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Vennligst sett inn en CD eller velg 'Annet...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Avbryt" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Lag USB oppstartsdisk" + +#~ msgid "Format" +#~ msgstr "Format" diff --git a/po/nds.po b/po/nds.po new file mode 100644 index 0000000..cbb744e --- /dev/null +++ b/po/nds.po @@ -0,0 +1,495 @@ +# German, Low translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-10-18 18:08+0000\n" +"Last-Translator: Nils-Christoph Fiedler \n" +"Language-Team: German, Low \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Bootloader installeren" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Lööpwark inbinnen" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Installatschoon avbreken?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Möchten Sie die Installation jetzt wirklich beenden?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Installatschoon fertig" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Annere..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Beim starten von diesem USB-Stick werden Dokumente und Einstellungen:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Wie veel:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Bootloader installeren" + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Bootloader installeren" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Die Installation ist gescheitert" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Installatschoon fertig" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/ne.po b/po/ne.po new file mode 100644 index 0000000..00488a9 --- /dev/null +++ b/po/ne.po @@ -0,0 +1,494 @@ +# Nepali translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-10-16 05:56+0000\n" +"Last-Translator: Rabi Poudyal \n" +"Language-Team: Nepali \n" +"Language: ne\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "बुटलोडर प्रतिस्थापन गर्नुहोस्" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "डिभाइस फर्म्याट गर्नुहोस्" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "बुटलोडर प्रतिस्थापन गर्नुहोस्" + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "बुटलोडर प्रतिस्थापन गर्नुहोस्" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 0000000..2bd9da8 --- /dev/null +++ b/po/nl.po @@ -0,0 +1,539 @@ +# Dutch translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 14:13+0000\n" +"Last-Translator: cumulus007 \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "De opstartlader installeren" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Systeembeleid weerhoudt installeren van de opstartlader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Het apparaat formatteren" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Systeembeleid weerhoudt formatteren van dit apparaat" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Een image-bestand maken van het apparaat" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"Systeembeleid weerhoudt het schrijven van een image-bestand naar dit apparaat" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Een apparaat aankoppelen" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Systeembeleid weerhoudt het aankoppelen" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Opstartschijf aanmaken" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Een opstartschijf maken met een cd of image-bestand" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Installeren" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Installatie is mislukt." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Het apparaat is niet groot genoeg om dit image-bestand te bevatten." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Er is niet genoeg ruimte voor dit image-bestand." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Cd-image-bestanden" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Image-bestanden" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Opstarten" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "U moet eerst zowel een bronbestand als een doelapparaat selecteren." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Installatie is voltooid. Start de computer nu op met dit apparaat " +"aangesloten om Ubuntu te starten." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Opnieuw proberen?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Installatie stoppen?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Weet u zeker dat u de installatie wilt verlaten?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Weet u zeker dat u de gehele schijf wilt wissen?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Om Ubuntu te proberen of te installeren vanaf een verwisselbare schijf, moet " +"het medium daarvoor ingesteld worden." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Image-bestand (.iso) of cd:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Een image-bestand maken van het apparaat" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Installatie voltooid" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "cd-speler/image-bestand" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Image-bestand" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "OS-versie" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Grootte" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Voltooien…" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Schijf wissen" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Apparaat" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Label" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capaciteit" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Vrije ruimte" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Opstarten…" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% voltooid (%dm%ss resterend)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% compleet" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Installatie is voltooid. Start de computer nu op met dit apparaat " +"aangesloten om Ubuntu te starten." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Om Ubuntu te proberen of te installeren vanaf een verwisselbare schijf, moet " +"het medium daarvoor ingesteld worden." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Image-bestand (.iso) of cd:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Overig…" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Te gebruiken verwisselbare schijf:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Wanneer opgestart via dit medium, zullen documenten en instellingen:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Bewaard worden in gereserveerde ruimte" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Hoeveel:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Niet bewaard worden, tenzij ze ergens anders worden opgeslagen" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Afsluiten" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Opstartschijf aanmaken" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Annuleren" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Installatie is voltooid" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Installatie is mislukt" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Alle" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Opstartschijf aanmaken" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "De extensie \"%s\" wordt niet ondersteund." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Een uncaught exception trad op:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Niet voldoende schijfruimte om het image-bestand te schrijven:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Opstartlader installeren…" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Opstartlader installeren is mislukt." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Configuratie aanpassen…" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Kon syslinux-bestanden in \"%s\" niet verplaatsen: %s. Wellicht is \"%s\" " +"geen Ubuntu-image-bestand?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Permanent bestand aanmaken…" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "ext2-bestandssysteem aanmaken in het permanente bestand…" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Voltooien…" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Image-bestand schrijven…" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Kon het image-bestand (%s) niet naar het apparaat (%s) schrijven." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Bestanden verwijderen…" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Bestanden verwijderen…" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Bestanden kopiëren…" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5-controlesommen komen niet overeen." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Opstartlader installeren…" + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Opstartlader installeren is mislukt." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Kon niet lezen van %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Controlesommen komen niet overeen. Opnieuw proberen?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Controlesommen komen niet overeen." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Installatie mislukt" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "De installatie is mislukt. Zie ~/.usbcreator.log voor meer details.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Installatie voltooid" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Schijf wissen" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Installatie is voltooid. Start de computer nu op met dit apparaat " +"aangesloten om Ubuntu te starten." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Te gebruiken schijf:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Bewaard worden in gereserveerde extra ruimte" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Voer dit programma uit als een beheerder om verder te gaan." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Beheersrechten vereist" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Een unhandled exception trad op:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Fout" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Plaats een cd in de speler of druk op 'Overig…'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Annuleren" + +#~ msgid "Format" +#~ msgstr "Formatteren" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "USB-opstartmedium maken" diff --git a/po/oc.po b/po/oc.po new file mode 100644 index 0000000..91c7859 --- /dev/null +++ b/po/oc.po @@ -0,0 +1,540 @@ +# Occitan (post 1500) translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-18 16:50+0000\n" +"Last-Translator: Cédric VALMARY (Tot en òc) \n" +"Language-Team: Occitan (post 1500) \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Installar lo cargador d'amorsatge" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "La politica del sistèma interditz d'installar lo cargador d'amorsatge" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatar lo volum" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "La politica del sistèma interditz de formatar aqueste volum" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Far un imatge del volum" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"La politica del sistèma interditz d'escriure un imatge de disc sus aqueste " +"volum" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Montar un volum" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "La politica del sistèma interditz lo montatge" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Creator de disc d'aviada" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Crear un disc d'aviada a partir d'un CD o d'un imatge de disc" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Installacion en cors" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Fracàs de l'installacion" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Aqueste volum a pas pro d'espaci per conténer aqueste imatge." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "I a pas pro d'espaci liure per aqueste imatge." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Imatges de CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Imatges de disc" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Aviada" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"D'en primièr, vos cal causir l'imatge font e lo periferic de destinacion." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"L'installacion es acabada. Ara, podètz tornar amodar vòstre ordenador amb lo " +"periferic inserit per ensajar o installar Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Tornar ensajar ?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Quitar l'installacion ?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Sètz segur que volètz sortir de l'installacion ara ?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Sètz segur que volètz escafar entièrament lo disc ?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Per ensajar o installar Ubuntu dempuèi un disc amovible, deu èsser definit " +"coma disc d'aviada." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Imatge du disc font (.iso) o CD :" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Far un imatge del volum" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Installacion acabada" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Lector CD o imatge disc" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Imatge" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Version del sistèma operatiu" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Talha" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Finalizacion..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Escafar lo disc" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Periferic" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Libellat" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacitat" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Espaci liure" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Aviada..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% acomplit (demòra %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% acomplit" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"L'installacion es acabada. Ara, podètz tornar amodar vòstre ordenador amb lo " +"periferic inserit per ensajar o installar Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Per ensajar o installar Ubuntu dempuèi un disc amovible, deu èsser definit " +"coma disc d'aviada." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Imatge du disc font (.iso) o CD :" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Autres..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Disc amovible d'utilizar :" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" +"Al moment de l'aviada dempuèi aqueste disc, los documents e los reglatges " +"seràn :" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Estocats en espaci reservat" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Talha :" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Suprimits a l'atudament, levat se los enregistratz endacòm mai" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Quitar" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Crear un disc amorsable" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Anullar" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Installacion acabada" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "L'installacion a pas capitat" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Totes" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Crear un disc d'aviada" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "L'extension « %s » es pas presa en carga." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Una error irrecuperabla s'es producha :\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Espaci de disc insufisent per escriure l'imatge :\n" +"%s\n" +"\n" +"(%d Mio) > %s (%d Mio)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Installacion del cargador d'amorsatge…" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Fracàs de l'installacion del cargador d'amorsatge." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Modificacion de la configuracion…" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Impossible de desplaçar los fichièrs syslinux de « %s » : %s. Benlèu que " +"« %s » es pas un imatge Ubuntu." + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Creacion d'un fichièr persistent…" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Creacion d'un sistèma de fichièrs ext2 dins lo fichièr persistent…" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Finalizacion..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Escritura de l'imatge disc…" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Impossible d'escriure l'imatge disc (%s) sul periferic (%s)" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Supression dels fichièrs..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Supression dels fichièrs..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Còpia dels fichièrs..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Las somas de contraròtle MD5 concòrdan pas." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Installacion del cargador d'amorsatge…" + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Fracàs de l'installacion del cargador d'amorsatge." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Impossible de legir sus %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Las somas de contraròtle concòrdan pas. Ensajar tornamai ?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Las somas de contraròtle concòrdan pas." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "L'installacion a fracassat" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"L'installacion a fracassat. Consultatz ~/.usbcreator.log per mai " +"d'entresenhas.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Installacion acabada" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Escafar lo disc" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"L'installacion es acabada. Ara podètz utilizar Ubuntu sus d'autres " +"ordenadors en los fasent amodar sus aquesta clau USB." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disc d'utilizar :" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Enregistrats sus un espaci reservat suplementari" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" +"Executatz aqueste programa en tant qu'administrator per poder contunhar." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "De privilègis administratius son requerits" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Una error irrecuperabla s'es producha :\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Error" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Inserissètz un CD o seleccionatz « Autre… »." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 Mio" + +#~ msgid "Cancel" +#~ msgstr "Anullar" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 0000000..cfcaa27 --- /dev/null +++ b/po/pl.po @@ -0,0 +1,536 @@ +# Polish translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 06:14+0000\n" +"Last-Translator: Evan Dandrea \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Zainstaluj program rozruchowy" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Wytyczne systemowe uniemożliwiają instalację programu rozruchowego" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatuj urządzenie" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Wytyczne systemowe uniemożliwiają formatowanie tego urządzenia" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Zapisz obraz urządzenia" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"Wytyczne systemowe uniemożliwiają zapisywanie obrazu do tego urządzenia" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Zamontuj urządzenie" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Wytyczne systemowe uniemożliwiają montowanie" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Asystent dysku uruchomieniowego" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Utwórz dysk startowy używając obrazu CD" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Instalowanie" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Instalacja nie powiodła się." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Urządzenie nie ma wystarczającej pojemności, aby zmieścić ten obraz." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Brak wystarczającej ilości miejsca dla tego obrazu." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Obrazy płyt CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Obrazy płyt" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Uruchamianie" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Należy najpierw wybrać obraz źródłowy i urządzenie docelowe." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Instalacja ukończona. Można teraz uruchomić komputer ponownie z podłączonym " +"urządzeniem, aby wypróbować lub zainstalować Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Ponowić próbę?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Zakończyć instalację?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Na pewno zakończyć proces instalacji?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Aby zainstalować Ubuntu z dysku wymiennego, musi on być ustawiony jako dysk " +"startowy." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Obraz płyty źródłowej (.iso) lub płyta CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Zapisz obraz urządzenia" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalacja Zakończona" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Napęd CD-ROM/Obraz płyty" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Obraz" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Wersja systemu operacyjnego" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Rozmiar" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Urządzenie" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etykieta" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Pojemność" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Wolne miejsce" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Uruchamianie..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "Ukończono %d%% (pozostało %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "Ukończono %d%%" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Instalacja ukończona. Można teraz uruchomić komputer ponownie z podłączonym " +"urządzeniem, aby wypróbować lub zainstalować Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Aby zainstalować Ubuntu z dysku wymiennego, musi on być ustawiony jako dysk " +"startowy." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Obraz płyty źródłowej (.iso) lub płyta CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Inny..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Wybór wymiennego dysku:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Podczas uruchamiania z tego dysku dokumenty i ustawienia będą:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Przechowywane w obszarze zarezerwowanym" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Rozmiar:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Porzucone przy zamknięciu, chyba, że zostaną zapisane w innym miejscu" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Zakończ" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Utwórz dysk rozruchowy" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Anuluj" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalacja ukończona" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Instalacja nie powiodła się" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Wszystkie" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Utwórz dysk startowy" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Rozszerzenie \"%s\" nie jest obsługiwane." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Wystąpił nieprzechwycony wyjątek:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Brak wystarczającej ilości miejsca do zapisu obrazu:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Instalowanie programu rozruchowego..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Instalacja programu rozruchowego nie powiodła się." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Modyfikowanie konfiguracji..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Nie można przenieść plików systemowych Linuksa w \"%s\": %s. Czyżby \"%s\" " +"nie było obrazem Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Tworzenie trwałego pliku..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Tworzenie systemu plików ext2 w trwałym pliku..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Zapisywanie obrazu płyty..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Nie udało się zapisać obrazu płyty (%s) w urządzeniu (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Usuwanie plików..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Usuwanie plików..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kopiowanie plików..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Sumy md5 nie zgadzają się." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Instalowanie programu rozruchowego..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Instalacja programu rozruchowego nie powiodła się." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Nie udało się odczytać z %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Sumy kontrolne się nie zgadzają. Spróbować ponownie?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Sumy kontrolne się nie zgadzają." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Instalacja nie powiodła się" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Instalacja nie powiodła się. Szczegóły znajdują się w pliku ~/.usbcreator." +"log.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalacja Zakończona" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Instalacja ukończona. Można teraz uruchomić Ubuntu na innych komputerach " +"przez uruchomienie systemu z tego napędu." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Dysk do użycia:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Przechowywane w zarezerwowanym obszarze dodatkowym" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Aby kontynuować, uruchom ten program z uprawnieniami administratora." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Wymagane uprawnienia administratora" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Wystąpił nieobsłużony wyjątek:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Błąd" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Proszę wsunąć płytę CD lub wybrać \"Inne...\"." + +#~ msgid "0.0 MB" +#~ msgstr "0,0 MB" + +#~ msgid "Cancel" +#~ msgstr "Anuluj" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Tworzenie dysku startowego USB" diff --git a/po/pt.po b/po/pt.po new file mode 100644 index 0000000..2771151 --- /dev/null +++ b/po/pt.po @@ -0,0 +1,540 @@ +# Portuguese translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 05:56+0000\n" +"Last-Translator: Evan Dandrea \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Instalar o bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Uma política de sistema impede a instalação do bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatar a unidade" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Uma política de sistema impede a formatação desta unidade" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Criar uma imagem da unidade" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Uma política de sistema impede a escrita nesta unidade" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Montar a unidade" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Uma política de sistema impede a montagem" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Criador de Disco de Arranque" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Criar um disco de arranque usando um CD ou uma imagem de disco." + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "A instalar" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "A instalação falhou." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "O dispositivo nãao tem espaço suficiente para esta imagem." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Não existe espaço livre suficiente para esta imagem de disco." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Imagens de CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Imagens de CD" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "A iniciar" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"Deve de seleccionar a imagem da fonte e o dispositivo de destino primeiro." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"A instalação está completa. Pode agora reiniciar o seu computador com este " +"dispositivo inserido para tentar ou instalar o Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Tentar novamente?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Sair da instalção?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Tem a certeza que quer sair da instalação agora?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Para experimentar ou instalar o Ubuntu a partir de um disco removível, é " +"necessário que seja configurado como disco de arranque." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Ficheiro de origem (imagem .iso) ou CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Criar uma imagem da unidade" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalação Completa" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Drive de CD/Imagem" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Imagem" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Versão do SO" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Tamanho" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Dispositivo" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Nome" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacidade" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Espaço Livre" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "A iniciar..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% completado (faltam %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% completo" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"A instalação está completa. Pode agora reiniciar o seu computador com este " +"dispositivo inserido para tentar ou instalar o Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Para experimentar ou instalar o Ubuntu a partir de um disco removível, é " +"necessário que seja configurado como disco de arranque." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Ficheiro de origem (imagem .iso) ou CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Outro..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Disco removível a ser usado:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" +"Quando arrancar a partir deste disco, os documentos e as definições estarão " +"localizados em:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Armazenado num espaço reservado" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Quanto:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Ignorados após encerramento a não ser que os grave em qualquer lado" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Fechar" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Criar disco de arranque" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Cancelar" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalação completa" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "A instalação falhou" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Tudo" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Criar disco de Arranque" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "A extensão \"%s\" não é suportada." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Uma excepção foi levantada:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Espaço insuficiente para escrever a imagem:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "A instalar o bootloader..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "A instalação do bootloader falhou." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "A modificar configuração..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Impossível mover os ficheiros syslinux em \"%s\": %s. Talvez \"%s\" não será " +"uma imagem do Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "A criar um ficheiro inamovível..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "A criar um sistema de ficheiros ext2 no ficheiro inamovível..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "A escrever a imagem no disco..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Não foi possível escrever a imagem (%s) na unidade (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "A remover ficheiros..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "A remover ficheiros..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "A copiar ficheiros..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 checksums não coincidem." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "A instalar o bootloader..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "A instalação do bootloader falhou." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Não foi possível ler de %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Checksums não coincidem. Tentar de novo?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Checksums não coincidem." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "A Instalação Falhou" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"A instalação falhou. Por favor veja o ~/.usbcreator.log para mais detalhes.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalação Completa" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"A instalação está completa. Pode agora utilizar o Ubuntu em outros " +"computadores ao arrancar através da drive inserida." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disco a utilizar:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Gravado no espaço extra reservado" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Por favor execute este programa como administrador para continuar." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Os privilégios de Administrador são requeridos" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Ocorreu uma excepção não manipulada:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Erro" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Por favor introduza um CD ou seleccione 'Outro...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Criar disco de arranque USB" + +#~ msgid "Format" +#~ msgstr "F~ormato" diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 0000000..b22f77d --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,546 @@ +# Brazilian Portuguese translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 13:32+0000\n" +"Last-Translator: André Gondim \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Instalar o gerenciador de inicialização" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" +"Política do sistema impede a instalação do gerenciador de inicialização" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatar o dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Política do sistema impede a formatação deste dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Imagem do dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"Política do sistema impede a gravação de uma imagem de disco para este " +"dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Montar um dispositivo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Política do sistema impede a montagem" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Criador de discos de inicialização" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Criar um disco de inicialização usando um CD ou uma imagem de um disco" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Instalando" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Instalação falhou." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "O dispositivo não é grande o suficiente para armazenar esta imagem." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Não há espaço livre suficiente para esta imagem." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Imagens de CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Imagens de disco" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Inicializando" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"Você deve primeiramente selecionar a imagem de origem assim como a de " +"destino." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"A instalação está concluída. Agora você pode reiniciar seu computador com o " +"dispositivo conectado para testar ou instalar o Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Tentar novamente?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Finalizar a instalação?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Você deseja realmente finalizar a instalação agora?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Você tem certeza que quer apagar o disco todo?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Para testar ou instalar Ubuntu de um disco removível, é necessário " +"configurar tal disco como de inicialização." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Imagem de disco (.iso) ou CD de origem:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Imagem do dispositivo" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalação completa" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Drive de CD/Imagem" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Imagem" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Versão do SO" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Tamanho" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Concluindo..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Apagar disco" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Dispositivo" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Rótulo" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacidade" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Espaço livre" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Iniciando..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% concluído (restando %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% concluído" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"A instalação está concluída. Agora você pode reiniciar seu computador com o " +"dispositivo conectado para testar ou instalar o Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Para testar ou instalar Ubuntu de um disco removível, é necessário " +"configurar tal disco como de inicialização." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Imagem de disco (.iso) ou CD de origem:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Outro..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Disco removível a ser usado" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Quando inicializar pelo disco, documentos e configurações serão:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Armazenado no espaço reservado" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Quanto mais:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Descartados ao desligar, a menos que você salve-os em outro lugar" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Sair" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Criar um disco de inicialização" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Cancelar" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalação concluída" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Instalação falhou" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Tudo" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Criar um disco inicializável" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "A extensão \"%s\" não é suportada." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Um erro não previsto foi levantado:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Espaço livre insuficiente para escrever a imagem:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Instalando o gerenciador de inicialização..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Falha ao instalar o gerenciador de inicialização." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Modificando configuração..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Não foi possível mover arquivos syslinux em \"%s\": %s. Talvez \"%s\" não é " +"uma imagem do Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Criando um arquivo de persistência..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Criando um sistema de arquivos ext2 no arquivo de persistência..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Concluindo..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Gravando imagem do disco..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" +"Não foi possível escrever a imagem de disco (%s) para o dispositivo (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Removendo arquivos..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Removendo arquivos..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Copiando arquivos..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "checksums md5 não conferem." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Instalando o gerenciador de inicialização..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Falha ao instalar o gerenciador de inicialização." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Não foi possível ler de %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Checksums não conferem. Tentar novamente?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Checksums não conferem." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Instalação falhou" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Falha na instalação. Por favor veja ~/.usbcreator.log para maiores " +"detalhes.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalação completa" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Apagar disco" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Instalação concluída. Você agora pode usar o Ubuntu em outros computadores " +"inicializando-os com esse dispositivo inserido." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disco a ser usado:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Armazenados no espaço adicional reservado" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Por favor execute este programa como um administrador para continuar." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Privilégios de administrador são necessários" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Ocorreu uma exceção:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Erro" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Insira um CD ou pressione 'Outros...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Cancelar" + +#~ msgid "Format" +#~ msgstr "Formatar" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Criar um disco USB inicializável" diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 0000000..bf068bc --- /dev/null +++ b/po/ro.po @@ -0,0 +1,537 @@ +# Romanian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# Adi Roiban, 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-19 19:10+0000\n" +"Last-Translator: Claudia Cotună \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Instalare program de inițializare" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Regulile sistemului previn instalarea programului de pornire" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatare dispozitiv" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Regulile sistemului previn formatarea acestui dispozitiv" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Creează o imagina a dispozitivului" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"Politica sistemului nu permite scrierea unei imagini de disc pe acest " +"dispozitiv" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Montarea dizpozitiv" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Regulile sistemului previn montarea" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Creator disc de pornire" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Creează disc de pornire folosind un CD sau o imagine de disc" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Se instalează" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Instalarea a eşuat." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Dispozitivul nu este suficient de mare pentru a ține această imagine." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Nu există suficient spațiu liber pentru această imagine." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Imagini CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Imagini disc" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Se pornește" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"Trebuie mai întâi să alegeți atât imaginea sursă, cât și dispozitivul " +"destinație." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Instalarea a fost finalizată. Puteți reporni calculatorul cu acest " +"dispozitiv USB introdus pentru a încerca sau instala Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Reîncearcă?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Părăsiți instalarea?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Doriți să părăsiți instalarea acum?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Sigur doriți să ștergeți tot discul?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Pentru a încerca sau instala Ubuntu de pe un disc portabil, trebuie să-l " +"configurați ca disc de pornire." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Sursă imaginie (.iso) sau CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Creează o imagina a dispozitivului" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalare completă" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Unitate CD / Imagine" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Imagine" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Versiune SO" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Mărime" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "În curs de finalizare..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Șterge discul" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Dispozitiv" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etichetă" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Capacitate" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Spațiu liber" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Se pornește..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% complet (mai durează %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% complet" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Instalarea a fost finalizată. Puteți reporni calculatorul cu acest " +"dispozitiv USB introdus pentru a încerca sau instala Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Pentru a încerca sau instala Ubuntu de pe un disc portabil, trebuie să-l " +"configurați ca disc de pornire." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Sursă imaginie (.iso) sau CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Altă sursă..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Disc portabil folosit:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Când se va porni de pe disc, documentele și configurările vor fi:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Stocat în spațiu rezervat" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Cât de mult:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Șterse la închiderea calculatorului, dacă nu salvați în altă parte" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Ieșire" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Fă disc de pornire" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Renunță" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalare completă" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Instalare eșuată" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Tot" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Creează un disc de pornire" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Extensia „%s” nu este suportată." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"O excepție netratată a fost lansată:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Spațiu liber insuficient pentru a scrie imaginea:\n" +"%s\n" +"\n" +"(%d MO) > %s (%d MO)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Se instalează programul de pornire a sistemului..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Instalarea programului de pornire a eșuat." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Se modifică configurația..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Nu s-au putut muta fișierele syslinux în „%s”: %s. Poate „%s” nu este o " +"imagine Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Se creează un fișier de persistență..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Se creează un sistem de fișiere ext2 în fișierul de persistență..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "În curs de finalizare..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Se scrie imaginea discului..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Nu s-a putut scrie imaginea de disc (%s) pe dispozitivul (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Se șterg fișierele..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Se șterg fișierele..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Se copiază fişierele..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Sumele de control md5 nu se potrivesc." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Se instalează programul de pornire a sistemului..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Instalarea programului de pornire a eșuat." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Nu s-a putut citi de la %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Sumele de control nu se potrivesc. Reîncercați?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Sumele de control nu se potrivesc." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Instalare eșuată" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Instalarea a eșuat. Pentru mai multe detalii consultați ~/.usbcreator.log.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalare completă" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Șterge discul" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Instalarea a fost finalizată. Puteți folosi Ubuntu pe alte calculatoare prin " +"pornirea lor cu acest disc conectat." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disk de folosit:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Salvate în spațiul suplimentar rezervat" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Pentru a putea continua, porniți acest program ca administrator." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Sunt necesare privilegii de administrare" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"A apărut o excepție negestionată:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Eroare" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Introduceți CD-ul sau alegeți „Altă sursă...”." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MO" + +#~ msgid "Cancel" +#~ msgstr "Renunţă" diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 0000000..4f0a24b --- /dev/null +++ b/po/ru.po @@ -0,0 +1,540 @@ +# Russian translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 14:05+0000\n" +"Last-Translator: Alexander Nasonkin \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Установка загрузчика" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Системные политики препятствуют установке загрузчика" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Форматировать носитель" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Системные политики препятствуют форматированию этого носителя" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Создать образ с устройства" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Системные политики препятствуют записи образа диска на этот носитель" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Подключение носителя" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Системные политики препятствуют подключению" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Создание загрузочного диска" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Создание загрузочного диска с использованием CD или образа диска" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Установка" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Установка прервана." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Носитель не достаточен по размерам для этого образа." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Не хватает места для этого образа." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Образы компакт-дисков" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Образы дисков" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Запуск" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Сначала необходимо выбрать и образ источника, и целевое устройство." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Установка успешно завершена. Теперь можно перезагрузить компьютер и " +"загрузиться с подготовленного носителя, чтобы попробовать или установить " +"Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Повторить?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Прервать установку?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Вы действительно хотите прервать установку?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Вы уверены, что хотите полностью стереть диск?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Для того чтобы попробовать или установить Ubuntu со съёмного диска " +"необходимо сделать его загрузочным." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Образ установочного диска (.iso) или установочный диск:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Создать образ с устройства" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Установка завершена" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-привод или образ" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Образ" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Версия ОС" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Размер" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Завершение..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Стереть диск" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Устройство" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Метка" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Ёмкость" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Свободно" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Запуск…" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% завершено (%dm %ss осталось)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% завершено" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Установка успешно завершена. Теперь можно перезагрузить компьютер и " +"загрузиться с подготовленного носителя, чтобы попробовать или установить " +"Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Для того чтобы попробовать или установить Ubuntu со съёмного диска " +"необходимо сделать его загрузочным." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Образ установочного диска (.iso) или установочный диск:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Обзор…" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Используемый съёмный диск:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "При загрузке с этого диска, документы и настройки будут:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Сохранены в выделенном дисковом пространстве" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Размер:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Удалены при завершении работы, если вы не сохраните их куда-нибудь" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Выход" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Создание загрузочного диска" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Отмена" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Установка завершена" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Установка прервана" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Все" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Создать загрузочный диск" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Расширение «%s» не поддерживается." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Обнаружено необработанное исключение:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Недостаточно свободного места для записи образа:\n" +"%s\n" +"\n" +"(%d МБ) > %s (%d МБ)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Установка загрузчика…" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Не удалось установить загрузчик." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Изменение конфигурации…" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Невозможно переместить syslinux файлы в \"%s\": %s. Может быть \"%s\" не " +"образ Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Создание файла сохранения состояния..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Создание файловой системы ext2 в файле сохранения состояния…" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Завершение..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Запись образа диска…" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Не удалось записать образ диска (%s) на носитель (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Удаление файлов…" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Удаление файлов…" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Копирование файлов…" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "контрольные суммы md5 не совпадают." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Установка загрузчика…" + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Не удалось установить загрузчик." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Не удалось прочитать с %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Контрольные суммы не совпадают. Повторить?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Контрольные суммы не совпадают." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Установка не удалась" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "Установка не удалась. Подробности в файле ~/.usbcreator.log.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Установка завершена" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Стереть диск" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Установка завершена. Теперь можно запускать Ubuntu на других компьютерах, " +"загружаясь с этого диска" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Используемый диск:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Сохранены в выделенном дисковом пространстве" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Эту программу нухно запускать с правами администратора." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Требуются привилегии администратора" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Необработанное исключение:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Ошибка" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Вставьте компакт-диск или нажмите «Обзор...»" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 МБ" + +#~ msgid "Cancel" +#~ msgstr "Отмена" + +#~ msgid "Format" +#~ msgstr "Форматирование" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Создание загрузочного USB диска" diff --git a/po/si.po b/po/si.po new file mode 100644 index 0000000..76a6381 --- /dev/null +++ b/po/si.po @@ -0,0 +1,498 @@ +# Sinhalese translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-09-24 08:03+0000\n" +"Last-Translator: nandkum \n" +"Language-Team: Sinhalese \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "ස්ථාපනය වෙමින්" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "ස්ථාපනය අසාර්ථකයි." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "දැන් ඇරඹෙනවා" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "මෙයින් පිටවන්නද?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "ස්ථාපනය කිරීම නවත්වන්නද?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "මූලාශ්‍ර තැටිය හෝ එහි (.iso) පිටපත:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "ස්ථාපනයවී අවසානයි" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "සංයුක්ත තැටි ධාවකය / පිටපත" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "මෙහෙයුම් පද්ධති සංස්කරණය" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "විශාලත්වය" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "උපාංගය" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "ලේබලය" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "පරිමාව" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "නිදහස් ඉඩ" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "ඇරඹෙමින්..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% සම්පූර්ණයි(%dm%ss ඉතුරුයි)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% සම්පූර්ණයි" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "මූලාශ්‍ර තැටිය හෝ එහි (.iso) පිටපත:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "වෙනත්..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "මෙම තැටිය මගින් ආරම්භ කරන විට, ලිපිලේඛන හා රැචිකතා:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "කොච්චරද:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "වෙනත් තැනක සුරක්ෂා කර නොතැබුවහොත්, පරිගණකය ක්‍රියාවිරහිත කරන විට නැතිවී යයි." + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "ඉවත් කරන්න" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&අහෝසි කරන්න" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "ස්ථාපනය අසාර්ථකයි." + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "ස්ථාපනය අසමත් වී ඇත" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "සමස්ත" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "ආරම්භක තැටියක් සකසන්න" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "ස්ථාපනය අසාර්ථකයි" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "ස්ථාපනයවී අවසානයි" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"ස්ථාපනයවී අවසානයි.ඔබට දැන් මෙම තැටිය භාවිත කිරමින් වෙනත් පරිඝනක ධාවනය කළ හැකි වෙවි." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "භාවිත කිරීමට තැටි" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "වෙන්කරනලද අතිරේක ඉඩක ගබඩාකොට ඇත" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "කරැණාකර සංයුක්ත තැටියක් ඇතුල් කරන්න. එසේ නැතිනම් 'වෙනත්...' වරණය තෝරන්න" diff --git a/po/sk.po b/po/sk.po new file mode 100644 index 0000000..302e4d7 --- /dev/null +++ b/po/sk.po @@ -0,0 +1,539 @@ +# Slovak translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-21 19:11+0000\n" +"Last-Translator: pavolzetor \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Nainštalovať zavádzač systému" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Systémová politika nedovoľuje nainštalovať zavádzač systému" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Naformátovať zariadenie" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Systémová politika nedovoľuje naformátovať toto zariadenie" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Vytvoriť obraz zariadenia" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Systémová politika nedovoľuje zapísať obraz disku na toto zariadenie" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Pripojiť zariadenie" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Systémová politika nedovoľuje pripojenie diskov" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Tvorca štartovacieho disku" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Vytvorte štartovací disk pomocou CD alebo obrazu disku" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Inštaluje sa" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Inštalácia zlyhala." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Toto zariadenie nemá dostatočnú veľkosť aby pojalo tento obraz disku." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Nie je tu dostatok voľného mieste pre tento obraz disku." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD obrazy disku" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Obrazy disku" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Spúšťa sa" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Musíte prv vybrať zdrojový obraz disku a zariadenie." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Inštalácia je dokončená. Po reštartovaní počítača s týmto zapojeným " +"zariadením sa spustí Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Skúsiť znovu?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Ukončiť inštaláciu?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Skutočne chcete teraz ukončiť inštaláciu?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Ste si istý, že chcete vymazať celý disk?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Aby ste mohli vyskúšať alebo nainštalovať Ubuntu z vymeniteľného disku, musí " +"byť nastavený ako štartovací disk." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Zdrojový obraz disku (.iso) alebo CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Vytvoriť obraz zariadenia" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Inštalácia dokončená" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD mechanika/obraz disku" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Obraz disku" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Verzia OS" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Veľkosť" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Dokončuje sa..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Vymazať disk" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Zariadenie" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Popis" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapacita" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Voľné miesto" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Spúšťa sa..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% kompletných (%dm%ss zostáva)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% kompletných" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Inštalácia je dokončená. Po reštartovaní počítača s týmto zapojeným " +"zariadením sa spustí Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Aby ste mohli vyskúšať alebo nainštalovať Ubuntu z vymeniteľného disku, musí " +"byť nastavený ako štartovací disk." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Zdrojový obraz disku (.iso) alebo CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Ďalšie..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Použiť vymeniteľný disk:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Pri spustení z tohto disku, dokumenty a nastavenia budú:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Uložené na rezervovanom mieste" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Koľko:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Po vypnutí stratené, ak ich neuložíte na iné miesto" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Ukončiť" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Vytvoriť štartovací disk" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Zrušiť" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Inštalácia je dokončená" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Inštalácia zlyhala" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Všetky" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Vytvoriť štartovací disk" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Rozšírenie \"%s\" nie je podporované." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Nastala nezachytená výnimka:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Nedostatok voľného miesta na zápis obrazu disku:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Inštaluje sa zavádzač systému..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Nepodarilo sa nainštalovať zavádzač systému." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Upravujú sa nastavenia..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Nie je možné presunúť syslinux súbory v \"%s\": %s. Pravdepodobne \"%s\" nie " +"je Ubuntu image?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Vytvára sa trvalý súbor..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Vytvára sa ext2 súborový systém v trvalom súbore..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Dokončuje sa..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Zapisuje sa obraz disku..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Obraz disku (%s) nemohol byť zapísaný na zariadenie (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Odstraňujú sa súbory..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Odstraňujú sa súbory..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kopírujú sa súbory..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Kontrolné sumy md5 nesedia." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Inštaluje sa zavádzač systému..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Nepodarilo sa nainštalovať zavádzač systému." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Nepodarilo sa čítať z %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Kontrolné sumy nesedia. Skúsiť znovu?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Kontrolné sumy nesedia." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Inštalácia zlyhala" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Inštalácie zlyhala. Prosím, pozrite ~/.usbcreator.log pre viac detialov.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Inštalácia dokončená" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Vymazať disk" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Inštalácia je dokončená. Môžete teraz spúšťať Ubuntu na iných počítačoch po " +"naštartovaní z tohoto disku." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Použiť USB disk:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Uložené na špeciálne vyhradené miesto" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Pre pokračovanie, prosím, spustite tento program ako správca." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Sú potrebné správcovské práva" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Nastala nezachytená výnimka:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Chyba" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Prosím vložte CD alebo zvoľte 'Ostatné...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Zrušiť" + +#~ msgid "Format" +#~ msgstr "Formát" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Vytvoriť štartovací USB disk" diff --git a/po/sl.po b/po/sl.po new file mode 100644 index 0000000..79164fa --- /dev/null +++ b/po/sl.po @@ -0,0 +1,530 @@ +# Slovenian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-05 13:00+0000\n" +"Last-Translator: mrt \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Namesti zagonski nalagalnik" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Sistemska pravila preprečujejo nameščanje zagonskega nalagalnika" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatiraj napravo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Sistemska pravila preprečujejo formatiranje te naprave" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Napravi sliko naprave" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Sistemska pravila preprečujejo pisanje slike diska na to napravo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Priklopi napravo" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Sistemska pravila preprečujejo priklapljanje" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Ustvarjalec zagonskega diska" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Ustvari zagonski disk z uporabo CD-ja ali slike diska" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Nameščanje" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Namestitev ni uspela." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Naprava je premajhna, da bi lahko vsebovala to sliko." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Ni dovolj prostora za to sliko" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Slike CD-jev" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Slike diskov" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Zaganjanje" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Najprej morate izbrati sliko in ciljno napravo." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Namestitev je končana. Sedaj lahko ponovno zaženete svoj računalnik z " +"vstavljeno napravo USB in preveizkusite ali namestite Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Ponoven poizkus?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Ali želite zapustiti namestitev?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Ali res želite zapustiti namestitev sedaj?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Za preizkus ali namestitev Ubuntu-ja z odstranljivega diska, mora le-ta biti " +"izbran kot zagonski disk." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Izvorna slika diska (.iso) ali CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Napravi sliko naprave" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Namestitev končana" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Slika/pogon CD" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Slika" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Različica operacijskega sistema" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Velikost" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Naprava" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Oznaka" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapaciteta" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Neuporabljen prostor" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Zaganjanje ..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% končano (preostaja %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% končano" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Namestitev je končana. Sedaj lahko ponovno zaženete svoj računalnik z " +"vstavljeno napravo USB in preveizkusite ali namestite Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Za preizkus ali namestitev Ubuntu-ja z odstranljivega diska, mora le-ta biti " +"izbran kot zagonski disk." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Izvorna slika diska (.iso) ali CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Drugo ..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Uporabi odstranljivi disk:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Ob zagonu s tega diska bodo dokumenti in podatki:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Shranjeni na rezerviranem prostoru" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Koliko:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Zavrženi ob zaustavitvi, razen če jih boste shranili kam drugam" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Zaključi" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Ustvari zagonski disk" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Prekliči" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Namestitev končana" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Namestitev ni uspela" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Vse" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Ustvari zagonski disk" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Dodatek \"%s\" ni podprt." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Naslednja izjema ni bila prestrežena:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Premalo prostora za zapis slike:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Nameščanje zagonskega nalagalnika ..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Namestitev zagonskega nalagalnika je spodletela." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Spreminjanje nastavitev ..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Bi bilo mogoče premakniti datotek syslinux v \"%s\": %s. Morda \"%s\" ni " +"slika Ubuntuja?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Ustvarjanje stalne datoteke ..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Ustvarjanje datotečnega sistema ext2 v stalni datoteki ..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Zapisovanje slike..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Slike diska (%s) ni bilo mogoče zapisati na napravo (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Odstranjevanje datotek ..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Odstranjevanje datotek ..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kopiranje datotek ..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "kontrolne vsote md5 se ne ujemajo." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Nameščanje zagonskega nalagalnika ..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Namestitev zagonskega nalagalnika je spodletela." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Iz %s ni bilo mogoče brati" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Kontrolne vsote se ne ujemajo. Naj se postopek ponovno zažene?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Kontrolne vsote se ne ujemajo." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Namestitev ni uspela" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "Namestitev ni uspela. Odprite ~/.usbcreator.log za več podrobnosti.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Namestitev končana" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Namestitev je končana. Sedaj lahko zaganjate Ubuntu na drugih računalnikih " +"tako, da jih zaženete z ravnokar ustvarjenega pogona." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Uporabi naj se disk:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Shranjeni v posebnem rezerviranem prostoru" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Program zaženite kot skrbnik." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Potrebne so skrbniške pravice" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Prišlo je do neobravnavane izjeme:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Napaka" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Vstavite CD ali izberite 'Drugo ...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Prekliči" diff --git a/po/sq.po b/po/sq.po new file mode 100644 index 0000000..ed10dc8 --- /dev/null +++ b/po/sq.po @@ -0,0 +1,537 @@ +# Albanian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-18 03:14+0000\n" +"Last-Translator: Vilson Gjeci \n" +"Language-Team: Albanian \n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Instalo bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Politika e sistemit parandalon instalimin e bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formato pajisjen" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Politika e sistemit parandalon formatimin e kësaj pajisjeje" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Krijo imazh tek pajisja" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"Politika e sistemit parandalon shkruajtjen e një imazhi disku në këtë pajisje" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Monto një pajisje" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Politika e sistemit parandalon montimin" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Krijuesi i Diskut të Nisjes" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Krijoni një disk nisjeje duke përdorur një CD apo imazh disku" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Duke Instaluar" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Instalimi dëshoti." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Pajisja nuk është aq e madhe sa duhet për të mbajtur këtë imazh." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Nuk ka hapësirë të lirë sa duhet për këtë imazh." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Imazhe CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Imazhe Disku" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Duke Nisur" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" +"Ju duhet të zgjidhni fillimisht si imazhin burim edhe pajisjen shënjestër." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Instalimi është kompletuar. Tani ju mund ta rindizni kompjuterin tuaj me " +"këtë pajisje të vendosur për të provuar që të instaloni Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Ta riprovoj?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Ta lë instalimin?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Me të vërtetë doni ta lini instalimin tani?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Jeni i sigurtë që dëshironi të fshini të gjithë diskun?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Për tu përpjekur ta nisni Ubuntu nga një disk i lëvizshëm, ai duhet krijuar " +"si një disk i lëvizshëm." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Imazhi i burimit (.iso) ose CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Krijo imazh tek pajisja" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Instalimi u Kompletua" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-Drive/Imazh" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Imazhi" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Versioni i OS" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Përmasa" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Duke Përfunduar..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Fshije Diskun" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Pajisja" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etiketa" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapaciteti" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Hapësira e Lirë" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Duke nisur..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% kompletuar (%dm%ss ngelen)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% u kompletua" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Instalimi është kompletuar. Tani ju mund ta rindizni kompjuterin tuaj me " +"këtë pajisje të vendosur për të provuar që të instaloni Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Për tu përpjekur ta nisni Ubuntu nga një disk i lëvizshëm, ai duhet krijuar " +"si një disk i lëvizshëm." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Imazhi i burimit (.iso) ose CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Tjetër..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Disku i lëvizshëm që do të përdoret:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Kur niseni nga disku, dokumentet dhe parametrat do të jenë:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Ruhet në hapësirën e rezervuar" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Sa:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Do të anullohet në fikje, në rast se nuk e ruani diku gjetkë" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Largohu" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Krijo një disk nisjeje" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Anullo" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Instalimi përfundoi" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Instalimi dështoi" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Të Gjitha" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Krijo një Disk Startup" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Zgjatimi \"%s\" nuk suportohet." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Doli një përjashtim i pakapshëm:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Hapësirë e lirë e pamjaftueshme për të shkruajtur imazhin:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Duke instaluar bootloader..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Dështoi instalimi i bootloader." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Duke modifikuar konfigurimin..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Nuk mund t'i lëviz skedarët syslinux tek \"%s\": %s. Ndoshta \"%s\" nuk " +"është një imazh Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Duke krijuar një skedar qëndrueshmërie..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" +"Duke krijuar sistemin e skedarëve ext2 në skedarin e qëndrueshmërisë..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Duke Përfunduar..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Duke shkruajtur imazhin e diskut..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Nuk mund të shkruaj imazhin e diskut (%s) në pajisjen (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Duke hequr skedarët..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Duke hequr skedarët..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Duke kopjuar skedarët..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 checksums nuk përputhen." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Duke instaluar bootloader..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Dështoi instalimi i bootloader." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Nuk mund të lexoj nga %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Checksums nuk përputhen. Ta riprovoj?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Checksums nuk përputhen." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Instalimi Dështoi" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Instalimi dështoi. Ju lutemi të shikoni ~/.usbcreator.log për më tepër " +"detaje.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Instalimi u Kompletua" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Fshije Diskun" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Instalimi është kompletuar. Ju tani mund ta nisni Ubuntu në kompjutera të " +"tjerë duke i nisur ata me këtë pajisje të vendosur." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disku që do të përdoret:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "U ruajt në hapësirën ekstra të rezervuar" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Ju lutemi ta nisni këtë program si një administrator për të vazhduar." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Kërkohen privilegje administratori" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Ndodhi një përjashtim i pa kontrolluar:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Gabim" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Ju lutemi vendosni një CD ose zgjidhni 'Tjetër...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Anullo" diff --git a/po/sr.po b/po/sr.po new file mode 100644 index 0000000..51e89c8 --- /dev/null +++ b/po/sr.po @@ -0,0 +1,536 @@ +# Serbian translations for PACKAGE package +# енглески преводи за пакет PACKAGE. +# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Automatically generated, 2009. +# +# Marko Uskokovic , 2009. +msgid "" +msgstr "" +"Project-Id-Version: usbcreator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-18 08:54+0000\n" +"Last-Translator: Nikola Trifunović \n" +"Language-Team: sr \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Инсталирај bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Сигурност система не дозвољава инсталирање покретача пуњења" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Форматирај уређај" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Сигурност система не дозвољава форматирање овог уређаја" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Сними уређај" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Сигурност система не дозвољава записивање слике диска на овај уређај" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Монтирај уређај" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Сигурност система не дозвољава монтирање" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Креатор диска за покретање" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Направите диск за покретање користећи ЦД или слику диска" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Инсталирање" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Инсталација није успела." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Уређај није довољно велик да би сте на њему записали ову слику." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Нема довољно слободног простора за ову слику." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "ЦД слике" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Диск слике" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Почињем" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Као прво морате изабрати и изворну слику и одредишни уређај." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Инсталација је завршена. Сада можете да ребутујете компјутер са овим " +"уређајем прикаченим да бисте испробали или инсталирали Убунту." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Покушати поново?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Прекинути инсталацију?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Да ли заиста желите да прекинете инсталацију сада?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Да ли сте сигурни да желите да избришете читав диск ?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Да бисте пробали или инсталирали Убунту са преносивог диска, потребно је да " +"исти поставите као диск за покретање." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Изворна слика диска (.iso) или ЦД:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Сними уређај" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Инсталација је завршена" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "ЦД уређај/Слика" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Слика" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Верзија ОС" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Величина" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Завршавам..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Избриши Диск" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Уређај" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Ознака" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Капацитет" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Слободан простор" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Покретање..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% је урађено (%dm%ss преостаје)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% готово" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Инсталација је завршена. Сада можете да ребутујете компјутер са овим " +"уређајем прикаченим да бисте испробали или инсталирали Убунту." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Да бисте пробали или инсталирали Убунту са преносивог диска, потребно је да " +"исти поставите као диск за покретање." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Изворна слика диска (.iso) или ЦД:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Остало..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Преносиви диск за коришћење:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Када се систем стартује са овог диска, документи и подешавања ће бити:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Сачувани у резервисаном простору" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Колико:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" +"Одбачени приликом искључивања, осим ако их не сачувате на неком другом месту" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Заврши" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Направи диск за покретање" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Одустани" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Инсталација је завршена" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Инсталација није успела" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Све" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Направи диск за стартовање" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Екстензија \"%s\" није подржана." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Неухватљиви изузетак је искрснуо:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Нема довољно слободног простора за записивање слике:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Инсталира се bootloader...." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Инсталација bootloader-а неуспшна" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Мењање конфигурације ..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Немогуће је пребацити сислинукс датотеку у \"%s\": %s. Можда \"%s\" није " +"Убунту слика?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Креирање трајне датотеке..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Креирање 'ext2' система датотеки у трајној датотеци..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Завршавам..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Записивање слике диска..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Није могуће записати слику диска (%s) на уређај (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Уклањам датотеке..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Уклањам датотеке..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Копирам датотеке..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "'md5' суме-провере се не подударају." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Инсталира се bootloader...." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Инсталација bootloader-а неуспшна" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Немогуће је учитавање са %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Суме-провере се не подударају. Покушати поново?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Суме-провере се не подударају." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Инсталација није успела" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Инсталација није успела. Молим погледајте ~/.usbcreator.log за више детаља.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Инсталација је завршена" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Избриши Диск" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Инсталација је завршена. Сада можете покренути Убунту на другим рачунарима " +"користећи овај уређај." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Диск за употребу:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Сачувани у додатном простору" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Да бисте наставили покрените овај програм као администратор." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Неопходна су администраторска овлашћења" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Дошло је до неконтролисаног изузетка:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Грешка" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Молим вас убаците ЦД или одаберите „Остало...“." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Откажи" diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 0000000..1462c10 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,544 @@ +# Swedish translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-18 17:15+0000\n" +"Last-Translator: Daniel Nylander \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Installera starthanteraren" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Systemets policy förhindrar installation av starthanteraren" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Formatera enheten" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Systemets policy förhindrar formatering av denna enhet" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Avbilda enheten" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" +"Systemets policy förhindrar skrivning av en skivavbildning till denna enhet" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Montera en enhet" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Systemets policy förhindrar montering" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Skapa uppstartsdisk" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Skapa en uppstartsdisk med hjälp av en cd-skiva eller skivavbildning" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Installerar" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Installationen misslyckades." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Enheten är inte tillräckligt stor för att rymma denna avbildning." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" +"Det finns inte tillräckligt mycket ledigt utrymme för denna avbildning." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Cd-avbildningar" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Diskavbildningar" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Startar upp" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Du måste välja både källavbildning och målenhet först." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Installationen är färdig. Du kan nu starta om din dator med denna enhet " +"ansluten för att prova på eller installera Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Redo?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Avsluta installationen?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Vill du verkligen avsluta installationen nu?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Är du säker på att du vill radera hela disken?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"För att testa eller installera Ubuntu från en flyttbar disk så måste den " +"konfigureras som en uppstartsdisk." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Källskivsavbildning (.iso) eller CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Avbilda enheten" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Installationen är färdig" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Cd-enhet/avbildning" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Avbildning" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Operativsystemsversion" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Storlek" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Färdigställer..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Radera disk" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Enhet" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etikett" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapacitet" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Ledigt utrymme" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Startar upp..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% färdigt (%dm%ss återstår)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% färdigt" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Installationen är färdig. Du kan nu starta om din dator med denna enhet " +"ansluten för att prova på eller installera Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"För att testa eller installera Ubuntu från en flyttbar disk så måste den " +"konfigureras som en uppstartsdisk." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Källskivsavbildning (.iso) eller CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Annat..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Flyttbar disk att använda:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" +"När uppstart sker från denna disk kommer dokument och inställningar att vara:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Lagrade i reserverat utrymme" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Hur mycket:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" +"Förkastade vid avstängning, såvida inte du har sparat dem någon annanstans" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Avsluta" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Skapa en uppstartsdisk" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Avbryt" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Installationen är färdig" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Installationen misslyckades" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Alla" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Skapa startdisk" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Filändelsen \"%s\" stöds inte." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Ett ofångat undantag inträffade:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Det finns inte tillräckligt mycket ledigt utrymme för att skriva " +"avbildningen:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Installerar starthanteraren..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Misslyckades med att installera starthanteraren." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Ändrar konfigurationen..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Kunde inte flytta syslinux-filer i \"%s\": %s. Kanske är inte \"%s\" en " +"Ubuntu-avbildning?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Skapar en bestående fil..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Skapar ett ext2-filsystem i den bestående filen..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Färdigställer..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Skriver diskavbildning..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Kunde inte skriva diskavbildningen (%s) till enheten (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Tar bort filer..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Tar bort filer..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Kopierar filer..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5-kontrollsummorna stämmer inte." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Installerar starthanteraren..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Misslyckades med att installera starthanteraren." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Kunde inte läsa från %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Kontrollsummorna stämmer inte. Försök igen?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Kontrollsummorna stämmer inte." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Installationen misslyckades" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Installationen misslyckades. Se ~/.usbcreator.log för mer information.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Installationen är färdig" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Radera disk" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Installationen är färdig. Du kan nu köra Ubuntu på andra datorer genom att " +"starta upp dem med denna enhet ansluten." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Disk att använda:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Lagrade i reserverat extrautrymme" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Kör detta program som en administratör för att fortsätta." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Administrativ behörighet krävs" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Ett ohanterat undantag inträffade:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Fel" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Mata in en cd-skiva eller välj 'Annan...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Avbryt" + +#~ msgid "Format" +#~ msgstr "Formatera" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "Skapa startbar USB-enhet" diff --git a/po/te.po b/po/te.po new file mode 100644 index 0000000..074f9b6 --- /dev/null +++ b/po/te.po @@ -0,0 +1,492 @@ +# Telugu translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-12-04 18:34+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Telugu \n" +"Language: te\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/th.po b/po/th.po new file mode 100644 index 0000000..dd6f918 --- /dev/null +++ b/po/th.po @@ -0,0 +1,505 @@ +# Thai translation for usb-creator +# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2010. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-03-12 11:07+0000\n" +"Last-Translator: SiraNokyoongtong \n" +"Language-Team: Thai \n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "ฟอร์แมตอุปกรณ์" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "เมานท์อุปกรณ์" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "กำลังติดตั้ง" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "การติดตั้งล้มเหลว" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "ซีดีอิมเมจ" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "กำลังเริ่มต้น" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "ลองใหม่?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "ออกจากการติดตั้ง?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "แน่ใจหรือไม่ที่จะออกจากการติดตั้งเดี๋ยวนี้?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "การติดตั้งเสร็จสมบูรณ์" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "อิมเมจ" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "รุ่น OS" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "ขนาด" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "อุปกรณ์" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "ฉลาก" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "ความจุ" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "พื้นที่ว่าง" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "เสร็จแล้ว %d%% (เหลืออีก %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "เสร็จแล้ว %d%%" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "อื่น ๆ ..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "เท่าไร:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "ออก" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&ยกเลิก" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "ติดตั้งเรียบร้อย" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "การติดตั้งล้มเหลว" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "ทั้งหมด" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "ไม่สนับสนุนส่วนขยาย \"%s\"" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"เกิดข้อผิดพลาด:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "กำลังถอดถอนแฟ้ม..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "กำลังถอดถอนแฟ้ม..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "กำลังคัดลอกแฟ้ม..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "ผลรวม md5 ไม่ตรงกัน" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "ไม่สามารถอ่านจาก %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "ผมรวมไม่ตรงกัน ลองใหม่ไหม?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "ผมรวมไม่ตรงกัน" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "การติดตั้งล้มเหลว" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "การติดตั้งเสร็จสมบูรณ์" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "ผิดพลาด" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "ยกเลิก" + +#~ msgid "Format" +#~ msgstr "ฟอร์แมต" diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 0000000..6da9efd --- /dev/null +++ b/po/tr.po @@ -0,0 +1,540 @@ +# Turkish translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 07:23+0000\n" +"Last-Translator: EsatYuce \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Önyükleyiciyi kur" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Sistem ilkeleri önyükleyicinin kurulmasına engel oluyor" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Aygıtı biçimlendir" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Sistem ilkeleri bu aygıtın biçimlendirilmesine engel oluyor" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Aygıtın görüntüsünü oluştur" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Sistem ilkeleri bu aygıta disk görüntüsü yazılmasına engel oluyor" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Aygıtı bağla" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Sistem ilkeleri aygıt bağlamaya engel oluyor" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Başlangıç Diski Oluşturucu" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Bir CD ya da disk kalıbı kullanarak bir başlangıç diski oluşturun" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Kuruluyor" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Kurulum başarısız." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Aygıt, bu görüntüyü kapsayacak kadar geniş değil." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Bu görüntü için yeterli boş alan yok." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD Görüntüleri" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Disk Görüntüleri" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Başlatılıyor" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Öncelikle kaynak kalıp dosyasını ve hedef aygıtı seçmelisiniz." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Kurulum tamamlandı. Şimdi bilgisayarınızı bu disk takılıyken yeniden " +"başlatabilir ve Ubuntu'yu deneyebilir veya yükleyebilirsiniz." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Tekrar dene?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Yüklemeden çıkılsın mı ?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Yükleme işleminden vazgeçmek istiyor musunuz?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "Tüm diski silmek istediğinizden emin misiniz?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Kaldırılabilir bir diskten Ubuntu'yu denemek ya da kurmak için, onu bir " +"başlangıç diski olarak düzenlemek gerekir." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Kaynak disk kalıbı (.iso) ya da CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Aygıtın görüntüsünü oluştur" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Kurulum Tamamlandı" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD-Sürücü/Kalıp" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Görüntü" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "İşletim Sistemi Sürümü" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Boyut" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "Tamamlanıyor..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "Diski Sil" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Aygıt" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Etiket" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Kapasite" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Boş Alan" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Başlatılıyor..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%%%d tamamlandı (kalan süre %dm%ss)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%%%d tamamlandı" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Kurulum tamamlandı. Şimdi bilgisayarınızı bu disk takılıyken yeniden " +"başlatabilir ve Ubuntu'yu deneyebilir veya yükleyebilirsiniz." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Kaldırılabilir bir diskten Ubuntu'yu denemek ya da kurmak için, onu bir " +"başlangıç diski olarak düzenlemek gerekir." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Kaynak disk kalıbı (.iso) ya da CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Diğer..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Kullanılacak çıkarılabilir disk:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Bu diskten başlatıldığında, belgeler ve ayarlar:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Ayrılmış alanda saklanır" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Boyut:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Başka yerde kaydetmedikçe sistem kapatılınca silinecektir" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Çık" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Açılış diski yap" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "İ&ptal" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Kurulum tamamlandı" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Kurulum başarısız oldu" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Tümü" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Başlangıç Diski Oluştur" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "\"%s\" uzantısı desteklenmiyor." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Çözülemeyen kural dışı bir durum belirdi:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Görüntüyü yazmak için yeterli boş alan yok:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Önyükleyici kuruluyor..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Önyükleyici kurulamadı." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Yapılandırma değiştiriliyor..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"\"%s\": %s deki syslinux dosyalarını taşıyamadı. \"%s\" bir Ubuntu kalıbı " +"olmayabilir mi?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Devamlılık dosyası oluşturuluyor..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Devamlılık dosyası içinde ext2 dosya sistemi oluşturuluyor..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "Tamamlanıyor..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Disk görüntüsü yazılıyor..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Disk görüntüsü (%s), aygıta (%s) yazılamadı." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Dosyalarda siliniyor..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Dosyalarda siliniyor..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Dosyalar kopyalanıyor..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 sağlama toplamı sonucu eşit değil." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Önyükleyici kuruluyor..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Önyükleyici kurulamadı." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "%s kaynağından okunamadı" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Sağlama toplama sonucu eşit değil. Tekrar dene?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Sağlama toplama sonucu eşit değil." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Yükleme Başarısız" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Kurulum başarısız oldu. Daha fazla bilgi için ~/.usbcreator.log dosyasına " +"bakın.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Kurulum Tamamlandı" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "Diski Sil" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Kurulum tamamlandı. Artık başka bilgisayarları bu diskten başlatarak Ubuntu " +"çalıştırabilirsiniz." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Kullanılacak olan disk:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Ayrılan ek boş alan içine kaydet" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Lütfen devam etmek için bu programı bir yönetici olarak çalıştırın." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Yönetici yetkileri gerekli" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Çözülemeyen kural dışı bir durum oluştu.\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Hata" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Lütfen CD takın ya da 'Diğer...'den seçin." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "İptal" + +#~ msgid "Format" +#~ msgstr "Biçimlendir" + +#~ msgid "Make USB Startup Disk" +#~ msgstr "USB Başlangıç Diski Oluştur" diff --git a/po/ug.po b/po/ug.po new file mode 100644 index 0000000..7fe5c5e --- /dev/null +++ b/po/ug.po @@ -0,0 +1,496 @@ +# Uighur translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-03-25 03:54+0000\n" +"Last-Translator: Burkut \n" +"Language-Team: Uighur \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "باش قوزغاتقۇچنى قاچىلاش" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "سىستىما تەڭشىكى باش قوزغاتقۇچ قاچىلاشنى رەت قىلىدۇ" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "ئۇسكىنىنى فورماتلاش" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "سىستىما تەڭشىكى بۇ ئۈسكىنىنى فورماتلاشتىن چەكلەيدۇ" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "ئۈسكىنى تەسۋىرلەش" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "سىستىما تەڭشىكى بۇ ئۈسكىنىگە دىسكا تەسۋىرى يىزىشنى رەت قىلىدۇ" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "ئۈسكىنە قوشۇش" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "سىستىما تەڭشىكى قوشۇشنى رەت قىلىدۇ" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "ئورنىتىش" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "قاچىلاش مەغلۇب" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "دىسكا تەسۋىرى" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "قوزغىلىۋاتىدۇ" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "ئۈسكىنى تەسۋىرلەش" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "تەسۋىر" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "سىستىما نەشىرى" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "رەزمىرى" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "ئۈسكۈنە" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "بەلگە" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "سىغىمى" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "بىكار بوشلۇق" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "قوزغىلىۋاتىدۇ" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "باشقىلار..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "قانچە:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "چېكىنىش" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "قوزغىتىش دىسكىسى ياساش" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "ئەمەلدىن قالدۇرۇش(&C)" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "قاچىلاش تامام" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "قاچىلاش مەغلۇب" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "بارلىق" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "باش قوزغاتقۇچ قاچىلىنىۋاتىدۇ" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "باش قوزغاتقۇچنى قاچىلاش مەغلۇب بولدى" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "تەڭشەكلەرنى تەڭشەۋاتىدۇ" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "ساقلىنىدىغان ھۆججەت قۇرىۋاتىدۇ..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "دىسكا تەسۋىرى يىزىلىۋاتىدۇ" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "ھۆججەتلەر يۆتكىلىۋاتىدۇ" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "ھۆججەتلەر يۆتكىلىۋاتىدۇ" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "ھۆججەت كۆچۈرۈۋاتىدۇ…" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "باش قوزغاتقۇچ قاچىلىنىۋاتىدۇ" + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "باش قوزغاتقۇچنى قاچىلاش مەغلۇب بولدى" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/uk.po b/po/uk.po new file mode 100644 index 0000000..411226a --- /dev/null +++ b/po/uk.po @@ -0,0 +1,534 @@ +# Ukrainian translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-17 06:11+0000\n" +"Last-Translator: Evan Dandrea \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Встановити bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Системні політики не дозволяють встановити bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Форматувати пристрій" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Системні політики не дозволяють форматувати пристрій" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Образ на пристрій" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Системні політики не дозволяють записати образ диску на цей пристрій" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Монтувати пристрій" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Системні політики не дозволяють монтувати" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Створення завантажувального диска" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Створення завантажувального диска з CD або образа диска" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Встановлення" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Помилка встановлення." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Пристрій замалий для цього образу." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Недостатньо вільного місця для цього образу." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Образи компакт-дисків" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Образи дисків" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Починаю" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Вам спочатку необхідно вибрати образ диска і пристрій для запису." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Встановлення завершено. Тепер Ви можете перезавантажити комп'ютер, щоб " +"спробувати встановити Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Повторити?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Перервати процес встановлення?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Ви дійсно бажаєте перервати встановлення?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Для того, щоб спробувати або встановити Ubuntu із знімного диска, його " +"потрібно налаштувати у якості завантажувального диска." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Образ диску (.iso) або CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Образ на пристрій" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Встановлення завершено" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Образ/Пристрій CD" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Образ" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Версія ОС" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Розмір" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Пристрій" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Мітка" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Ємність" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Вільне місце" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Починаю..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% завершено (%dm%ss залишилось)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% завершено" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Встановлення завершено. Тепер Ви можете перезавантажити комп'ютер, щоб " +"спробувати встановити Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Для того, щоб спробувати або встановити Ubuntu із знімного диска, його " +"потрібно налаштувати у якості завантажувального диска." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Образ диску (.iso) або CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Інший…" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Який диск використовувати:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" +"Якщо завантажуватись з цього диска, то документи і налаштування будуть:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Збережено в зарезервованому місці" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Скільки:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" +"Вилучаться після вимкнення комп'ютера, якщо Ви їх не збережете в іншому місці" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Вихід" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Створити диск, що завантажується" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Cancel" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Встановлення завершено" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Встановлення не вдалося" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Усі" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Створити завантажувальний диск" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Розширення \"%s\" не підтримується." + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Сталася невиправна помилка:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Недостатньо вільного місця для запису образу:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Встановлюю bootloader..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Не вдалося встановити bootloader." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Змінюю конфігурацію..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Неможливо перемістити файли syslinux в \"%s\": %s. Може \"%s\" не образ " +"Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Створення файлу віртуального середовища системи..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Створення файлової системи ext2 в файлі віртуального середовища..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Створення образу диска" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Не можу записати образ диска (%s) на пристрій (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Вилучення файлів..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Вилучення файлів..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Копіювання файлів..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Контрольні суми md5 не збігаються." + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Встановлюю bootloader..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Не вдалося встановити bootloader." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Не можу прочитати з %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Контрольні суми не співпадають. Повторити?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Контрольні суми не співпадають." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Сталась помилка при встановленні" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" +"Встановлення припинено через помилку. Будь ласка перегляньте ~/.usbcreator." +"log для подробиць.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Встановлення завершено" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Встановлення завершене. Тепер Ви можете запускати Ubuntu на інших " +"комп'ютерах, завантажуючись з цього пристрою." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Використати диск:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Збережені в зарезервованому місці" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Необхідно запустити цю програму з правами адміністратора." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Необхідні права адміністратора" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Сталася якась помилка:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Помилка" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Будь ласка, вставте CD або виберіть 'Інше...'." + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "Скасувати" diff --git a/po/usbcreator.pot b/po/usbcreator.pot new file mode 100644 index 0000000..7e704f7 --- /dev/null +++ b/po/usbcreator.pot @@ -0,0 +1,519 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. #-#-#-#-# usbcreator.pot (PACKAGE VERSION) #-#-#-#-# +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 usbcreator/frontends/kde/frontend.py:189 +msgid "Installing" +msgstr "" + +#. #-#-#-#-# usbcreator.pot (PACKAGE VERSION) #-#-#-#-# +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +#: usbcreator/frontends/kde/frontend.py:217 +msgid "Installation failed." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +#: usbcreator/frontends/kde/frontend.py:379 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +#: usbcreator/frontends/kde/frontend.py:381 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +#: usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. #-#-#-#-# usbcreator.pot (PACKAGE VERSION) #-#-#-#-# +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +#: usbcreator/frontends/kde/frontend.py:417 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +#: usbcreator/frontends/kde/frontend.py:417 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +#: usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +#: usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +#: usbcreator/frontends/kde/frontend.py:469 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +#: usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 usbcreator/frontends/kde/frontend.py:492 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 usbcreator/frontends/kde/frontend.py:493 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. #-#-#-#-# usbcreator.pot (PACKAGE VERSION) #-#-#-#-# +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +#: usbcreator/frontends/kde/frontend.py:524 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 usbcreator-kde.ui.py:12 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 usbcreator-kde.ui.py:15 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 usbcreator-kde.ui.py:18 +msgid "Size" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 usbcreator-kde.ui.py:42 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 usbcreator-kde.ui.py:30 +msgid "Device" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 usbcreator-kde.ui.py:33 +msgid "Label" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 usbcreator-kde.ui.py:36 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 usbcreator-kde.ui.py:39 +msgid "Free Space" +msgstr "" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 usbcreator-kde.ui.py:6 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 usbcreator-kde.ui.py:9 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 usbcreator-kde.ui.py:24 +msgid "Other..." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 usbcreator-kde.ui.py:45 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 usbcreator-kde.ui.py:51 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 usbcreator-kde.ui.py:57 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 usbcreator-kde.ui.py:63 +msgid "Quit" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 usbcreator-kde.ui.py:3 +#: usbcreator-kde.ui.py:60 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +msgid "Rebooting device..." +msgstr "" + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "" + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "" + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 usbcreator-kde.ui.py:27 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 usbcreator-kde.ui.py:48 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" + +#: usbcreator-kde.ui.py:21 +msgid "Please insert a CD or select 'Other...'." +msgstr "" + +#: usbcreator-kde.ui.py:54 +msgid "0.0 MB" +msgstr "" + +#: usbcreator/frontends/kde/frontend.py:187 +msgid "Cancel" +msgstr "" diff --git a/po/uz.po b/po/uz.po new file mode 100644 index 0000000..5a5caa1 --- /dev/null +++ b/po/uz.po @@ -0,0 +1,493 @@ +# Uzbek translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2009-10-08 07:40+0000\n" +"Last-Translator: Sardorbek Pulatov (pROCKrammer) \n" +"Language-Team: Uzbek \n" +"Language: uz\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Форматлаш" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Урнатилиш" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Ўрнатиш муваффақиятсиз тугади." + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +msgid "Source disc image (.img):" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +msgid "Target device:" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +msgid "Install Ubuntu Core" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Расм" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Ўлчами" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Ускуна" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Ёрлиқ" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Бўш жой" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Бошқа..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Чиқиш" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "" + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "" + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "" + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "" + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Файллар учирилмокда..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Файллар учирилмокда..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Файллардан нусха олинмоқда..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "" + +#: .././usbcreator/install.py:537 +msgid "Installing the EFI bootloader..." +msgstr "" + +#: .././usbcreator/install.py:538 +msgid "Failed to install the EFI bootloader." +msgstr "" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:3 +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" + +#: .././main.py:56 +msgid "Error" +msgstr "" diff --git a/po/vi.po b/po/vi.po new file mode 100644 index 0000000..71910ca --- /dev/null +++ b/po/vi.po @@ -0,0 +1,530 @@ +# Vietnamese translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-05 03:51+0000\n" +"Last-Translator: Vu Do Quynh \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "Cài bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "Hệ thống không cho phép cài bootloader" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "Định dạng thiết bị" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "Hệ thống không cho phép định dạng thiết bị này" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "Tạo tệp ảnh của thiết bị" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "Hệ thống không cho phép viết tệp ảnh trên thiết bị này" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "Gắn thiết bị" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "Hệ thống không chó phép gắn kết" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "Tạo ra ổ khởi động" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "Tạo ra ổ khởi động dùng đĩa CD hoặc tệp ảnh" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "Đang cài đặt" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "Cài đặt thất bại" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "Thiết bị không đủ kích thước lưu trữ cho tệp ảnh này." + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "Không đủ không gian trống cho tệp ảnh này." + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "Tệp ảnh CD" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "Tệp ảnh Đĩa" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "Bắt đầu" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "Cần chọn cả nguồn tệp ảnh và thiết bị đích trước." + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"Quá trình cài đặt đã hoàn tất. Bạn có thể khởi động máy tính với thiết bị " +"này để thử hoặc cài đặt Ubuntu." + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "Thử lại ?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "Thôi cài đặt?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "Bạn có thật sự muốn thoát khỏi trình cài đặt không?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "" +"Muốn thử hoặc cài đặt Ubuntu từ một ổ tháo được, cần cấu hình nó để khởi " +"động đượ máy tính." + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "Tập tin ảnh đĩa nguồn (.iso) hoặc CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "Tạo tệp ảnh của thiết bị" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "Cài đặt đã hoàn thành" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "Ổ/Ảnh CD" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "Tập tin ảnh" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "Phiên bản HĐH" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "Dung lượng" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "Thiết bị" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "Nhãn đĩa" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "Dung lượng" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "Không gian trống" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "Đang khởi động..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% hoàn tất (còn lại %d phút %s giây)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "đã xong %d%%" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"Quá trình cài đặt đã hoàn tất. Bạn có thể khởi động máy tính với thiết bị " +"này để thử hoặc cài đặt Ubuntu." + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "" +"Muốn thử hoặc cài đặt Ubuntu từ một ổ tháo được, cần cấu hình nó để khởi " +"động đượ máy tính." + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "Tập tin ảnh đĩa nguồn (.iso) hoặc CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "Khác..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "Xác định ô tháo được để dùng:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "Khi khởi động từ đĩa này, tài liệu và thiết lập sẽ là:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "Chứa trong vùng dành riêng" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "Bao nhiêu:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "Sẽ bị xóa đi khi tắt máy, trừ khi đã được lưu vào nơi khác" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "Thoát" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "Tạo ra đĩa khởi động" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "&Thôi" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "Quá trình cài đặt đã hoàn tất" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "Cài đặt thất bại" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "Tất cả" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "Tạo Đĩa Khởi động" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "Tên đuôi tệp \"%s\" không được hỗ trợ" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"Có ngoại lệ không được bắt:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"Không đủ không gian trống để ghi tệp ảnh:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "Cài đặt bootloader" + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "Cài bootloader không thành công." + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "Chỉnh sửa cấu hình..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "" +"Không di chuyển được các tệp syslinux trong \"%s\": %s. Có thể \"%s\" không " +"phải là một tệp ảnh Ubuntu?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "Đang tạo một tệp lưu lại số liệu..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "Đang tạo hệ thống tệp dạng ext2 trong tệp lưu lại số liệu..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "Đang ghi tệp ảnh..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "Không ghi được tệp ảnh (%s) vào thiết bị (%s)." + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "Đang loại bỏ tệp..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "Đang loại bỏ tệp..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "Đang chép tệp..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "Tổng kiểm md5 không khớp" + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "Cài đặt bootloader" + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "Cài bootloader không thành công." + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "Không đọc được từ %s" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "Tổng kiểm không khớp. Thử lại?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "Tổng kiểm không khớp." + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "Cài đặt đã thất bại" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "Cài đặt thất bại. Vui lòng xem chi tiết trong tệp ~/.usbcreator.log.\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "Cài đặt đã hoàn thành" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "" +"Cài đặt hoàn tất. Bây giờ bạn có thể chạy Ubuntu trên các máy tính khác bằng " +"cách khởi động từ đĩa này." + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "Dùng đĩa:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "Lưu vào không gian thêm đã dự trữ" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "Vui lòng chạy chương trình này với quyền quản trị để tiếp tục." + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "Yêu cầu phải có quyền quản trị" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"Có ngoại lệ không được bắt:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "Lỗi" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "Vui lòng đưa CD vào hoặc chọn 'Khác...'." + +#~ msgid "0.0 MB" +#~ msgstr "0,0 MB" + +#~ msgid "Cancel" +#~ msgstr "Hủy" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 0000000..922dae2 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,523 @@ +# Simplified Chinese translation for usb-creator +# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-20 08:09+0000\n" +"Last-Translator: Xhacker Liu \n" +"Language-Team: Simplified Chinese \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "安装启动引导程序" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "系统策略阻止安装启动引导程序" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "格式化设备" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "系统策略阻止格式化该设备" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "生成设备镜像" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "系统策略阻止向此设备写入磁盘映像" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "挂载设备" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "系统策略阻止挂载" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "启动盘创建器" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "使用光盘或镜像来创建一个启动盘" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "正在安装" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "安装失败。" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "设备空间不够容纳此映像。" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "没有足够的剩余空间来容纳此映像。" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD 映像" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "磁盘映像" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "正在启动" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "您必须首先选择源镜像和目标设备。" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "安装完成。现在您可以重新启动计算机并插入此设备试用或安装 Ubuntu。" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "重试?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "确认退出安装吗?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "您确定现在要退出安装吗?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "您确定要格式化整个磁盘吗?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "将从移动盘安装 Ubuntu,需先使其设为启动盘" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "来自 iso 镜像文件或 CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "生成设备镜像" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "安装完毕" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "CD 驱动器/映像" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "镜像" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "操作系统版本" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "大小" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "即将完成..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "格式化磁盘" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "设备" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "卷标" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "容量" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "剩余空间" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "正在启动..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "完成 %d%% (剩余%d分%s秒)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "完成 %d%%" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "安装完成。现在您可以重新启动计算机并插入此设备试用或安装 Ubuntu。" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "将从移动盘安装 Ubuntu,需先使其设为启动盘" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "来自 iso 镜像文件或 CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "其它..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "将使用的可移动磁盘:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "从该磁盘启动时,文档和设置将:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "储存在保留的空间" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "储存空间:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "在关机时被清除,除非您将其保存在其他地方。" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "退出" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "制作启动盘" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "取消(&C)" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "安装完成" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "安装失败" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "全部" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "制作启动盘" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "不支持扩展名“%s”。" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"出现了未捕获的异常:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"剩余空间不足以写入映像:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "正在安装引导装载程序..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "安装引导装载程序失败。" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "正在修改配置..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "无法移动 %s 中的 syslinux 文件:%s。可能 %s 不是一个 Ubuntu 映像?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "正在创建连续文件..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "正在连续文件中创建ext2文件系统..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "即将完成..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "正在写入磁盘映像..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "无法将映像(%s)写入到设备(%s)。" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "正在删除文件..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "正在删除文件..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "正在复制文件..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "MD5 校验值不符。" + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "正在安装引导装载程序..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "安装引导装载程序失败。" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "无法从 %s 读取" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "校验值不符。重试?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "校验值不符。" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "安装失败" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "安装失败。更多细节请查看 ~/.usbcreator.log。\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "安装完毕" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "格式化磁盘" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "安装完成。您现在就可以将此驱动器插到别的计算机上启动 Ubuntu 了。" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "要使用的磁盘:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "储存在额外保留的空间" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "请以管理员身份运行此程序并继续。" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "需要管理员权限" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"发生了未处理的异常:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "错误" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "请插入一张光盘或选择“其他...”。" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "取消" + +#~ msgid "Format" +#~ msgstr "格式化" diff --git a/po/zh_HK.po b/po/zh_HK.po new file mode 100644 index 0000000..3244284 --- /dev/null +++ b/po/zh_HK.po @@ -0,0 +1,520 @@ +# Chinese (Hong Kong) translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-09 03:53+0000\n" +"Last-Translator: Roy Chan \n" +"Language-Team: Chinese (Hong Kong) \n" +"Language: zh_HK\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "安裝開機載入程式" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "系統策略防止安裝開機載入程式" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "格式化這個裝置" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "系統策略防止格式化此裝置" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "為裝置製作映像" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "系統策略防止寫入磁碟映像檔至此裝置" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "掛載一個裝置" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "系統策略防止掛載" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "啟動磁碟建立程式" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "使用 CD 或光碟映像檔建立啟動磁碟" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "安裝中" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "安裝失敗。" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "這個裝置沒有足夠空間來保存此映像檔。" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "沒有足夠可用空間給此映像檔。" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD 映像檔" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "磁碟映像檔" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "啟動中" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "您必須先把來源映像檔與目標裝置兩者都選取。" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"安裝完成。您現在可以插入此裝置並重新啟動您的電腦,來試用或安裝 Ubuntu。" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "要重試嗎?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "要退出安裝嗎?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "你真的想現在退出安裝嗎?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "從可移除式磁碟嘗試、或者安裝 Ubuntu,它需要被設為啟動磁碟。" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "來源光碟映像檔(.iso)或是 CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "為裝置製作映像" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "安裝完成" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "光碟機/映像檔" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "映像檔" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "作業系統版本" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "容量大小" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +msgid "Erasing..." +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "裝置" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "標籤" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "容量" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "剩餘空間" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "啟動中..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% 完成(剩餘 %d 分 %s 秒)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% 完成" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"安裝完成。您現在可以插入此裝置並重新啟動您的電腦,來試用或安裝 Ubuntu。" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "從可移除式磁碟嘗試、或者安裝 Ubuntu,它需要被設為啟動磁碟。" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "來源光碟映像檔(.iso)或是 CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "其他…" + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "要使用的可移除式磁碟:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "當從這個磁碟啟動時,文件與設定值將會是:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "存於預留空間" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "多少:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "關機時會被取消,除非你將它們存到其他地方。" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "退出" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "製作啟動磁碟" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "取消 (&C)" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "安裝完成" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "安裝失敗" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "所有" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "製作啟動磁碟" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "不支援「%s」延伸。" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"產生一個無法捕捉的例外:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"沒有足夠可用空間來寫入映像檔:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "安裝開機載入程式中..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "未能安裝開機載入程式。" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "修改配置中..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "無法移動「%s」內的 syslinux 檔案:%s。或許「%s」不是 Ubuntu 映像檔?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "建立永久性檔案中..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "在永久性檔案內建立 ext2 檔案系統中..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "" + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "寫入磁碟映像檔中..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "無法寫入磁碟映像檔(%s)至裝置(%s)。" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "移除檔案中..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "移除檔案中..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "複製檔案中..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "MD5 校驗和並不一致。" + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "安裝開機載入程式中..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "未能安裝開機載入程式。" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "無法從 %s 中讀取" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "校驗和並不一致,要重試?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "校驗和並不相乎。" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "安裝失敗" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "安裝失敗。更多細節請參考 ~/.usbcreator.log。\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "安裝完成" + +#: .././gui/usbcreator-gtk.ui.h:6 +msgid "Test Disk" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "安裝已完成。您可以將此磁碟插入其他電腦,並以它們開機來執行 Ubuntu。" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "要使用的磁碟:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "存放在保留的額外空間" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "請以管理員身份執行此程式以繼續。" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "需要有管理員權力" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"發生一個未處理的例外:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "錯誤" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "請插入 CD 或選擇「其他...」。" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "取消" diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 index 0000000..1d36590 --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,522 @@ +# Traditional Chinese translation for usb-creator +# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 +# This file is distributed under the same license as the usb-creator package. +# FIRST AUTHOR , 2009. +# +msgid "" +msgstr "" +"Project-Id-Version: usb-creator\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-01-28 12:46+0000\n" +"PO-Revision-Date: 2010-04-24 06:06+0000\n" +"Last-Translator: Cheng-Chia Tseng \n" +"Language-Team: Traditional Chinese \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2010-05-03 03:20+0000\n" +"X-Generator: Launchpad (build Unknown)\n" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:1 +msgid "Install the bootloader" +msgstr "安裝開機載入程式" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:2 +msgid "System policy prevents installing the bootloader" +msgstr "系統策略防止安裝開機載入程式" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:3 +msgid "Format the device" +msgstr "格式化這個裝置" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:4 +msgid "System policy prevents formatting this device" +msgstr "系統策略防止格式化此裝置" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:5 +msgid "Image the device" +msgstr "將映像檔寫入這個裝置" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:6 +msgid "System policy prevents writing a disk image to this device" +msgstr "系統策略防止寫入磁碟映像檔至此裝置" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:7 +msgid "Mount a device" +msgstr "掛載一個裝置" + +#: .././dbus/com.ubuntu.usbcreator.policy.in.h:8 +msgid "System policy prevents mounting" +msgstr "系統策略防止掛載" + +#: .././desktop/usb-creator-gtk.desktop.in.h:1 +#: .././desktop/usb-creator-kde.desktop.in.h:1 +msgid "Startup Disk Creator" +msgstr "開機磁碟建立程式" + +#: .././desktop/usb-creator-gtk.desktop.in.h:2 +#: .././desktop/usb-creator-kde.desktop.in.h:2 +msgid "Create a startup disk using a CD or disc image" +msgstr "使用 CD 或光碟映像檔建立開機磁碟" + +#. set title of progress window (same as gtk frontend) +#: .././usbcreator/frontends/kde/frontend.py:189 +#: .././usbcreator/frontends/winui/install_window.py:23 +#: .././gui/usbcreator-gtk.ui.h:8 +msgid "Installing" +msgstr "安裝中" + +#. TODO evand 2009-07-28: Better error message. +#: .././usbcreator/frontends/kde/frontend.py:217 +#: .././usbcreator/frontends/gtk/frontend.py:730 +#: .././usbcreator/frontends/winui/frontend.py:87 +msgid "Installation failed." +msgstr "安裝失敗。" + +#: .././usbcreator/frontends/kde/frontend.py:379 +#: .././usbcreator/frontends/gtk/frontend.py:471 +msgid "The device is not large enough to hold this image." +msgstr "這個裝置沒有足夠空間來保存此映像檔。" + +#: .././usbcreator/frontends/kde/frontend.py:381 +#: .././usbcreator/frontends/gtk/frontend.py:473 +msgid "There is not enough free space for this image." +msgstr "沒有足夠可用空間給此映像檔。" + +#: .././usbcreator/frontends/kde/frontend.py:384 +msgid "The device needs to be formatted for use." +msgstr "" + +#. TODO evand 2009-07-28: The list itself needs to be moved into the +#. base frontend. +#. To be displayed as a list of file type filters. +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:623 +#: .././usbcreator/frontends/winui/frontend.py:181 +msgid "CD Images" +msgstr "CD 映像檔" + +#: .././usbcreator/frontends/kde/frontend.py:417 +#: .././usbcreator/frontends/gtk/frontend.py:624 +#: .././usbcreator/frontends/winui/frontend.py:182 +msgid "Disk Images" +msgstr "磁碟映像檔" + +#: .././usbcreator/frontends/kde/frontend.py:433 +msgid "Starting up" +msgstr "啟動中" + +#: .././usbcreator/frontends/kde/frontend.py:442 +msgid "You must select both source image and target device first." +msgstr "您必須先把來源映像檔與目標裝置兩者都選取。" + +#: .././usbcreator/frontends/kde/frontend.py:469 +#: .././usbcreator/frontends/winui/frontend.py:73 +msgid "" +"The installation is complete. You may now reboot your computer with this " +"device inserted to try or install Ubuntu." +msgstr "" +"安裝完成。您現在可以插入此裝置並重新啟動您的電腦,來試用或安裝 Ubuntu。" + +#: .././usbcreator/frontends/kde/frontend.py:480 +msgid "Retry?" +msgstr "要重試嗎?" + +#: .././usbcreator/frontends/kde/frontend.py:492 +#: .././gui/usbcreator-gtk.ui.h:9 +msgid "Quit the installation?" +msgstr "要退出安裝嗎?" + +#: .././usbcreator/frontends/kde/frontend.py:493 +#: .././gui/usbcreator-gtk.ui.h:10 +msgid "Do you really want to quit the installation now?" +msgstr "你真的想現在退出安裝嗎?" + +#. TODO information about the device we're about to format. +#: .././usbcreator/frontends/kde/frontend.py:524 +#: .././usbcreator/frontends/gtk/frontend.py:791 +msgid "Are you sure you want to erase the entire disk?" +msgstr "您確定您想要抹除這整個磁碟嗎?" + +#: .././usbcreator/frontends/gtk/frontend.py:133 +#, fuzzy +msgid "To run Ubuntu on a portable device, it needs to be set up first." +msgstr "若要從可移除式磁碟嘗試或者安裝 Ubuntu,那麼需要先將它設為開機磁碟。" + +#: .././usbcreator/frontends/gtk/frontend.py:134 +#, fuzzy +msgid "Source disc image (.img):" +msgstr "來源光碟映像檔 (.iso) 或是 CD:" + +#: .././usbcreator/frontends/gtk/frontend.py:135 +#, fuzzy +msgid "Target device:" +msgstr "將映像檔寫入這個裝置" + +#: .././usbcreator/frontends/gtk/frontend.py:136 +msgid "Ubuntu Core Installer" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:137 +#, fuzzy +msgid "Install Ubuntu Core" +msgstr "安裝完成" + +#: .././usbcreator/frontends/gtk/frontend.py:138 +msgid "Legal" +msgstr "" + +#: .././usbcreator/frontends/gtk/frontend.py:369 +msgid "CD-Drive/Image" +msgstr "光碟機/映像檔" + +#: .././usbcreator/frontends/gtk/frontend.py:371 +#: .././usbcreator/frontends/winui/main_dialog.py:27 +msgid "Image" +msgstr "映像檔" + +#: .././usbcreator/frontends/gtk/frontend.py:385 +#: .././usbcreator/frontends/winui/main_dialog.py:28 +msgid "OS Version" +msgstr "作業系統版本" + +#: .././usbcreator/frontends/gtk/frontend.py:395 +#: .././usbcreator/frontends/winui/main_dialog.py:29 +msgid "Size" +msgstr "大小" + +#: .././usbcreator/frontends/gtk/frontend.py:508 +#: .././usbcreator/frontends/gtk/frontend.py:796 +#, fuzzy +msgid "Erasing..." +msgstr "正在結束..." + +#: .././usbcreator/frontends/gtk/frontend.py:513 +#: .././gui/usbcreator-gtk.ui.h:16 +msgid "Erase Disk" +msgstr "抹除磁碟" + +#: .././usbcreator/frontends/gtk/frontend.py:567 +#: .././usbcreator/frontends/winui/main_dialog.py:36 +msgid "Device" +msgstr "裝置" + +#: .././usbcreator/frontends/gtk/frontend.py:584 +#: .././usbcreator/frontends/winui/main_dialog.py:37 +msgid "Label" +msgstr "標籤" + +#: .././usbcreator/frontends/gtk/frontend.py:594 +#: .././usbcreator/frontends/winui/main_dialog.py:38 +msgid "Capacity" +msgstr "容量" + +#: .././usbcreator/frontends/gtk/frontend.py:604 +#: .././usbcreator/frontends/winui/main_dialog.py:39 +msgid "Free Space" +msgstr "可用空間" + +#. TODO evand 2009-07-31: Make these the default values in the +#. GtkBuilder file. +#: .././usbcreator/frontends/gtk/frontend.py:645 +#: .././usbcreator/frontends/winui/install_window.py:28 +msgid "Starting up..." +msgstr "啟動中..." + +#: .././usbcreator/frontends/gtk/frontend.py:674 +#: .././usbcreator/frontends/winui/frontend.py:155 +#, python-format +msgid "%d%% complete (%dm%ss remaining)" +msgstr "%d%% 完成(剩餘 %d 分 %s 秒)" + +#: .././usbcreator/frontends/gtk/frontend.py:678 +#: .././usbcreator/frontends/winui/frontend.py:159 +#, python-format +msgid "%d%% complete" +msgstr "%d%% 完成" + +#: .././usbcreator/frontends/gtk/frontend.py:758 +#, fuzzy +msgid "Installation is complete. Your device is rebooting into Ubuntu Core." +msgstr "" +"安裝完成。您現在可以插入此裝置並重新啟動您的電腦,來試用或安裝 Ubuntu。" + +#: .././usbcreator/frontends/winui/main_dialog.py:21 +#: .././gui/usbcreator-gtk.ui.h:12 +msgid "" +"To try or install Ubuntu from a removable disk, it needs to be set up as a " +"startup disk." +msgstr "若要從可移除式磁碟嘗試或者安裝 Ubuntu,那麼需要先將它設為開機磁碟。" + +#: .././usbcreator/frontends/winui/main_dialog.py:24 +#: .././gui/usbcreator-gtk.ui.h:13 +msgid "Source disc image (.iso) or CD:" +msgstr "來源光碟映像檔 (.iso) 或是 CD:" + +#: .././usbcreator/frontends/winui/main_dialog.py:32 +#: .././gui/usbcreator-gtk.ui.h:14 +msgid "Other..." +msgstr "其他..." + +#: .././usbcreator/frontends/winui/main_dialog.py:34 +msgid "Removable disk to use:" +msgstr "要使用的可移除式磁碟:" + +#: .././usbcreator/frontends/winui/main_dialog.py:42 +#: .././gui/usbcreator-gtk.ui.h:17 +msgid "When starting up from this disk, documents and settings will be:" +msgstr "從這個磁碟開機時,文件與設定檔將會:" + +#: .././usbcreator/frontends/winui/main_dialog.py:45 +msgid "Stored in reserved space" +msgstr "儲存在保留空間" + +#: .././usbcreator/frontends/winui/main_dialog.py:46 +#: .././gui/usbcreator-gtk.ui.h:19 +msgid "How much:" +msgstr "多少:" + +#: .././usbcreator/frontends/winui/main_dialog.py:52 +#: .././gui/usbcreator-gtk.ui.h:20 +msgid "Discarded on shutdown, unless you save them elsewhere" +msgstr "在關機時被丟棄,除非您將它們儲存到其他地方" + +#: .././usbcreator/frontends/winui/main_dialog.py:56 +msgid "Quit" +msgstr "退出" + +#: .././usbcreator/frontends/winui/main_dialog.py:58 +msgid "Make startup disk" +msgstr "製作開機磁碟" + +#: .././usbcreator/frontends/winui/install_window.py:32 +msgid "&Cancel" +msgstr "取消 (&C)" + +#: .././usbcreator/frontends/winui/frontend.py:76 +msgid "Installation complete" +msgstr "安裝完成" + +#: .././usbcreator/frontends/winui/frontend.py:82 +msgid "Installation failed" +msgstr "安裝失敗" + +#: .././usbcreator/frontends/winui/frontend.py:183 +msgid "All" +msgstr "全部" + +#: .././usbcreator/frontends/winui/frontend.py:193 +#: .././gui/usbcreator-gtk.ui.h:11 +msgid "Make Startup Disk" +msgstr "製作開機磁碟" + +#: .././usbcreator/install.py:140 +#, python-format +msgid "The extension \"%s\" is not supported." +msgstr "不支援「%s」延伸。" + +#: .././usbcreator/install.py:145 +#, python-format +msgid "Missing matching \"%s\" for source image %s." +msgstr "" + +#: .././usbcreator/install.py:161 +#, python-format +msgid "" +"An uncaught exception was raised:\n" +"%s" +msgstr "" +"產生一個無法捕捉的例外:\n" +"%s" + +#: .././usbcreator/install.py:177 +#, python-format +msgid "" +"Insufficient free space to write the image:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" +msgstr "" +"沒有足夠可用空間以寫入映像檔:\n" +"%s\n" +"\n" +"(%d MB) > %s (%d MB)" + +#: .././usbcreator/install.py:230 +msgid "Installing the bootloader..." +msgstr "安裝開機載入程式中..." + +#: .././usbcreator/install.py:231 +msgid "Failed to install the bootloader." +msgstr "未能安裝開機載入程式。" + +#: .././usbcreator/install.py:261 +msgid "Modifying configuration..." +msgstr "修改設定中..." + +#. Failure here probably means the source was not really an Ubuntu +#. image and did not have the files we wanted to move, see +#. +#: .././usbcreator/install.py:272 +#, python-format +msgid "" +"Could not move syslinux files in \"%s\": %s. Maybe \"%s\" is not an Ubuntu " +"image?" +msgstr "無法移動「%s」內的 syslinux 檔案:%s。或許「%s」不是 Ubuntu 映像檔?" + +#: .././usbcreator/install.py:343 +msgid "Creating a persistence file..." +msgstr "建立永久性檔案中..." + +#: .././usbcreator/install.py:346 +msgid "Creating an ext2 filesystem in the persistence file..." +msgstr "在永久性檔案內建立 ext2 檔案系統中..." + +#: .././usbcreator/install.py:358 +msgid "Finishing..." +msgstr "正在結束..." + +#. TODO evand 2009-09-02: Disabled until we can find a cross-platform +#. way of determining dd progress. +#. self.initialize_progress_thread() +#: .././usbcreator/install.py:381 +msgid "Writing disk image..." +msgstr "寫入磁碟映像檔中..." + +#: .././usbcreator/install.py:382 +#, python-format +msgid "Could not write the disk image (%s) to the device (%s)." +msgstr "無法寫入磁碟映像檔(%s)至裝置(%s)。" + +#: .././usbcreator/install.py:412 +msgid "Erasing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:415 +msgid "Erasing user partition..." +msgstr "" + +#: .././usbcreator/install.py:418 +msgid "Flashing boot partition..." +msgstr "" + +#: .././usbcreator/install.py:421 +msgid "Flashing user partition..." +msgstr "" + +#: .././usbcreator/install.py:426 +#, fuzzy +msgid "Rebooting device..." +msgstr "移除檔案中..." + +#. Clear. +#. Some of the code in this function was copied from Ubiquity's +#. scripts/install.py +#: .././usbcreator/install.py:448 .././usbcreator/install.py:561 +msgid "Removing files..." +msgstr "移除檔案中..." + +#: .././usbcreator/install.py:479 .././usbcreator/install.py:584 +msgid "Copying files..." +msgstr "複製檔案中..." + +#: .././usbcreator/install.py:508 +msgid "md5 checksums do not match." +msgstr "md5 驗證碼不相符。" + +#: .././usbcreator/install.py:537 +#, fuzzy +msgid "Installing the EFI bootloader..." +msgstr "安裝開機載入程式中..." + +#: .././usbcreator/install.py:538 +#, fuzzy +msgid "Failed to install the EFI bootloader." +msgstr "未能安裝開機載入程式。" + +#. TODO evand 2009-07-23: Catch exceptions around the +#. user removing the flash drive mid-write. Give the +#. user the option of selecting the re-inserted disk +#. from a drop down list and continuing. +#. TODO evand 2009-07-23: Fail more gracefully. +#: .././usbcreator/install.py:656 +#, python-format +msgid "Could not read from %s" +msgstr "無法從 %s 中讀取" + +#: .././usbcreator/install.py:681 +msgid "Checksums do not match. Retry?" +msgstr "驗證碼不相符。要重試碼?" + +#: .././usbcreator/install.py:685 +msgid "Checksums do not match." +msgstr "驗證碼不相符。" + +#: .././gui/usbcreator-gtk.ui.h:1 +msgid "Legal Notice" +msgstr "" + +#: .././gui/usbcreator-gtk.ui.h:2 +msgid "Installation Failed" +msgstr "安裝失敗" + +#: .././gui/usbcreator-gtk.ui.h:3 +#, fuzzy +msgid "" +"The installation failed. Please see ~/.cache/usb-creator.log for more " +"details.\n" +msgstr "安裝失敗。更多細節請參考 ~/.usbcreator.log。\n" + +#: .././gui/usbcreator-gtk.ui.h:5 +msgid "Installation Complete" +msgstr "安裝完成" + +#: .././gui/usbcreator-gtk.ui.h:6 +#, fuzzy +msgid "Test Disk" +msgstr "抹除磁碟" + +#: .././gui/usbcreator-gtk.ui.h:7 +msgid "" +"Installation is complete. You may now run Ubuntu on other computers by " +"booting them with this drive inserted." +msgstr "安裝已完成。您可以將此磁碟插入其他電腦,並以它們開機來執行 Ubuntu。" + +#: .././gui/usbcreator-gtk.ui.h:15 +msgid "Disk to use:" +msgstr "要使用的磁碟:" + +#: .././gui/usbcreator-gtk.ui.h:18 +msgid "Stored in reserved extra space" +msgstr "存放在保留的額外空間內" + +#: .././main.py:37 +msgid "Please run this program as an administrator to continue." +msgstr "請以管理員身份執行此程式以繼續。" + +#: .././main.py:38 +msgid "Administrator privileges required" +msgstr "需要有管理員權力" + +#: .././main.py:55 +#, python-format +msgid "" +"An unhandled exception occurred:\n" +"%s" +msgstr "" +"發生一個未處理的例外:\n" +"%s" + +#: .././main.py:56 +msgid "Error" +msgstr "錯誤" + +#~ msgid "Please insert a CD or select 'Other...'." +#~ msgstr "請插入 CD 或選擇「其他...」。" + +#~ msgid "0.0 MB" +#~ msgstr "0.0 MB" + +#~ msgid "Cancel" +#~ msgstr "取消" diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..f13b370 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,7 @@ +[build] +i18n = True + +[build_i18n] +domain = usbcreator +desktop_files = [('share/applications', ['desktop/usb-creator-gtk.desktop.in', 'desktop/usb-creator-kde.desktop.in'])] +xml_files = [('share/polkit-1/actions', ['dbus/com.ubuntu.usbcreator.policy.in'])] diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..01f4618 --- /dev/null +++ b/setup.py @@ -0,0 +1,42 @@ +from distutils.core import setup +from DistUtilsExtra.command import * +import os + +class usb_creator_build_i18n(build_i18n.build_i18n): + def run(self): + build_i18n.build_i18n.run(self) + print("extracting strings for KDE frontend") + os.system("./Messages.sh") + +setup(name='usb-creator', + version='0.2.23', + description='Ubuntu startup disk creator', + author='Evan Dandrea', + author_email='evand@ubuntu.com', + packages=['usbcreator', + 'usbcreator.frontends', + 'usbcreator.frontends.gtk', + 'usbcreator.frontends.kde', + 'usbcreator.frontends.base', + 'usbcreator.backends', + 'usbcreator.backends.base', + 'usbcreator.backends.fastboot', + 'usbcreator.backends.udisks', + ], + scripts=['bin/usb-creator-gtk','bin/usb-creator-kde'], + data_files=[('share/usb-creator', ['gui/usbcreator-gtk.ui']), + ('share/usb-creator', ['bin/usb-creator-helper']), + ('share/usb-creator', ['gui/ubuntu-nexus7-USAGE-NOTICE-en.txt']), + ('share/icons/hicolor/scalable/apps', ['desktop/usb-creator-gtk.svg', 'desktop/usb-creator-kde.svg']), + ('share/kde4/apps/usb-creator-kde', ['gui/usbcreator-kde.ui']), + ('/etc/dbus-1/system.d', ['dbus/com.ubuntu.USBCreator.conf']), + ('share/dbus-1/system-services', ['dbus/com.ubuntu.USBCreator.service']), + ('share/apport/package-hooks', ['debian/source_usb-creator.py'])], + cmdclass = { "build" : build_extra.build_extra, + "build_i18n" : usb_creator_build_i18n, + "build_help" : build_help.build_help, + "build_icons" : build_icons.build_icons, + "clean": clean_i18n.clean_i18n, + } + ) + diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/dbus-session.conf b/tests/dbus-session.conf new file mode 100644 index 0000000..f36c30f --- /dev/null +++ b/tests/dbus-session.conf @@ -0,0 +1,64 @@ + + + + + + + session + + unix:tmpdir=/tmp + + + tests/dbus-session + + + + + + + + + + + + + + /etc/dbus-1/session.d + + + 60000 + + + session-local.conf + + contexts/dbus_contexts + + + + + 1000000000 + 1000000000 + 1000000000 + 120000 + 240000 + 100000 + 10000 + 100000 + 10000 + 50000 + 50000 + 50000 + 300000 + + diff --git a/tests/dbus-session/org.freedesktop.UDisks.service b/tests/dbus-session/org.freedesktop.UDisks.service new file mode 100644 index 0000000..71698cf --- /dev/null +++ b/tests/dbus-session/org.freedesktop.UDisks.service @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=org.freedesktop.UDisks +Exec=/usr/bin/python tests/fake_udisks.py diff --git a/tests/fake_udisks.py b/tests/fake_udisks.py new file mode 100644 index 0000000..a4bf912 --- /dev/null +++ b/tests/fake_udisks.py @@ -0,0 +1,176 @@ +#!/usr/bin/python + +# Copyright (C) 2009 Canonical Ltd. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from twisted.trial import unittest +from twisted.internet.defer import Deferred + +# TODO evand 2009-06-02: Move the common bits into a unittest.TestCase +# subclass like the Ubuntu One client does? +import dbus +import dbus.service +from dbus.mainloop.glib import DBusGMainLoop +DBusGMainLoop(set_as_default=True) + +DISKS_IFACE = 'org.freedesktop.UDisks' +DEVICE_IFACE = 'org.freedesktop.UDisks.Device' +PROPS_IFACE = 'org.freedesktop.DBus.Properties' + +class TestDbus(unittest.TestCase): + def setUp(self): + # TODO evand 2009-07-01: Move to a private bus. See the notes in + # test_udisks_backend.py + self.bus = dbus.SessionBus() + self.d = FakeUDisks(self.bus, '/org/freedesktop/UDisks') + self.udisks = self.bus.get_object(DISKS_IFACE, + '/org/freedesktop/UDisks') + + def tearDown(self): + # FIXME evand 2009-07-06: There must be a better way... + for dev in self.d.device_objects: + dev.bus_name.get_bus().release_name(dev.bus_name.get_name()) + dev.remove_from_connection() + del dev.bus_name + self.d.bus_name.get_bus().release_name(self.d.bus_name.get_name()) + self.d.remove_from_connection() + del self.d.bus_name + + def test_enumerate(self): + d = Deferred() + def handle_reply(result): + d.callback(result) + def handle_error(err): + d.errback(err) + self.udisks.EnumerateDevices(dbus_interface=DISKS_IFACE, + reply_handler=handle_reply, + error_handler=handle_error) + return d + + def test_props(self): + d = Deferred() + def handle_reply(result): + d.callback(result) + def handle_error(err): + d.errback(err) + path = '/org/freedesktop/UDisks/devices/sdb' + device = self.bus.get_object(DISKS_IFACE, path) + device.Get(path, + 'device-is-system-internal', + dbus_interface=PROPS_IFACE, + reply_handler=handle_reply, + error_handler=handle_error) + return d + + def test_added(self): + '''Fires the DeviceAdded signal.''' + d = Deferred() + def handle_reply(result): + d.callback(result) + def handle_error(err): + d.errback(err) + self.bus.add_signal_receiver(handle_reply, + signal_name='DeviceAdded', + dbus_interface=DISKS_IFACE, + path='/org/freedesktop/UDisks') + + self.udisks.emitDeviceAdded(reply_handler=lambda : None, + error_handler=handle_error) + return d + + def test_removed(self): + '''Fires the DeviceRemoved signal.''' + d = Deferred() + def handle_reply(result): + d.callback(result) + def handle_error(err): + d.errback(err) + self.bus.add_signal_receiver(handle_reply, + signal_name='DeviceRemoved', + dbus_interface=DISKS_IFACE, + path='/org/freedesktop/UDisks') + + self.udisks.emitDeviceRemoved(reply_handler=lambda : None, + error_handler=handle_error) + return d + +# XXX evand 2009-07-07: Built according to the udisks specification: +# http://hal.freedesktop.org/docs/udisks/ + +class FakeUDisks(dbus.service.Object): + def __init__(self, bus, path): + self.bus_name = dbus.service.BusName(DISKS_IFACE, + bus) + self.devices = {'/org/freedesktop/UDisks/devices/sdb' : + { 'device-is-system-internal' : False, + 'device-is-drive' : True, + 'device-is-optical-disc' : False, + }, + '/org/freedesktop/UDisks/devices/sdb1' : + { 'device-is-system-internal' : False, + 'device-is-drive' : False, + 'device-is-partition' : True, + 'partition-label' : 'test-label', + 'device-is-optical-disc' : False, + }, + '/org/freedesktop/UDisks/devices/scd0' : + { 'device-is-optical-disc' : True, + }, + } + dbus.service.Object.__init__(self, bus, path) + + self.device_objects = [] + for d in self.devices: + self.device_objects.append(FakeUDisksDevice(bus, d, + self.devices[d])) + + @dbus.service.method(DISKS_IFACE, out_signature='ao') + def EnumerateDevices(self): + return list(self.devices.keys()) + + @dbus.service.signal(DISKS_IFACE, signature='o') + def DeviceAdded(self, path): + pass + + @dbus.service.method(DISKS_IFACE) + def emitDeviceAdded(self): + self.DeviceAdded('/org/freedesktop/UDisks/devices/sdc') + + @dbus.service.signal(DISKS_IFACE, signature='o') + def DeviceRemoved(self, path): + pass + + @dbus.service.method(DISKS_IFACE) + def emitDeviceRemoved(self): + self.DeviceRemoved('/org/freedesktop/UDisks/devices/sdc') + +class FakeUDisksDevice(dbus.service.Object): + def __init__(self, bus, path, props): + self.props = props + self.bus_name = dbus.service.BusName(DISKS_IFACE, + bus) + dbus.service.Object.__init__(self, bus, path) + + @dbus.service.method(PROPS_IFACE, in_signature='ss', out_signature='v') + def Get(self, iface, prop): + return self.props[prop] + + @dbus.service.method(DEVICE_IFACE, in_signature='sas', out_signature='s') + def FilesystemMount(self, filesystem_type, options): + return '/tmp' + +if __name__ == '__main__': + import gobject + f = FakeUDisks(dbus.SessionBus(), '/org/freedesktop/UDisks') + gobject.MainLoop().run() diff --git a/tests/run b/tests/run new file mode 100755 index 0000000..27f6a22 --- /dev/null +++ b/tests/run @@ -0,0 +1,22 @@ +#!/usr/bin/env python +from twisted.internet import glib2reactor +from twisted.trial.runner import TrialRunner +from twisted.trial.reporter import TreeReporter +import os, sys, unittest + +def _collect_tests(): + r = [] + for f in os.listdir(os.path.dirname(__file__)): + if f.endswith('.py') and 'windows' not in f: + r.append(f[:-3]) + return r +glib2reactor.install() +runner = TrialRunner(reporterFactory=TreeReporter) +tests = _collect_tests() +sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) +suite = unittest.TestLoader().loadTestsFromNames(tests) +success = runner.run(suite).wasSuccessful() +if not success: + sys.exit(1) +else: + sys.exit(0) diff --git a/tests/run-win b/tests/run-win new file mode 100755 index 0000000..a894170 --- /dev/null +++ b/tests/run-win @@ -0,0 +1,13 @@ +#!/usr/bin/env python +import unittest, os, sys + +def _collect_tests(): + r = [] + for f in os.listdir(os.path.dirname(__file__)): + if f.endswith('.py') and 'windows' in f: + r.append(f[:-3]) + return r + +sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) +suite = unittest.TestLoader().loadTestsFromNames(_collect_tests()) +unittest.TextTestRunner(verbosity=2).run(suite) diff --git a/tests/test_udisks_backend.py b/tests/test_udisks_backend.py new file mode 100644 index 0000000..d11770c --- /dev/null +++ b/tests/test_udisks_backend.py @@ -0,0 +1,93 @@ +#!/usr/bin/python + +# Copyright (C) 2009 Canonical Ltd. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from twisted.trial import unittest +#from twisted.internet.defer import Deferred +import dbus +from dbus.mainloop.glib import DBusGMainLoop +DBusGMainLoop(set_as_default=True) + +from usbcreator.backends.udisks import UDisksBackend + +import subprocess, os + +class TestUDisksBackend(unittest.TestCase): + def setUp(self): + fake_udisks = os.path.join(os.path.dirname(__file__), + 'fake_udisks.py') + self.proc = subprocess.Popen(['python', fake_udisks]) + import time + time.sleep(1) + #self._startDBus() + self.bus = dbus.SessionBus() + self.backend = UDisksBackend(bus=self.bus) + def tearDown(self): + self.proc.terminate() + self.proc.wait() + #self._stopDBus() + + # XXX evand 2009-06-03: Uninteresting bit of code to test, as we test our + # fake EnumerateDevices and signal handling elsewhere. + + #def test_detect_devices(self): + # d = Deferred() + # def handle_reply(res): + # print(res) + # d.callback(res) + # self.backend.detect_devices(cb=handle_reply) + # return d + + def test_disk_added(self): + d = '/org/freedesktop/UDisks/devices/sdb' + self.backend._device_added(d) + + def test_partition_added(self): + d = '/org/freedesktop/UDisks/devices/sdb1' + self.backend._device_added(d) + + def test_cd_added(self): + d = '/org/freedesktop/UDisks/devices/scd0' + self.backend._device_added(d) + + # XXX evand 2009-06-03: Just use the 3 second delay for now, then come back + # to this. Getting the tests done and the core code written is more + # important. + #def _startDBus(self): + # """Start our own session bus daemon for testing.""" + # config_file = os.path.join(os.path.dirname(os.getcwd()), "tests", + # "dbus-session.conf") + # dbus_args = ["--fork", + # "--config-file=" + config_file, + # "--print-address"] + # p = subprocess.Popen(['/bin/dbus-daemon'] + dbus_args, + # bufsize=4096, stdout=subprocess.PIPE, + # universal_newlines=True) + # data = p.stdout + + # self.dbus_address = "".join(data.readlines()).strip() + # self.dbus_pid = p.pid + 1 + + # if self.dbus_address != "": + # os.environ["DBUS_SESSION_BUS_ADDRESS"] = self.dbus_address + # else: + # os.kill(self.dbus_pid, signal.SIGKILL) + # raise DBusLaunchError("There was a problem launching dbus-daemon.") + + #def _stopDBus(self): + # """Stop our DBus session bus daemon.""" + # del os.environ["DBUS_SESSION_BUS_ADDRESS"] + # os.kill(self.dbus_pid, signal.SIGKILL) + diff --git a/tests/test_windows_backend.py b/tests/test_windows_backend.py new file mode 100644 index 0000000..cc7fced --- /dev/null +++ b/tests/test_windows_backend.py @@ -0,0 +1,12 @@ +from usbcreator.backends.windows import WindowsBackend +import unittest + +class TestWindowsBackend(unittest.TestCase): + def test_backend(self): + b = WindowsBackend() + b.detect_devices() + + def test_format(self): + b = WindowsBackend() + b._device_added(u'E:\\') + b.format(u'E:\\') diff --git a/tests/test_windows_frontend.py b/tests/test_windows_frontend.py new file mode 100644 index 0000000..ebd17cf --- /dev/null +++ b/tests/test_windows_frontend.py @@ -0,0 +1,8 @@ +from usbcreator.frontends.winui import WinuiFrontend +from usbcreator.backends.windows import WindowsBackend +import unittest + +class TestWindowsFrontend(unittest.TestCase): + def test_frontend(self): + backend = WindowsBackend() + WinuiFrontend(backend) diff --git a/tools/_include.py b/tools/_include.py new file mode 100644 index 0000000..f3d5e02 --- /dev/null +++ b/tools/_include.py @@ -0,0 +1,3 @@ +# FIXME evand 2009-07-23: Fix whatever bug in pypack is causing this. +import encodings.utf_8 +import encodings.cp437 diff --git a/tools/check_external_deps b/tools/check_external_deps new file mode 100755 index 0000000..e92e872 --- /dev/null +++ b/tools/check_external_deps @@ -0,0 +1,49 @@ +#!/bin/sh +set -e + +VER="2.6.2" +MD5="4bca00171aa614b4886b889290c4fed9" +PYTHONURL="http://www.python.org/ftp/python/$VER/python-$VER.msi" +OUT="/tmp/python$VER.msi" + +P7VER="457" +P7VERH="4.57" +P7ZIPURL="http://heanet.dl.sourceforge.net/sourceforge/sevenzip/7z$P7VER.msi" +P7ZIPMD5="3f4a68083169bf7d10e542a3e89f5895" +P7OUT="/tmp/7z$P7VER.msi" + +LZMAURL="http://heanet.dl.sourceforge.net/sourceforge/sevenzip/LZMA%20SDK/$PZVERH/lzma$P7VER.tar.bz2" +LZMAOUT="/tmp/lzma$P7VER.tar.bz2" +LZMAMD5="fc7a12a396ade1772e959604d6eb31e1" + +if ! type wine >/dev/null 2>&1; then + echo "You need to install WINE to run the test suite." + exit 1 +fi +if [ ! -e "$PWD/wine/drive_c/Python26/python.exe" ]; then + echo "Downloading and installing Python for Windows $VER" + rm -rf "$PWD/wine" || true + mkdir "$PWD/wine" + wget $PYTHONURL -O "$OUT" >/dev/null 2>&1 + echo "$MD5 $OUT" | md5sum -c - >/dev/null + WINEPREFIX=$PWD/wine wine msiexec /qn -i $OUT >/dev/null 2>&1 +fi + +if [ ! -e "$PWD/wine/drive_c/Program Files/7-Zip/7z.exe" ]; then + echo "Downloading and installing 7-Zip for Windows $P7VERH" + wget $P7ZIPURL -O "$P7OUT" >/dev/null 2>&1 + echo "$P7ZIPMD5 $P7OUT" | md5sum -c - >/dev/null + WINEPREFIX=$PWD/wine wine msiexec /qn -i $P7OUT >/dev/null 2>&1 +fi + +[ -d "$PWD/build" ] || mkdir "$PWD/build" +if [ ! -e "$PWD/build/lzma/C/7zCrc.c" ]; then + echo "Downloading and extracting LZMA SDK $P7VERH" + mkdir -p "$PWD/build/7z" + # Poor attempt at caching. + if [ ! -e "$LZMAOUT" ]; then + wget $LZMAURL -O "$LZMAOUT" >/dev/null 2>&1 + fi + echo "$LZMAMD5 $LZMAOUT" | md5sum -c - >/dev/null + tar jxf "$LZMAOUT" -C "$PWD/build/7z" +fi diff --git a/tools/pylauncher/Makefile b/tools/pylauncher/Makefile new file mode 100644 index 0000000..eac0a98 --- /dev/null +++ b/tools/pylauncher/Makefile @@ -0,0 +1,102 @@ +export SHELL = sh +PROGRAM = pylauncher +#LDFLAGS = -shared -dll +#LIB = -lm -static +#LIBS = user32.lib gdi32.lib shell32.lib +CC = i586-mingw32msvc-gcc +WINDRES = i586-mingw32msvc-windres +CFLAGS = \ + -c \ + -Os \ + -Wall \ + -m32 \ + -march=i386 \ + -D_SZ_FILE_SIZE_32 + +# -D_SZ_FILE_SIZE_32 - define it if you need only support for files smaller than 4 GB +# -D_LZMA_IN_CB -if defined it does not read the full archive to memory +# -D USE_WINDOWS_FUNCTIONS use windows functions instead of libc in unpack.c +# -DWINDOWS +# -c do not link +# -Os optimize for size +# -GF read-only string constants +# -Gs disable stack checking calls +# -Gr fastcall calling convention +# -MD link against MSVCRT.DLL (also required by Python) +# -W3 max warnings +# -Wl,--file-alignment,512 pass option --file-alignement 512 to the linker +# -m32 +# -march=i386 + +ifdef DEBUG + DEBUGFLAG = -g + STRIP = @echo +else + DEBUGFLAG = + LDFLAGS = -mwindows + STRIP = i586-mingw32msvc-strip +endif + +7Z_OBJS = \ + 7zAlloc.o \ + 7zBuffer.o \ + 7zCrc.o \ + 7zDecode.o \ + 7zExtract.o \ + 7zHeader.o \ + 7zIn.o \ + 7zItem.o \ + 7zMethodID.o \ + LzmaDecode.o \ + BranchX86.o \ + BranchX86_2.o + +7Z_DIR = ../7z/C + +7Z_OBJS_SRC = \ + $(7Z_DIR)/Archive/7z/*.c \ + $(7Z_DIR)/Compress/Branch/BranchX86.c \ + $(7Z_DIR)/Compress/Branch/BranchX86_2.c \ + $(7Z_DIR)/Compress/Lzma/LzmaDecode.c \ + $(7Z_DIR)/7zCrc.c + +all: pylauncher.exe header.exe pyrun.exe + +header.exe:$(7Z_OBJS) unpack.o deletedir.o header.o str.o resources.o + $(CC) -o $@ $(LDFLAGS) $(LIBS) $^ + $(STRIP) $@ + +pyrun.exe: deletedir.o pyrun.o str.o resources.o + $(CC) -o $@ $(LDFLAGS) $(LIBS) $^ + $(STRIP) $@ + +pylauncher.exe: deletedir.o pylauncher.o str.o resources.o + $(CC) -o $@ $(LDFLAGS) $(LIBS) $^ + $(STRIP) $@ + +$(7Z_OBJS): $(7Z_OBJS_SRC) + $(CC) $(DEBUGFLAG) $(CFLAGS) $^ + +resources.o: resources.rc + $(WINDRES) -o $@ $^ + +pylauncher.o: pylauncher.c + $(CC) $(DEBUGFLAG) $(CFLAGS) $^ + +pyrun.o: pyrun.c + $(CC) $(DEBUGFLAG) $(CFLAGS) $^ + +header.o: header.c + $(CC) $(DEBUGFLAG) $(CFLAGS) $^ + +deletedir.o: deletedir.c + $(CC) $(DEBUGFLAG) $(CFLAGS) $^ + +unpack.o: unpack.c + $(CC) $(DEBUGFLAG) $(CFLAGS) $^ + +str.o: str.c + $(CC) $(DEBUGFLAG) $(CFLAGS) $^ + +clean: + rm -f *.exe $(7Z_OBJS) *.d *.o diff --git a/tools/pylauncher/deletedir.c b/tools/pylauncher/deletedir.c new file mode 100644 index 0000000..319bcb6 --- /dev/null +++ b/tools/pylauncher/deletedir.c @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2007, 2008 Agostino Russo + * + * Written by Agostino Russo + * Following example at http://www.codeguru.com/forum/showthread.php?t=239271 + * + * pylauncher is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * pylauncher is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * DESCRIPTION: + * Recursively deletes a directory + */ + +#include "deletedir.h" +#include "str.h" +#include "windows.h" + +#define true 1 +#define false 0 + +int _delete_directory(char* root_directory); + +int delete_directory(char* target_directory) +{ + char abs_path[MAX_PATH]; + int result; + if (GetFullPathName(target_directory, MAX_PATH, abs_path, NULL)!=0){ + chdir("\\"); + result = _delete_directory(abs_path); + return result; + } + return 1; +} + +int _delete_directory(char* root_directory) +{ + int result; + HANDLE file_handle; + char* file_path = 0; + char* pattern; + WIN32_FIND_DATA file_info; + + pattern = concat(root_directory, "\\*.*", false); + if(!pattern) return ERROR_NOT_ENOUGH_MEMORY; + file_handle = FindFirstFile(pattern, &file_info); + + if(file_handle != INVALID_HANDLE_VALUE){ + do{ + if(file_info.cFileName[0] != '.'){ + file_path = concat(root_directory, "\\", false); + file_path = concat(file_path, file_info.cFileName, true); + if(!file_path) { + FindClose(file_handle); + free(pattern); + return ERROR_NOT_ENOUGH_MEMORY; + } + result = 0; + if(file_info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){ + // Delete subdirectory + result = _delete_directory(file_path); + } else { + // Set file attributes + if(SetFileAttributes(file_path, FILE_ATTRIBUTE_NORMAL) == FALSE){ + result = GetLastError(); + } + // Delete file + if(DeleteFile(file_path) == FALSE){ + result = GetLastError(); + } + } + if(result){ + freestr(&file_path); + FindClose(file_handle); + free(pattern); + return result; + } + } + } while(FindNextFile(file_handle, &file_info) == TRUE); + freestr(&file_path); + FindClose(file_handle); + free(pattern); + + DWORD dwError = GetLastError(); + if(dwError != ERROR_NO_MORE_FILES){ + return dwError; + } else { + // Set directory attributes + if(SetFileAttributes(root_directory, FILE_ATTRIBUTE_NORMAL) == FALSE){ + return GetLastError(); + } + // Delete directory + if(RemoveDirectory(root_directory) == FALSE){ + return GetLastError(); + } + } + } + return 0; +} diff --git a/tools/pylauncher/deletedir.h b/tools/pylauncher/deletedir.h new file mode 100644 index 0000000..a66f128 --- /dev/null +++ b/tools/pylauncher/deletedir.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2007, 2008 Agostino Russo + * Using http://www.codeguru.com/forum/showthread.php?t=239271 + * + * Written by Agostino Russo + * Heavily inspired by exemaker from Fredrik Lundh + * + * pylauncher is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * pylauncher is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * DESCRIPTION: + * Recursively deletes a directory + */ + +#include +#include + +int delete_directory(char* root_directory); diff --git a/tools/pylauncher/header.c b/tools/pylauncher/header.c new file mode 100644 index 0000000..b9f4b5d --- /dev/null +++ b/tools/pylauncher/header.c @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2007, 2008 Agostino Russo + * + * Written by Agostino Russo + * Heavily inspired by exemaker from Fredrik Lundh + * + * pylauncher is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * pylauncher is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * DESCRIPTION: + * Pylauncher extracts a lzma archive that can be appended to this + * executable and containing: + * + * ./main.pyo # main script to run + * ./data # data + * ./lib # python modules, ./lib is added to PYTHONPATH + * ./python.dll # python dll + * + * then it loads python.dll and runs main.py within that. A python + * script can be packed in the appropriate format using pack.py + * + * Note that the current implementation assumes that the python modules + * are bytecompiled and optimized (*.pyo) + * + */ + +#include +#include +#include "windows.h" +#include "unpack.h" +#include "deletedir.h" +#include "str.h" + +#define true 1 +#define false 0 + +int __cdecl +main(int ac, char **av) +{ + //~ printf("header: starting\n"); + char *cmd; + char message[MAX_PATH + 1000]; + char pylauncher[MAX_PATH]; + char currentdir[MAX_PATH]; + char exefile[MAX_PATH]; + char tmpdir[MAX_PATH]; + char targetdir[MAX_PATH]; + + GetModuleFileName(NULL, exefile, sizeof(exefile)); + + //Create targetdir + GetTempPath(MAX_PATH, tmpdir); + GetTempFileName(tmpdir, "pyl", 0, targetdir); + DeleteFile(targetdir); + getcwd(currentdir, MAX_PATH); + CreateDirectory(targetdir, NULL); + chdir(targetdir); + + //Extract LZMA bundled archive + if (unpack(exefile)) { + sprintf(message, "Cannot unpack %s\n", exefile); + goto error; + } + + //Copy pylauncher.exe + sprintf(pylauncher, "%s.exe", targetdir); + if (!CopyFile("pylauncher.exe", pylauncher, FALSE)){ + sprintf(message, "Cannot copy %s\n", pylauncher); + goto error; + } + + HANDLE exe_handle = OpenProcess(SYNCHRONIZE, TRUE, GetCurrentProcessId()); + HANDLE pylauncher_handle = CreateFile(pylauncher, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, NULL); + + cmd = (char *)malloc((strlen(pylauncher) + strlen(targetdir) + strlen(exefile) + 9) * sizeof(char)); + sprintf(cmd, "\"%s\" \"%s\" \"%s\"", pylauncher, targetdir, exefile); + DWORD i; + for (i = 1; i < (DWORD) ac; i++){ + cmd = concat(cmd, " ", true); + cmd = concat(cmd, av[i], true); + } + STARTUPINFO si; + ZeroMemory(&si, sizeof(si)); + si.cb = sizeof(si); + PROCESS_INFORMATION pi; + //~ printf("header running cmd: %s\n", cmd); + if(!CreateProcess(NULL, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)){ + strcpy(message, "Failed to run pylauncher\n"); + free(cmd); + goto error; + } + free(cmd); + + Sleep(1000); // Give time to the new process to start + //~ printf("header: finishing\n"); + CloseHandle(exe_handle); + CloseHandle(pylauncher_handle); + return 0; + +error: + MessageBox(NULL, message, "Internal error", MB_ICONERROR | MB_OK); + //TBD We should delete the targetdir but might be risky + return 1; +} + +int WINAPI +WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, + LPSTR lpCmdLine, int nCmdShow) +{ + return main(__argc, __argv); +} diff --git a/tools/pylauncher/pack.py b/tools/pylauncher/pack.py new file mode 100644 index 0000000..2b3cea4 --- /dev/null +++ b/tools/pylauncher/pack.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python +# +# Copyright (c) 2007, 2008 Agostino Russo +# +# Written by Agostino Russo +# +# pack.py is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# pack.py is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + + +import sys +import os +import shutil +from os.path import abspath, join, basename, dirname, exists + +SIGNATURE="@@@pylauncher@@@" + +def ajoin(*args): + return abspath(join(*args)) + +def compress(target_dir): + #TBD the 7z compressor should be properly compiled + cwd = os.getcwd() + compressor = ajoin("C:", "Program Files", "7-Zip","7z.exe") + cmd = '%s a -t7z -m0=lzma -mx=9 -mfb=256 -md=32m -ms=on ../archive.7z *' + cmd = cmd % (compressor,) + print cmd + os.chdir(target_dir) + os.system(cmd) + os.chdir(cwd) + +def cat(outfile, *infiles): + fout = open(outfile, 'wb') + for fname in infiles: + fin = open(abspath(fname), 'rb') + data = fin.read() + fin.close() + fout.write(data) + fout.close() + +def make_self_extracting_exe(target_dir): + header = ajoin(dirname(__file__), 'header.exe') + archive = ajoin(dirname(target_dir),'archive.7z') + target = ajoin(dirname(target_dir), 'application.exe') + signature = ajoin(dirname(target_dir), 'signature') + f = open(signature, 'wb') + f.write(SIGNATURE) + f.close() + print "Creating self extracting file %s" % target + cat(target, header, signature, archive) + +def add_python_interpreter(target_dir): + #TBD detect the dll/lib of the current python instance + for f in ('pylauncher.exe', 'python26.dll', 'pyrun.exe'): + source = ajoin(dirname(__file__), f) + shutil.copy(source, target_dir) + +def main(): + target_dir = sys.argv[1] + add_python_interpreter(target_dir) + compress(target_dir) + make_self_extracting_exe(target_dir) + +if __name__ == "__main__": + main() diff --git a/tools/pylauncher/pylauncher.c b/tools/pylauncher/pylauncher.c new file mode 100644 index 0000000..a70409f --- /dev/null +++ b/tools/pylauncher/pylauncher.c @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2007, 2008 Agostino Russo + * + * Written by Agostino Russo + * Heavily inspired by exemaker from Fredrik Lundh + * + * pylauncher is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * pylauncher is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * DESCRIPTION: + * Pylauncher extracts a lzma archive that can be appended to this + * executable and containing: + * + * ./main.pyo # main script to run + * ./data # data + * ./lib # python modules, ./lib is added to PYTHONPATH + * ./python.dll # python dll + * + * then it loads python.dll and runs main.py within that. A python + * script can be packed in the appropriate format using pack.py + * + * Note that the current implementation assumes that the python modules + * are bytecompiled and optimized (*.pyo) + * + */ + +#include +#include +#include "windows.h" +#include "deletedir.h" +#include "str.h" + +#define true 1 +#define false 0 + +int __cdecl +main(int ac, char **av) +{ + //~ printf("pylauncher: starting\n"); + DWORD i; + char *cmd; + char message[MAX_PATH + 1000]; + char targetdir[MAX_PATH]; + char exefile[MAX_PATH]; + strcpy(targetdir, av[1]); + strcpy(exefile, av[2]); + + //Run script in python script via pyrun + cmd = (char *)malloc((strlen(targetdir)*2 + +strlen(exefile) + 19) * sizeof(char)); + sprintf(cmd, "\"%s\\pyrun.exe\" \"%s\" \"%s\"", targetdir, targetdir, exefile); + for (i = 3; i < (DWORD) ac; i++){ + cmd = concat(cmd, " ", true); + cmd = concat(cmd, av[i], true); + } + STARTUPINFO si; + ZeroMemory(&si, sizeof(si)); + si.cb = sizeof(si); + PROCESS_INFORMATION pi; + //~ printf("pylauncher running cmd: %s\n", cmd); + if(!CreateProcess(NULL, cmd, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)){ + strcpy(message, "Failed to run pyrun\n"); + free(cmd); + goto error; + } else { + WaitForSingleObject(pi.hProcess, INFINITE); + } + free(cmd); + + //Delete directory + //~ printf("pylauncher: deleting temp directory %s\n", targetdir); + delete_directory(targetdir); + + //~ printf("pylauncher: Finished\n"); + return 0; + +error: + MessageBox(NULL, message, "Internal error", MB_ICONERROR | MB_OK); + //TBD We should delete the targetdir but might be risky + return 1; +} + +int WINAPI +WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, + LPSTR lpCmdLine, int nCmdShow) +{ + return main(__argc, __argv); +} diff --git a/tools/pylauncher/pylauncher.exe.manifest b/tools/pylauncher/pylauncher.exe.manifest new file mode 100644 index 0000000..057c988 --- /dev/null +++ b/tools/pylauncher/pylauncher.exe.manifest @@ -0,0 +1,26 @@ + + + + No description. + + + + + + + + + + + + + diff --git a/tools/pylauncher/pyrun.c b/tools/pylauncher/pyrun.c new file mode 100644 index 0000000..dbbc9e3 --- /dev/null +++ b/tools/pylauncher/pyrun.c @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2007, 2008 Agostino Russo + * + * Written by Agostino Russo + * Heavily inspired by exemaker from Fredrik Lundh + * + * pylauncher is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * pylauncher is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * DESCRIPTION: + * Pylauncher extracts a lzma archive that can be appended to this + * executable and containing: + * + * ./main.pyo # main script to run + * ./data # data + * ./lib # python modules, ./lib is added to PYTHONPATH + * ./python.dll # python dll + * + * then it loads python.dll and runs main.py within that. A python + * script can be packed in the appropriate format using pack.py + * + * Note that the current implementation assumes that the python modules + * are bytecompiled and optimized (*.pyo) + * + */ + +#include +#include +#include "windows.h" +#include "deletedir.h" +#include "str.h" + +#define true 1 +#define false 0 + +int __cdecl +main(int ac, char **av) +{ + //~ printf("pyrun: starting\n"); + int result; + DWORD i; + char* argv[100]; + char message[MAX_PATH + 1000]; + char exefile[MAX_PATH]; + char originalexefile[MAX_PATH + 100]; + char targetdir[MAX_PATH]; + const char dllfile[MAX_PATH] = "python26.dll"; + const char pythonpath[MAX_PATH] = "lib"; + const char pythonhome[MAX_PATH] = "."; + const char scriptfile[MAX_PATH] = "main.pyo"; + const char debug[4] = "Off"; + const char verbose[2] = "0"; + + HINSTANCE dll; + int (__cdecl * Py_Main)(int argc, char *argv[]); + void (__cdecl * Py_SetPythonHome)(char* home); + + //Get path of this executable + GetModuleFileName(NULL, exefile, sizeof(exefile)); + + //Find targetdir (dir containing exefile) + strcpy(targetdir, av[1]); + sprintf(originalexefile, "--exefile=\"%s\"", av[2]); + //~ printf("pyrun targetdir=%s\n", targetdir); + chdir(targetdir); + + //Load python dll file + dll = LoadLibraryEx(dllfile, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); + if (!dll) { + sprintf(message, "Cannot find %s\n", dllfile); + goto error; + } + GetModuleFileName(dll, dllfile, sizeof(dllfile)); + + //Get entry point for Py_main + Py_Main = (int (*)(int, char**)) GetProcAddress(dll, "Py_Main"); + if (!Py_Main){ + ExitProcess(1); + } + + //Set python path + Py_SetPythonHome = (void (*)(char*)) GetProcAddress(dll, "Py_SetPythonHome"); + if (Py_SetPythonHome) { + Py_SetPythonHome(pythonhome); // SetPythonHome keeps a reference! + } + + //Set environment variables + SetEnvironmentVariable("PYTHONHOME", pythonhome); + SetEnvironmentVariable("PYTHONOPTIMIZE", NULL); + SetEnvironmentVariable("PYTHONPATH", pythonpath); + SetEnvironmentVariable("PYTHONVERBOSE", verbose); + SetEnvironmentVariable("PYTHONDEBUG", debug); + + //Run script in python + argv[0] = exefile; + argv[1] = "-S"; + argv[2] = "-OO"; + argv[3] = scriptfile; + argv[4] = originalexefile; + int nargs = 5; + for (i = 3; i < (DWORD) ac; i++){ + argv[nargs] = av[i]; + nargs++; + } + //~ printf("pyrun running python with following arguments:\n"); + //~ for (i = 0; i < nargs; i++){ + //~ printf("arg %i = %s\n", i, argv[i]); + //~ } + result = Py_Main(nargs, argv); + + //~ printf("pyrun: Finished\n"); + return result; + +error: + MessageBox(NULL, message, "Internal error", MB_ICONERROR | MB_OK); + //TBD We should delete the targetdir but might be risky + return 1; +} + +int WINAPI +WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, + LPSTR lpCmdLine, int nCmdShow) +{ + return main(__argc, __argv); +} diff --git a/tools/pylauncher/resources.h b/tools/pylauncher/resources.h new file mode 100644 index 0000000..601e92e --- /dev/null +++ b/tools/pylauncher/resources.h @@ -0,0 +1,6 @@ +#ifndef RESOURCES_H +#define RESOURCES_H + +#define ID_OOICON 101 + +#endif diff --git a/tools/pylauncher/resources.rc b/tools/pylauncher/resources.rc new file mode 100644 index 0000000..e54653f --- /dev/null +++ b/tools/pylauncher/resources.rc @@ -0,0 +1,13 @@ +#include "resources.h" + +#ifndef RT_MANIFEST +#define RT_MANIFEST 24 +#endif + +#ifndef CREATEPROCESS_MANIFEST_RESOURCE_ID +#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1 +#endif + +CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "pylauncher.exe.manifest" + +ID_OOICON ICON "application.ico" diff --git a/tools/pylauncher/str.c b/tools/pylauncher/str.c new file mode 100644 index 0000000..6556980 --- /dev/null +++ b/tools/pylauncher/str.c @@ -0,0 +1,34 @@ +#include +#include + +char* concat(char* str1, char* str2, int free_old) +{ + if(!str1 || !str2) return NULL; + size_t len1 = strlen(str1); + size_t len2 = strlen(str2); + char* result = (char*) malloc(len1+len2+1); + if(!result) return NULL; + strcpy(result, str1); + strcpy(result+len1, str2); + if(free_old) free(str1); + return result; +} + +char* concatn(char* str1, char* str2, size_t len2, int free_old) +{ + if(!str1 || !str2) return NULL; + size_t len1 = strlen(str1); + char* result = (char*) malloc(len1+len2+1); + if(!result) return NULL; + strcpy(result, str1); + strncpy(result+len1, str2, len2); + result[len1+len2] = '\0'; + if(free_old) free(str1); + return result; +} + +void freestr(char** ptr) { + if(*ptr) free(*ptr); + *ptr = 0; +} + diff --git a/tools/pylauncher/str.h b/tools/pylauncher/str.h new file mode 100644 index 0000000..837767b --- /dev/null +++ b/tools/pylauncher/str.h @@ -0,0 +1,9 @@ +#ifndef _STR_H_ +#define _STR_H_ + +char* concat(char* str1, char* str2, int free_old); +char* concatn(char* str1, char* str2, size_t len2, int free_old); +void freestr(char** ptr); + +#endif + diff --git a/tools/pylauncher/unpack.c b/tools/pylauncher/unpack.c new file mode 100644 index 0000000..46f1a1b --- /dev/null +++ b/tools/pylauncher/unpack.c @@ -0,0 +1,416 @@ +/* + * Copyright (c) 2007, 2008 Agostino Russo + * + * Written by Agostino Russo + * Heavily inspired by exemaker from Fredrik Lundh + * + * pylauncher is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * pylauncher is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * DESCRIPTION: + * Unpacks an lzma archive + */ + +#include "unpack.h" +#include "str.h" +#include + +#define true 1 +#define false 0 + +#ifdef USE_WINDOWS_FUNCTIONS +typedef HANDLE MY_FILE_HANDLE; +#else +typedef FILE *MY_FILE_HANDLE; +#endif + +//TBD using a global here is ugly as hell, but will do for now +size_t g_offset = 0; + +#ifdef USE_WINDOWS_FUNCTIONS +/* + ReadFile and WriteFile functions in Windows have BUG: + If you Read or Write 64MB or more (probably min_failure_size = 64MB - 32KB + 1) + from/to Network file, it returns ERROR_NO_SYSTEM_RESOURCES + (Insufficient system resources exist to complete the requested service). +*/ +#define kChunkSizeMax (1 << 24) +#endif + +size_t read_file(MY_FILE_HANDLE file, void *data, size_t size) +{ + if (size == 0) + return 0; + #ifdef USE_WINDOWS_FUNCTIONS + { + size_t processed_size = 0; + do + { + DWORD cur_size = (size > kChunkSizeMax) ? kChunkSizeMax : (DWORD)size; + DWORD processed_loc = 0; + BOOL res = ReadFile(file, data, cur_size, &processed_loc, NULL); + data = (void *)((unsigned char *)data + processed_loc); + size -= processed_loc; + processed_size += processed_loc; + if (!res || processed_loc == 0) + break; + } + while (size > 0); + return processed_size; + } + #else + return fread(data, 1, size, file); + #endif +} + +size_t write_file(MY_FILE_HANDLE file, void *data, size_t size) +{ + if (size == 0) + return 0; + #ifdef USE_WINDOWS_FUNCTIONS + { + size_t processed_size = 0; + do + { + DWORD cur_size = (size > kChunkSizeMax) ? kChunkSizeMax : (DWORD)size; + DWORD processed_loc = 0; + BOOL res = WriteFile(file, data, cur_size, &processed_loc, NULL); + data = (void *)((unsigned char *)data + processed_loc); + size -= processed_loc; + processed_size += processed_loc; + if (!res) + break; + } + while (size > 0); + return processed_size; + } + #else + return fwrite(data, 1, size, file); + #endif +} + +int close_file(MY_FILE_HANDLE file) +{ + #ifdef USE_WINDOWS_FUNCTIONS + return (CloseHandle(file) != FALSE) ? 0 : 1; + #else + return fclose(file); + #endif +} + +typedef struct _CFileInStream +{ + ISzInStream InStream; + MY_FILE_HANDLE File; +} CFileInStream; + +#ifdef _LZMA_IN_CB + +#define kBufferSize (1 << 12) +Byte g_Buffer[kBufferSize]; + +SZ_RESULT read_file_imp(void *object, void **buffer, size_t max_required_size, size_t *processed_size) +{ + CFileInStream *s = (CFileInStream *)object; + size_t processedSizeLoc; + if (max_required_size > kBufferSize) + max_required_size = kBufferSize; + processedSizeLoc = read_file(s->File, g_Buffer, max_required_size); + *buffer = g_Buffer; + if (processed_size != 0) + *processed_size = processedSizeLoc; + return SZ_OK; +} + +#else + +SZ_RESULT read_file_imp(void *object, void *buffer, size_t size, size_t *processed_size) +{ + CFileInStream *s = (CFileInStream *)object; + size_t processedSizeLoc = read_file(s->File, buffer, size); + if (processed_size != 0) + *processed_size = processedSizeLoc; + return SZ_OK; +} + +#endif + +SZ_RESULT seek_file_imp(void *object, CFileSize pos) +{ + CFileInStream *s = (CFileInStream *)object; + pos += g_offset; + #ifdef USE_WINDOWS_FUNCTIONS + { + LARGE_INTEGER value; + value.LowPart = (DWORD)pos; + value.HighPart = (LONG)((UInt64)pos >> 32); + #ifdef _SZ_FILE_SIZE_32 + /* VC 6.0 has bug with >> 32 shifts. */ + value.HighPart = 0; + #endif + value.LowPart = SetFilePointer(s->File, value.LowPart, &value.HighPart, FILE_BEGIN); + if (value.LowPart == 0xFFFFFFFF) + if(GetLastError() != NO_ERROR) + return SZE_FAIL; + return SZ_OK; + } + #else + int res = fseek(s->File, (long)pos, SEEK_SET); + if (res == 0) + return SZ_OK; + return SZE_FAIL; + #endif +} + +MY_FILE_HANDLE open_file_r(char *file_name) +{ + MY_FILE_HANDLE output_handle; + output_handle = + #ifdef USE_WINDOWS_FUNCTIONS + CreateFile(file_name, GENERIC_READ, FILE_SHARE_READ, + NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (output_handle == INVALID_HANDLE_VALUE) + return 0; + #else + fopen(file_name, "rb"); + #endif + return output_handle; +} + +MY_FILE_HANDLE open_file_w(char *file_name) +{ + MY_FILE_HANDLE output_handle; + output_handle = + #ifdef USE_WINDOWS_FUNCTIONS + CreateFile(file_name, GENERIC_WRITE, FILE_SHARE_READ, + NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (output_handle == INVALID_HANDLE_VALUE) + return 0; + #else + fopen(file_name, "wb+"); + #endif + return output_handle; +} + +int create_directory(char *directory_name) +{ + int result; + #ifdef USE_WINDOWS_FUNCTIONS + CreateDirectory(directory_name,NULL); + #else + result = mkdir(directory_name); //, S_IRUSR | S_IWUSR); //second argument not supported by mingw version + #endif + return result; +} + +void print_error(char *message) +{ + #ifdef DEBUG + printf("\nERROR: %s\n", message); + #ifdef USE_WINDOWS_FUNCTIONS + MessageBox(NULL, message, "Unpack Error", MB_ICONERROR | MB_OK); + #endif + #endif +} + +CFileSize seek_beginning_of_archive(CFileInStream *archive_stream) +{ + UInt32 i; + int is_found; + char* pylauncher = "@@@pylauncher@@@"; + char* signature = concatn(pylauncher, (char*)k7zSignature, k7zSignatureSize, false); + if(!signature) return 1; + int signature_size = strlen(signature); + int result; + size_t archive_size = 0; + #ifdef DEBUG + printf("signature: '%s'\n", signature); + #endif + #ifdef USE_WINDOWS_FUNCTIONS + archive_size = 1000000 //TBD + #else + struct stat filestat; + fstat(fileno(archive_stream->File), &filestat); + archive_size = filestat.st_size; + #endif + is_found = false; + Byte b[signature_size]; + #ifdef DEBUG + printf("archive_size=%d", archive_size); + #endif + for (i=0; i < archive_size; i++){ + result = seek_file_imp(archive_stream, i); + result = read_file(archive_stream->File, &b, signature_size); + if (result == 0){ + break; + } + if(memcmp(signature, b, signature_size) == 0) { + is_found = true; + break; + } + } + #ifdef DEBUG + printf("signature=%s, offset=%d, found=%i\n", b, i, is_found); + #endif + if (! is_found){ + print_error("Could not find the beginning of the archive"); + } + free(signature); + return (CFileSize)(i + strlen(pylauncher)); +} + +int unpack(char archive[512]) +{ + UInt32 i; + CFileInStream archive_stream; + CArchiveDatabaseEx db; + SZ_RESULT res; + ISzAlloc alloc_imp; + ISzAlloc alloc_temp_imp; + #ifdef DEBUG + printf("extracting %s...\n", archive); + #endif + archive_stream.File = open_file_r(archive); + if (archive_stream.File == 0) + { + print_error("can not open input file"); + return 1; + } + archive_stream.InStream.Read = read_file_imp; + archive_stream.InStream.Seek = seek_file_imp; + alloc_imp.Alloc = SzAlloc; + alloc_imp.Free = SzFree; + alloc_temp_imp.Alloc = SzAllocTemp; + alloc_temp_imp.Free = SzFreeTemp; + CrcGenerateTable(); + + //SEEK OFFSET + size_t offset; + offset = seek_beginning_of_archive(&archive_stream); + + //INIT DB + SzArDbExInit(&db); + + //SET THE OFFSET + g_offset = offset; + seek_file_imp(&archive_stream.InStream, 0); //seek to beginning of file including offset + + res = SzArchiveOpen(&archive_stream.InStream, &db, &alloc_imp, &alloc_temp_imp); + #ifdef DEBUG + printf("res = %i\n",res); + #endif + if (res == SZ_OK) + { + /* + if you need cache, use these 3 variables. + if you use external function, you can make these variable as static. + */ + UInt32 block_index = 0xFFFFFFFF; /* it can have any value before first call (if out_buffer = 0) */ + Byte *out_buffer = 0; /* it must be 0 before first call for each new archive. */ + size_t out_buffer_size = 0; /* it can have any value before first call (if out_buffer = 0) */ + + //~ for (i = db.Database.NumFolders-1; i >0; i--) + //~ { + //~ CFileItem *f = db.Database.Folders + i; + //~ if (!f->IsDirectory){ + //~ } else { + //~ } + //~ } + + for (i = db.Database.NumFiles-1; i >0; i--) + { + CFileItem *f = db.Database.Files + i; + if (!f->IsDirectory){ + continue; + } + #ifdef DEBUG + printf("Creating directory %s", f->Name); + #endif + if (create_directory(f->Name) != 0) + { + print_error("can not create directory"); + } + #ifdef DEBUG + printf("\n"); + #endif + } + + for (i = 0; i < db.Database.NumFiles; i++) + { + CFileItem *f = db.Database.Files + i; + #ifdef DEBUG + printf("Extracting %s\n %d %s", f->Name, i, f->IsDirectory); + #endif + if (f->IsDirectory){ + continue; + } + size_t out_size_processed; + #ifdef DEBUG + printf("Extracting %s\n", f->Name); + #endif + res = SzExtract(&archive_stream.InStream, &db, i, + &block_index, &out_buffer, &out_buffer_size, + &offset, &out_size_processed, + &alloc_imp, &alloc_temp_imp); + + if (res != SZ_OK) + break; + + MY_FILE_HANDLE output_handle = open_file_w(f->Name); + if (output_handle == 0) + { + print_error("can not open output file"); + res = SZE_FAIL; + break; + } + + size_t processed_size; + processed_size = write_file(output_handle, out_buffer + offset, out_size_processed); + if (processed_size != out_size_processed) + { + print_error("can not write output file"); + res = SZE_FAIL; + break; + } + if (close_file(output_handle)) + { + print_error("can not close output file"); + res = SZE_FAIL; + break; + } + #ifdef DEBUG + printf("\n"); + #endif + } + alloc_imp.Free(out_buffer); + } + SzArDbExFree(&db, alloc_imp.Free); + + close_file(archive_stream.File); + if (res == SZ_OK) + { + #ifdef DEBUG + printf("\nEverything is Ok\n"); + #endif + return 0; + } + if (res == (SZ_RESULT)SZE_NOTIMPL) + print_error("decoder doesn't support this archive"); + else if (res == (SZ_RESULT)SZE_OUTOFMEMORY) + print_error("can not allocate memory"); + else if (res == (SZ_RESULT)SZE_CRC_ERROR) + print_error("CRC error"); + else + print_error("Unknown error"); //TBD print res + return 1; +} diff --git a/tools/pylauncher/unpack.h b/tools/pylauncher/unpack.h new file mode 100644 index 0000000..dddda6b --- /dev/null +++ b/tools/pylauncher/unpack.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2007, 2008 Agostino Russo + * + * Written by Agostino Russo + * Heavily inspired by exemaker from Fredrik Lundh + * + * pylauncher is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * pylauncher is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * DESCRIPTION: + * Unpacks an lzma archive + */ + +#include +#include +#include +#include +#include + +#include "../7z/C/Archive/7z/7zIn.h" +#include "../7z/C/Archive/7z/7zExtract.h" +#include "../7z/C/7zCrc.h" + +#ifdef USE_WINDOWS_FUNCTIONS +#include +#endif + +int unpack(char *archive); diff --git a/tools/pypack/LICENSE b/tools/pypack/LICENSE new file mode 100644 index 0000000..d511905 --- /dev/null +++ b/tools/pypack/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/tools/pypack/README b/tools/pypack/README new file mode 100644 index 0000000..5c88eb9 --- /dev/null +++ b/tools/pypack/README @@ -0,0 +1,69 @@ +PyPack +by Agostino Russo + +Pypack creates a self-sufficient packaged script suitable for "folder deployment". + + * The package includes all the required dependencies, and therefore is self-sufficient + * The package only includes the required dependencies, so it is efficient + * It can be used to package libraries or applications. + * Using pypack is very simple and intuitive, no configuration file is required + * It is easy to change the content of the package before packaging + * It is easy to change the content of the package after packaging + * The packaged application is transparent and predictable + * It is easy to test and debug using either the unpackaged or the deployed packaged version + * Optionally you can compress the dirctory and/or turn it in a self-extracting, self-executable binary with the interpreter using pylauncher (Windows only) + +At least those are the goals. + +== QuickStart == + +python pypack your_main_script.py + +If you need to bundle data directories, add extra modules, remove some modules: + +pypack --exclude=_ssl your_main_script.py /path/to/datadir1 /path/to/datadir2 /path/to/_include.py + +Where _include.py contains the required import statements, being prefixed with '_' ensures that the dependencies are included but not the script itself. + +For a complete list of options use + +python pypack --help + +Pypack itself is built with the command: ./pypack pypack README LICENSE + +Do not skip the next section!!! + +== Runtime Behaviour == + +Pypack adds your main_script as './build/main_script' (keeping the original name), and all dependencies are added to a directory called './build/lib'. So at runtime you need to have './lib' in your sys.path. You can either use a launcher that adds './lib' to sys.path, Otherwise add the following lines inside of your main_script before any other import statement: + +import sys, os +root_dir = os.path.abspath(os.path.dirname(__file__)) +lib_dir = os.path.join(root_dir, 'lib') +sys.path.insert(0, lib_dir) + +See the pypack code as an example + +== Adding Extra Modules and Data Files == + +Any file or directory passed as extra argument is added to the package. If the file as a '.py' extension, it will be added to 'package/lib' with all of its dependencies. This is a good way to add extra modules and packages without importing in your main_script, for instance if you want to do dynamic module loading, or to explicitly add modules that are not discovered by pypack. If the extra argument is not a python file, it will be considered a data file/directory and it will be recursively copied into 'package/' + basename(extra). Symlinks will be deferenced. + +== Removing or Replacing Modules == + +You can also use an --exclude option passing a comma delimited list of package names and/or you can use stub files in the source tree, which will replace the actual module. + +== Extensions and Bytecompilation == + +If your application/library depends on compiled modules or if you want to ship byte compiled files, you can run pypack within a target environment to create a package for that architecture. If you need to create a Windows package from within Linux, install python inside of Wine with any needed package, and run pypack using python within Wine. + +If you want to be compatible with old versions of python, try to compile using a relatively old version of python. + +To produce optimized byte code, run: python -OO pypack --bytecompile your_script.py + +== Gotchas == + +There are situations that cannot be handled with pypack. Pypack favors transparency and simplicity over corner case coverage. It will work in many cases, and many other situations will be easy to fix manually or with a custom script. + +A common situation is when in your application some packages are dynamically imported, in such scenario simply create an extra python script with explicity import statements and pass it as extra argument as explained in the section "Adding Extra Modules and Data Files". + +That said, you can quickly check if it works for you by running it and testing your application. diff --git a/tools/pypack/altgraph/Dot.py b/tools/pypack/altgraph/Dot.py new file mode 100644 index 0000000..fe3ba95 --- /dev/null +++ b/tools/pypack/altgraph/Dot.py @@ -0,0 +1,252 @@ +''' +Interface to the dot language +============================= + +The B{Dot} module provides a simple interface to the +file format used in the U{graphviz} +program. The module is intended to offload the most tedious part of the process +(the B{dot} file generation) while transparently exposing most of its features. + +To display the graphs or to generate image files the U{graphviz} +package needs to be installed on the system, moreover the C{dot} and C{dotty} programs must +be accesible in the program path so that they can be ran from processes spawned +within the module. See the L{Dot} documentation for further information on the setup. + +Example usage +------------- + +Here is a typical usage:: + + from altgraph import Graph, Dot + + # create a graph + edges = [ (1,2), (1,3), (3,4), (3,5), (4,5), (5,4) ] + graph = Graph.Graph(edges) + + # create a dot representation of the graph + dot = Dot.Dot(graph) + + # display the graph + dot.display() + + # save the dot representation into the mydot.dot file + dot.save_dot(file_name='mydot.dot') + + # save dot file as gif image into the graph.gif file + dot.save_img(file_name='graph', file_type='gif') + +Customizing the output +---------------------- + +The graph drawing process may be customized by passing +valid B{dot} parameters for the nodes and edges. For a list of all +parameters see the U{graphviz} +documentation. + +Example:: + # customizing the way the overall graph is drawn + dot.style(size='10,10', rankdir='RL', page='5, 5' , ranksep=0.75) + + # customizing node drawing + dot.node_style(1, label='BASE_NODE',shape='box', color='blue' ) + dot.node_style(2, style='filled', fillcolor='red') + + # customizing edge drawing + dot.edge_style(1, 2, style='dotted') + dot.edge_style(3, 5, arrowhead='dot', label='binds', labelangle='90') + dot.edge_style(4, 5, arrowsize=2, style='bold') + +B{Observation}: dotty (invoked via L{Dot.display}) may not be able to +display all graphics styles. To verify the output save it to an image file +and look at it that way. + +Valid attributes +---------------- + + - dot styles, passed via the L{Dot.style} method:: + rankdir = 'LR' (draws the graph horizontally, left to right) + ranksep = number (rank separation in inches) + + - node attributes, passed via the L{Dot.node_style} method:: + style = 'filled' | 'invisible' | 'diagonals' | 'rounded' + shape = 'box' | 'ellipse' | 'circle' | 'point' | 'triangle' + + - edge attributes, passed via the L{Dot.edge_style} method:: + style = 'dashed' | 'dotted' | 'solid' | 'invis' | 'bold' + arrowhead = 'box' | 'crow' | 'diamond' | 'dot' | 'inv' | 'none' | 'tee' | 'vee' + weight = number (the larger the number the closer the nodes will be) + + - valid U{graphviz colors} + + - for more details on how to control the graph drawing process see the + U{graphviz reference }. + +''' +import os + +from altgraph import GraphError +from altgraph.compat import * + +class Dot(object): + ''' + A class providing a B{graphviz} (dot language) representation + allowing a fine grained control over how the graph is being + displayed. + + If the C{dot} and C{dotty} programs are not in the current system path + their location needs to be specified in the L{constructor<__init__>}. + + For detailed example usage see the L{Dot} module documentation. + ''' + + def __init__(self, graph=None, nodes=None, edgefn=None, nodevisitor=None, edgevisitor=None, name="G", dot='dot', dotty='dotty', neato='neato'): + ''' + Initialization. + ''' + self.name, self.attr = name, {} + + self.temp_dot = "tmp_dot.dot" + self.temp_neo = "tmp_neo.dot" + + self.dot, self.dotty, self.neato = dot, dotty, neato + self.nodes, self.edges = {}, {} + + if graph is not None and nodes is None: + nodes = graph + if graph is not None and edgefn is None: + def edgefn(node, graph=graph): + return imap(graph.tail, graph.out_edges(node)) + if nodes is None: + nodes = () + + seen = set() + for node in nodes: + if nodevisitor is None: + style = {} + else: + style = nodevisitor(node) + if style is not None: + self.node_style(node, **style) + seen.add(node) + if edgefn is not None: + for head in seen: + for tail in ifilter(seen.__contains__, edgefn(head)): + if edgevisitor is None: + edgestyle = {} + else: + edgestyle = edgevisitor(head, tail) + if edgestyle is not None: + self.edge_style(head, tail, **edgestyle) + + def style(self, **attr): + ''' + Changes the overall style + ''' + self.attr = attr + + def display(self, mode='dot'): + ''' + Displays the current graph via dotty + ''' + + if mode == 'neato': + self.save_dot(self.temp_neo) + neato_cmd = "%s -o %s %s" % (self.neato, self.temp_dot, self.temp_neo) + os.system(neato_cmd) + else: + self.save_dot(self.temp_dot) + + plot_cmd = "%s %s" % (self.dotty, self.temp_dot) + os.system(plot_cmd) + + def node_style(self, node, **kwargs): + ''' + Modifies a node style to the dot representation. + ''' + if node not in self.edges: + self.edges[node] = {} + self.nodes[node] = kwargs + + def all_node_style(self, **kwargs): + ''' + Modifies all node styles + ''' + for node in self.nodes: + self.node_style(node, **kwargs) + + def edge_style(self, head, tail, **kwargs): + ''' + Modifies an edge style to the dot representation. + ''' + try: + if tail not in self.edges[head]: + self.edges[head][tail]= {} + self.edges[head][tail] = kwargs + except KeyError: + raise GraphError("invalid edge %s -> %s " % (head, tail) ) + + def iterdot(self): + # write graph title + yield 'digraph %s {\n' % (self.name,) + + # write overall graph attributes + for attr_name, attr_value in self.attr.iteritems(): + yield '%s="%s";' % (attr_name, attr_value) + yield '\n' + + # some reusable patterns + cpatt = '%s="%s",' # to separate attributes + epatt = '];\n' # to end attributes + + # write node attributes + for node_name, node_attr in self.nodes.iteritems(): + yield '\t"%s" [' % (node_name,) + for attr_name, attr_value in node_attr.iteritems(): + yield cpatt % (attr_name, attr_value) + yield epatt + + # write edge attributes + for head in self.edges: + for tail in self.edges[head]: + yield '\t"%s" -> "%s" [' % (head, tail) + for attr_name, attr_value in self.edges[head][tail].iteritems(): + yield cpatt % (attr_name, attr_value) + yield epatt + + # finish file + yield '}\n' + + def __iter__(self): + return self.iterdot() + + def save_dot(self, file_name=None): + ''' + Saves the current graph representation into a file + ''' + + if not file_name: + file_name = self.temp_dot + + fp = open(file_name, "w") + write = fp.write + for chunk in self.iterdot(): + write(chunk) + fp.close() + + def save_img(self, file_name="out", file_type="gif", mode='dot'): + ''' + Saves the dot file as an image file + ''' + + if mode == 'neato': + self.save_dot(self.temp_neo) + neato_cmd = "%s -o %s %s" % (self.neato, self.temp_dot, self.temp_neo) + os.system(neato_cmd) + plot_cmd = self.neato + else: + self.save_dot(self.temp_dot) + plot_cmd = self.dot + + file_name = "%s.%s" % (file_name, file_type) + create_cmd = "%s -T%s %s -o %s" % (plot_cmd, file_type, self.temp_dot, file_name) + os.system(create_cmd) diff --git a/tools/pypack/altgraph/Graph.py b/tools/pypack/altgraph/Graph.py new file mode 100644 index 0000000..915b902 --- /dev/null +++ b/tools/pypack/altgraph/Graph.py @@ -0,0 +1,626 @@ +""" +Base Graph class + +#--Version 2.1 +#--Bob Ippolito October, 2004 + +#--Version 2.0 +#--Istvan Albert June, 2004 + + +#--Version 1.0 +#--Nathan Denny, May 27, 1999 +""" + +from altgraph import GraphError + +from compat import * + +class Graph(object): + """ + The Graph class represents a directed graph with C{N} nodes and C{E} edges. + + Naming conventions: + - the prefixes such asC{out}, C{inc} and C{all} will refer to methods + that operate on the outgoing, incoming or all edges of that node. + For example: L{inc_degree} will refer to the degree of the node + computed over the incoming edges (the number of neighbours linking to + the node). + - the prefixes such as C{forw} and C{back} will refer to the + orientation of the edges used in the method with respect to the node. + For example: L{forw_bfs} will start at the node then use the outgoing + edges to traverse the graph (goes forward). + """ + + def __init__(self, edges=None): + """ + Initialization + """ + + self.next_edge = 0 + self.nodes, self.edges = {}, {} + self.hidden_edges, self.hidden_nodes = {}, {} + + try: + # instantiate graph from iterable data + if edges: + cols = len(edges[0]) + if cols == 2: + for head, tail in edges: + self.add_edge(head, tail) + elif cols == 3: + for head, tail, data in edges: + self.add_edge(head, tail, data) + except Exception, exc: + raise GraphError('%s -> Cannot create graph from edges=%s' % + (exc, edges)) + + def __repr__(self): + return '' % ( + self.number_of_nodes(), self.number_of_edges()) + + def add_node(self, node, node_data=None): + """ + Creates a new node with a node. Arbitrary data can be attached to the + node via the node_data parameter. Adding the same node twice will be + silently ignored. + """ + # + # the nodes will contain tuples that will store incoming edges, + # outgoing edges and data + # + # index 0 -> incoming edges + # index 1 -> outgoing edges + if node not in self.nodes: + self.nodes[node] = ([], [], node_data) + + def add_edge(self, head_id, tail_id, edge_data=1, create_nodes=True): + """ + Adds a directed edge going from head_id to tail_id. + Arbitrary data can be attached to the edge via edge_data. + It may create the nodes if adding edges between nonexisting ones. + @param head_id: head node + @param tail_id: tail node + @param edge_data: (optional) data attached to the edge + @param create_nodes: (optional) creates the head_id or tail_id node in case they did not exist + """ + # shorcut + edge = self.next_edge + + # add nodes if on automatic node creation + if create_nodes: + self.add_node(head_id) + self.add_node(tail_id) + + # store edge information + self.edges[edge] = (head_id, tail_id, edge_data) + + # update the corresponding incoming and outgoing lists in the nodes + # index 0 -> incoming edges + # index 1 -> outgoing edges + + try: + self.nodes[tail_id][0].append(edge) + self.nodes[head_id][1].append(edge) + except KeyError: + raise GraphError('Invalid nodes %s -> %s' % (head_id, tail_id)) + + self.next_edge += 1 + + def hide_edge(self, edge): + """ + Hides an edge from the graph. The edge may be unhidden at some later + time. + """ + try: + head_id, tail_id, edge_data = self.hidden_edges[edge] = self.edges[edge] + self.nodes[tail_id][0].remove(edge) + self.nodes[head_id][1].remove(edge) + del self.edges[edge] + except KeyError: + raise GraphError('Invalid edge %s' % edge) + + def hide_node(self, node): + """ + Hides a node from the graph. The incoming and outgoing edges of the + node will also be hidden. The node may be unhidden at some later time. + """ + try: + all_edges = self.all_edges(node) + self.hidden_nodes[node] = (self.nodes[node], all_edges) + for edge in all_edges: + self.hide_edge(edge) + del self.nodes[node] + except KeyError: + raise GraphError('Invalid node %s' % node) + + def restore_node(self, node): + """ + Restores a previously hidden node back into the graph and restores + all of its incoming and outgoing edges. + """ + try: + self.nodes[node], all_edges = self.hidden_nodes[node] + for edge in all_edges: + self.restore_edge(edge) + del self.hidden_nodes[node] + except KeyError: + raise GraphError('Invalid node %s' % node) + + def restore_edge(self, edge): + """ + Restores a previously hidden edge back into the graph. + """ + try: + self.edges[edge] = head_id, tail_id, data = self.hidden_edges[edge] + self.nodes[tail_id][0].append(edge) + self.nodes[head_id][1].append(edge) + del self.hidden_edges[edge] + except KeyError: + raise GraphError('Invalid edge %s' % edge) + + def restore_all_edges(self): + """ + Restores all hidden edges. + """ + for edge in self.hidden_edges.keys(): + self.restore_edge(edge) + + def restore_all_nodes(self): + """ + Restores all hidden nodes. + """ + for node in self.hidden_nodes.keys(): + self.restore_node(node) + + def __contains__(self, node): + """ + Test whether a node is in the graph + """ + return node in self.nodes + + def edge_by_id(self, edge): + """ + Returns the edge that connects the head_id and tail_id nodes + """ + try: + head, tail, data = self.edges[edge] + except KeyError: + head, tail = None, None + raise GraphError('Invalid edge %s' % edge) + + return (head, tail) + + def edge_by_node(self, head, tail): + """ + Returns the edge that connects the head_id and tail_id nodes + """ + for edge in self.out_edges(head): + if self.tail(edge) == tail: + return edge + return None + + def number_of_nodes(self): + """ + Returns the number of nodes + """ + return len(self.nodes) + + def number_of_edges(self): + """ + Returns the number of edges + """ + return len(self.edges) + + def __iter__(self): + """ + Iterates over all nodes in the graph + """ + return iter(self.nodes) + + def node_list(self): + """ + Return a list of the node ids for all visible nodes in the graph. + """ + return self.nodes.keys() + + def edge_list(self): + """ + Returns an iterator for all visible nodes in the graph. + """ + return self.edges.keys() + + def number_of_hidden_edges(self): + """ + Returns the number of hidden edges + """ + return len(self.hidden_edges) + + def number_of_hidden_nodes(self): + """ + Returns the number of hidden nodes + """ + return len(self.hidden_nodes) + + def hidden_node_list(self): + """ + Returns the list with the hidden nodes + """ + return self.hidden_nodes.keys() + + def hidden_edge_list(self): + """ + Returns a list with the hidden edges + """ + return self.hidden_edges.keys() + + def describe_node(self, node): + """ + return node, node data, outgoing edges, incoming edges for node + """ + incoming, outgoing, data = self.nodes[node] + return node, data, outgoing, incoming + + def describe_edge(self, edge): + """ + return edge, edge data, head, tail for edge + """ + head, tail, data = self.edges[edge] + return edge, data, head, tail + + def node_data(self, node): + """ + Returns the data associated with a node + """ + return self.nodes[node][2] + + def edge_data(self, edge): + """ + Returns the data associated with an edge + """ + return self.edges[edge][2] + + def head(self, edge): + """ + Returns the node of the head of the edge. + """ + return self.edges[edge][0] + + def tail(self, edge): + """ + Returns node of the tail of the edge. + """ + return self.edges[edge][1] + + def out_nbrs(self, node): + """ + List of nodes connected by outgoing edges + """ + return map(self.tail, self.out_edges(node)) + + def inc_nbrs(self, node): + """ + List of nodes connected by incoming edges + """ + return map(self.head, self.inc_edges(node)) + + def all_nbrs(self, node): + """ + List of nodes connected by incoming and outgoing edges + """ + return self.inc_nbrs(node) + self.out_nbrs(node) + + def out_edges(self, node): + """ + Returns a list of the outgoing edges + """ + try: + return list(self.nodes[node][1]) + except KeyError: + raise GraphError('Invalid node %s' % node) + + return None + + def inc_edges(self, node): + """ + Returns a list of the incoming edges + """ + try: + return list(self.nodes[node][0]) + except KeyError: + raise GraphError('Invalid node %s' % node) + + return None + + def all_edges(self, node): + """ + Returns a list of incoming and outging edges. + """ + return set(self.inc_edges(node) + self.out_edges(node)) + + def out_degree(self, node): + """ + Returns the number of outgoing edges + """ + return len(self.out_edges(node)) + + def inc_degree(self, node): + """ + Returns the number of incoming edges + """ + return len(self.inc_edges(node)) + + def all_degree(self, node): + """ + The total degree of a node + """ + return self.inc_degree(node) + self.out_degree(node) + + def _topo_sort(self, forward=True): + """ + Topological sort. + Returns a list of nodes where the successors (based on outgoing and + incoming edges selected by the forward parameter) of any given node + appear in the sequence after that node. + """ + topo_list = [] + queue = deque() + indeg = {} + + # select the operation that will be performed + if forward: + get_edges = self.out_edges + get_degree = self.inc_degree + else: + get_edges = self.inc_edges + get_degree = self.out_degree + + for node in self.node_list(): + degree = get_degree(node) + if degree: + indeg[node] = degree + else: + queue.append(node) + + while queue: + curr_node = queue.popleft() + topo_list.append(curr_node) + for edge in get_edges(curr_node): + tail_id = self.tail(edge) + indeg[tail_id] -= 1 + if indeg[tail_id] == 0: + queue.append(tail_id) + + if len(topo_list) == len(self.node_list()): + valid = True + else: + # the graph has cycles, invalid topological sort + valid = False + + return (valid, topo_list) + + def forw_topo_sort(self): + """ + Topological sort. + Returns a list of nodes where the successors (based on outgoing edges) + of any given node appear in the sequence after that node. + """ + return self._topo_sort(forward=True) + + def back_topo_sort(self): + """ + Reverse topological sort. + Returns a list of nodes where the successors (based on incoming edges) + of any given node appear in the sequence after that node. + """ + return self._topo_sort(forward=False) + + def _bfs_subgraph(self, start_id, forward=True): + """ + Private method creates a subgraph in a bfs order. + The forward parameter specifies whether it is a forward or backward + traversal. + """ + if forward: + get_bfs = self.forw_bfs + get_nbrs = self.out_nbrs + else: + get_bfs = self.back_bfs + get_nbrs = self.inc_nbrs + + g = Graph() + bfs_list = get_bfs(start_id) + for (hop_num, node) in bfs_list: + g.add_node(node) + + for (hop_num, node) in bfs_list: + for nbr_id in get_nbrs(node): + g.add_edge(node, nbr_id) + + return g + + def forw_bfs_subgraph(self, start_id): + """ + Creates and returns a subgraph consisting of the breadth first + reachable nodes based on their outgoing edges. + """ + return self._bfs_subgraph(start_id, forward=True) + + def back_bfs_subgraph(self, start_id): + """ + Creates and returns a subgraph consisting of the breadth first + reachable nodes based on the incoming edges. + """ + return self._bfs_subgraph(start_id, forward=True) + + def iterdfs(self, start, end=None, forward=True): + """ + Collecting nodes in some depth first traversal. + The forward parameter specifies whether it is a forward or backward + traversal. + """ + visited, stack = set([start]), deque([start]) + + if forward: + get_edges = self.out_edges + else: + get_edges = self.inc_edges + + while stack: + curr_node = stack.pop() + yield curr_node + if curr_node == end: + break + for edge in get_edges(curr_node): + tail = self.tail(edge) + if tail not in visited: + visited.add(tail) + stack.append(tail) + + def iterdata(self, start, end=None, forward=True, condition=None): + visited, stack = set([start]), deque([start]) + + if forward: + get_edges = self.out_edges + else: + get_edges = self.inc_edges + + get_data = self.node_data + + while stack: + curr_node = stack.pop() + curr_data = get_data(curr_node) + if curr_data is not None: + if condition is not None and not condition(curr_data): + continue + yield curr_data + if curr_node == end: + break + for edge in get_edges(curr_node): + tail = self.tail(edge) + if tail not in visited: + visited.add(tail) + stack.append(tail) + + def _dfs(self, start, end=None, forward=True): + return list(self.iterdfs(start, end=end, forward=forward)) + + def _iterbfs(self, start, end=None, forward=True): + """ + Private method, collecting nodes in some breadth first traversal. + The forward parameter specifies whether it is a forward or backward + traversal. Returns a list of tuples where the first value is the hop + value the second value is the node id. + """ + queue, visited = deque([(start, 0)]), set([start]) + + # the direction of the bfs depends on the edges that are sampled + if forward: + get_edges = self.out_edges + else: + get_edges = self.inc_edges + + while queue: + curr_node, curr_step = queue.popleft() + yield (curr_node, curr_step) + if curr_node == end: + break + for edge in get_edges(curr_node): + tail = self.tail(edge) + if tail not in visited: + visited.add(tail) + queue.append((tail, curr_step + 1)) + + def _bfs(self, start, end=None, forward=True): + return list(self._iterbfs(start, end=end, forward=forward)) + + def forw_bfs(self, start, end=None): + """ + Returns a list of nodes in some forward BFS order. + Starting from the start node the breadth first search proceeds along + outgoing edges. + """ + return [node for node, step in self._bfs(start, end, forward=True)] + + def back_bfs(self, start, end=None): + """ + Returns a list of nodes in some backward BFS order. + Starting from the start node the breadth first search proceeds along + incoming edges. + """ + return [node for node, step in self._bfs(start, end, forward=False)] + + def forw_dfs(self, start, end=None): + """ + Returns a list of nodes in some forward DFS order. + Starting with the start node the depth first search proceeds along + outgoing edges. + """ + return self._dfs(start, end, forward=True) + + def back_dfs(self, start, end=None): + """ + Returns a list of nodes in some backward DFS order. + Starting from the start node the depth first search proceeds along + incoming edges. + """ + return self._dfs(start, end, forward=False) + + def connected(self): + """ + Returns C{True} if the graph's every node can be reached from every + other node. + """ + node_list = self.node_list() + for node in node_list: + bfs_list = self.forw_bfs(node) + if len(bfs_list) != len(node_list): + return False + return True + + def clust_coef(self, node): + """ + Computes and returns the clustering coefficient of node. The clustering + coeffcient is defined as ... + """ + num = 0 + nbr_set = set(self.out_nbrs(node)) + nbr_set.remove(node) # loop defense + + for nbr in nbr_set: + sec_set = set(self.out_nbrs(nbr)) + sec_set.remove(nbr) # loop defense + num += len(nbr_set & sec_set) + + nbr_num = len(nbr_set) + if nbr_num: + clust_coef = float(num) / (nbr_num * (nbr_num - 1)) + else: + clust_coef = 0.0 + return clust_coef + + def get_hops(self, start, end=None, forward=True): + """ + Computes the hop distance to all nodes centered around a specified node. + First order neighbours are at hop 1, their neigbours are at hop 2 etc. + Uses L{forw_bfs} or L{back_bfs} depending on the value of the forward + parameter. If the distance between all neighbouring nodes is 1 the hop + number corresponds to the shortest distance between the nodes. + + @param start: the starting node + @param end: ending node (optional). When not specified will search the whole graph. + @param forward: directionality parameter (optional). If C{True} (default) it uses L{forw_bfs} otherwise L{back_bfs}. + @return: returns a list of tuples where each tuple contains the node and the hop. + + Typical usage:: + >>> print graph.get_hops(1, 8) + >>> [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3), (7, 4), (8, 5)] + # node 1 is at 0 hops + # node 2 is at 1 hop + # ... + # node 8 is at 5 hops + """ + if forward: + return self._bfs(start=start, end=end, forward=True) + else: + return self._bfs(start=start, end=end, forward=False) diff --git a/tools/pypack/altgraph/GraphAlgo.py b/tools/pypack/altgraph/GraphAlgo.py new file mode 100644 index 0000000..c96a5b9 --- /dev/null +++ b/tools/pypack/altgraph/GraphAlgo.py @@ -0,0 +1,148 @@ +''' +Graph algorithms +''' +from altgraph import GraphError + +def dijkstra(graph, start, end=None): + """ + Dijkstra's algorithm for shortest paths + + David Eppstein, UC Irvine, 4 April 2002 + + U{http://www.ics.uci.edu/~eppstein/161/python/} + + U{http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/119466} + + Find shortest paths from the start node to all nodes nearer than or equal to the end node. + + Dijkstra's algorithm is only guaranteed to work correctly when all edge lengths are positive. + This code does not verify this property for all edges (only the edges examined until the end + vertex is reached), but will correctly compute shortest paths even for some graphs with negative + edges, and will raise an exception if it discovers that a negative edge has caused it to make a mistake. + + I{Adapted to altgraph by Istvan Albert, Pennsylvania State University - June, 9 2004} + + """ + D = {} # dictionary of final distances + P = {} # dictionary of predecessors + Q = _priorityDictionary() # estimated distances of non-final vertices + Q[start] = 0 + + for v in Q: + D[v] = Q[v] + if v == end: break + + for w in graph.out_nbrs(v): + edge_id = graph.edge_by_node(v,w) + vwLength = D[v] + graph.edge_data(edge_id) + if w in D: + if vwLength < D[w]: + raise GraphError("Dijkstra: found better path to already-final vertex") + elif w not in Q or vwLength < Q[w]: + Q[w] = vwLength + P[w] = v + + return (D,P) + +def shortest_path(graph, start, end): + """ + Find a single shortest path from the given start node to the given end node. + The input has the same conventions as dijkstra(). The output is a list of the nodes + in order along the shortest path. + + B{Note that the distances must be stored in the edge data as numeric data} + """ + + D,P = dijkstra(graph, start, end) + Path = [] + while 1: + Path.append(end) + if end == start: break + end = P[end] + Path.reverse() + return Path + +# +# Utility classes and functions +# +class _priorityDictionary(dict): + ''' + Priority dictionary using binary heaps (internal use only) + + David Eppstein, UC Irvine, 8 Mar 2002 + + Implements a data structure that acts almost like a dictionary, with two modifications: + 1. D.smallest() returns the value x minimizing D[x]. For this to work correctly, + all values D[x] stored in the dictionary must be comparable. + 2. iterating "for x in D" finds and removes the items from D in sorted order. + Each item is not removed until the next item is requested, so D[x] will still + return a useful value until the next iteration of the for-loop. + Each operation takes logarithmic amortized time. + ''' + def __init__(self): + ''' + Initialize priorityDictionary by creating binary heap of pairs (value,key). + Note that changing or removing a dict entry will not remove the old pair from the heap + until it is found by smallest() or until the heap is rebuilt. + ''' + self.__heap = [] + dict.__init__(self) + + def smallest(self): + ''' + Find smallest item after removing deleted items from front of heap. + ''' + if len(self) == 0: + raise IndexError, "smallest of empty priorityDictionary" + heap = self.__heap + while heap[0][1] not in self or self[heap[0][1]] != heap[0][0]: + lastItem = heap.pop() + insertionPoint = 0 + while 1: + smallChild = 2*insertionPoint+1 + if smallChild+1 < len(heap) and heap[smallChild] > heap[smallChild+1] : + smallChild += 1 + if smallChild >= len(heap) or lastItem <= heap[smallChild]: + heap[insertionPoint] = lastItem + break + heap[insertionPoint] = heap[smallChild] + insertionPoint = smallChild + return heap[0][1] + + def __iter__(self): + ''' + Create destructive sorted iterator of priorityDictionary. + ''' + def iterfn(): + while len(self) > 0: + x = self.smallest() + yield x + del self[x] + return iterfn() + + def __setitem__(self,key,val): + ''' + Change value stored in dictionary and add corresponding pair to heap. + Rebuilds the heap if the number of deleted items gets large, to avoid memory leakage. + ''' + dict.__setitem__(self,key,val) + heap = self.__heap + if len(heap) > 2 * len(self): + self.__heap = [(v,k) for k,v in self.iteritems()] + self.__heap.sort() # builtin sort probably faster than O(n)-time heapify + else: + newPair = (val,key) + insertionPoint = len(heap) + heap.append(None) + while insertionPoint > 0 and newPair < heap[(insertionPoint-1)//2]: + heap[insertionPoint] = heap[(insertionPoint-1)//2] + insertionPoint = (insertionPoint-1)//2 + heap[insertionPoint] = newPair + + def setdefault(self,key,val): + ''' + Reimplement setdefault to pass through our customized __setitem__. + ''' + if key not in self: + self[key] = val + return self[key] diff --git a/tools/pypack/altgraph/GraphStat.py b/tools/pypack/altgraph/GraphStat.py new file mode 100644 index 0000000..8bf9e0e --- /dev/null +++ b/tools/pypack/altgraph/GraphStat.py @@ -0,0 +1,78 @@ +''' +Functions providing various graph statistics +''' +import sys + +def avg_hops(graph): + ''' + + ''' + pass + +def degree_dist(graph, limits=(0,0), bin_num=10, mode='out'): + ''' + Computes the degree distribution for a graph. + Returns a list of tuples where the first element of the tuple is the center of the bin + representing a range of degrees and the second element of the tuple are the number of nodes + with the degree falling in the range. + + Example:: + .... + + ''' + + deg = [] + if mode == 'inc': + get_deg = graph.inc_degree + else: + get_deg = graph.out_degree + + for node in graph: + deg.append( graph.get_degree(node) ) + + results = _binning(values=deg, limits=limits, bin_num=bin_num) + + return results + +def _binning(values, limits=(0,0), bin_num=10): + ''' + Bins data that falls between certain limits. + Returns a list of tuples where the first element of the tuple is the center of the bin + and the second element of the tuple are the counts. + ''' + if limits == (0, 0): + eps = 1.0/sys.maxint + min_val, max_val = min(values) - eps, max(values) + eps + else: + min_val, max_val = limits + + # get bin size + bin_size = (max_val - min_val)/float(bin_num) + bins = [0] * (bin_num) + + # will ignore these outliers for now + out_points = 0 + for value in values: + try: + if (value - min_val) < 0: + out_points += 1 + else: + index = int((value - min_val)/float(bin_size)) + bins[index] += 1 + except: + out_points += 1 + + # make it ready for an x,y plot + result = [] + center = (bin_size/2) + min_val + for i, y in enumerate(bins): + x = center + bin_size * i + result.append( (x,y) ) + + return result + + +if __name__ == '__main__': + a = range(100) + out = _binning(a, limits = (0, 0) ) + print out diff --git a/tools/pypack/altgraph/GraphUtil.py b/tools/pypack/altgraph/GraphUtil.py new file mode 100644 index 0000000..5d6b68a --- /dev/null +++ b/tools/pypack/altgraph/GraphUtil.py @@ -0,0 +1,122 @@ +''' +Utility classes and functions +''' + +from altgraph.compat import * +from altgraph import Graph +import random + +def generate_random_graph(node_num, edge_num, self_loops=False, multi_edges=False): + ''' + Generates and returns a L{Graph.Graph} instance with C{node_num} nodes + randomly connected by C{edge_num} edges. + ''' + g = Graph.Graph() + nodes = range(node_num) + + for node in nodes: + g.add_node(node) + + while 1: + head = random.choice(nodes) + tail = random.choice(nodes) + + # loop defense + if head == tail and not self_loops: + continue + + # multiple edge defense + if g.edge_by_node(head,tail) and not multi_edges: + continue + + # add the edge + g.add_edge(head, tail) + if g.number_of_edges() >= edge_num: + break + + return g + +def generate_scale_free_graph(steps, growth_num, self_loops=False, multi_edges=False): + ''' + Generates and returns a L{Graph.Graph} instance that will have C{steps*growth_num} nodes + and a scale free (powerlaw) connectivity. Starting with a fully connected graph with C{growth_num} nodes + at every step C{growth_num} nodes are added to the graph and are connected to existing nodes with + a probability proportional to the degree of these existing nodes. + ''' + graph = Graph.Graph() + + # initialize the graph + store = [] + for i in range(growth_num): + store += [ i ] * (growth_num - 1) + for j in range(i + 1, growth_num): + graph.add_edge(i,j) + + # generate + for node in range(growth_num, (steps-1) * growth_num): + graph.add_node(node) + while ( graph.out_degree(node) < growth_num ): + nbr = random.choice(store) + + # loop defense + if node == nbr and not self_loops: + continue + + # multi edge defense + if graph.edge_by_node(node, nbr) and not multi_edges: + continue + + graph.add_edge(node, nbr) + + + for nbr in graph.out_nbrs(node): + store.append(node) + store.append(nbr) + + return graph + +def filter_stack(graph, head, filters): + visited, removes, orphans = set([head]), set(), set() + stack = deque([(head, head)]) + get_data = graph.node_data + get_edges = graph.out_edges + get_tail = graph.tail + + while stack: + last_good, node = stack.pop() + data = get_data(node) + if data is not None: + for filtfunc in filters: + if not filtfunc(data): + removes.add(node) + break + else: + last_good = node + for edge in get_edges(node): + tail = get_tail(edge) + if last_good is not node: + orphans.add((last_good, tail)) + if tail not in visited: + visited.add(tail) + stack.append((last_good, tail)) + + orphans = [(last_good, tail) for (last_good, tail) in orphans if tail not in removes] + + return visited, removes, orphans + + + +if __name__ == '__main__': + + import Dot + + g = generate_scale_free_graph(steps=10, growth_num=4) + + d = Dot.Dot(g) + + d.all_node_style(width=1, shape='circle', style='filled', fillcolor='white') + + d.display() + d.save_img() + + print g diff --git a/tools/pypack/altgraph/ObjectGraph.py b/tools/pypack/altgraph/ObjectGraph.py new file mode 100644 index 0000000..aef773d --- /dev/null +++ b/tools/pypack/altgraph/ObjectGraph.py @@ -0,0 +1,173 @@ +from itertools import imap + +from altgraph.compat import * +from altgraph.Graph import Graph +from altgraph.GraphUtil import filter_stack + +class ObjectGraph(object): + """ + A graph of objects that have a "graphident" attribute. + graphident is the key for the object in the graph + """ + def __init__(self, graph=None, debug=0): + if graph is None: + graph = Graph() + self.graphident = self + self.graph = graph + self.debug = debug + self.indent = 0 + graph.add_node(self, None) + + def __repr__(self): + return '<%s>' % (type(self).__name__,) + + def flatten(self, condition=None, start=None): + """ + Iterate over the subgraph that is entirely reachable by condition + starting from the given start node or the ObjectGraph root + """ + if start is None: + start = self + start = self.getRawIdent(start) + return self.graph.iterdata(start=start, condition=condition) + + def get_edges(self, node): + start = self.getRawIdent(node) + _, _, outraw, incraw = self.graph.describe_node(start) + def iter_edges(lst, n): + seen = set() + for tpl in imap(self.graph.describe_edge, lst): + ident = tpl[n] + if ident not in seen: + yield self.findNode(ident) + seen.add(ident) + return iter_edges(outraw, 3), iter_edges(incraw, 2) + + def filterStack(self, filters): + """ + Filter the ObjectGraph in-place by removing all edges to nodes that + do not match every filter in the given filter list + + Returns a tuple containing the number of: + (nodes_visited, nodes_removed, nodes_orphaned) + """ + visited, removes, orphans = filter_stack(self.graph, self, filters) + + for last_good, tail in orphans: + self.graph.add_edge(last_good, tail, edge_data='orphan') + + for node in removes: + self.graph.hide_node(node) + + return len(visited)-1, len(removes), len(orphans) + + def removeNode(self, node): + """ + Remove the given node from the graph if it exists + """ + ident = self.getIdent(node) + if ident is not None: + self.graph.hide_node(ident) + + def removeReference(self, fromnode, tonode): + """ + Remove all edges from fromnode to tonode + """ + if fromnode is None: + fromnode = self + fromident = self.getIdent(fromnode) + toident = self.getIdent(tonode) + if fromident is not None and toident is not None: + while True: + edge = self.graph.edge_by_node(fromident, toident) + if edge is None: + break + self.graph.hide_edge(edge) + + def getIdent(self, node): + """ + Get the graph identifier for a node + """ + ident = self.getRawIdent(node) + if ident is not None: + return ident + node = self.findNode(node) + if node is None: + return None + return node.graphident + + def getRawIdent(self, node): + """ + Get the identifier for a node object + """ + if node is self: + return node + ident = getattr(node, 'graphident', None) + if ident is not None: + return ident + return ident + + def findNode(self, node): + """ + Find the node on the graph + """ + ident = self.getRawIdent(node) + if ident is None: + ident = node + try: + return self.graph.node_data(ident) + except KeyError: + return None + + def addNode(self, node): + """ + Add a node to the graph referenced by the root + """ + self.msg(4, "addNode", node) + self.graph.add_node(node.graphident, node) + + def createReference(self, fromnode, tonode, edge_data=None): + """ + Create a reference from fromnode to tonode + """ + if fromnode is None: + fromnode = self + fromident, toident = self.getIdent(fromnode), self.getIdent(tonode) + if fromident is None or toident is None: + return + self.msg(4, "createReference", fromnode, tonode, edge_data) + self.graph.add_edge(fromident, toident, edge_data=edge_data) + + def createNode(self, cls, name, *args, **kw): + """ + Add a node of type cls to the graph if it does not already exist + by the given name + """ + m = self.findNode(name) + if m is None: + m = cls(name, *args, **kw) + self.addNode(m) + return m + + def msg(self, level, s, *args): + """ + Print a debug message with the given level + """ + if s and level <= self.debug: + print "%s%s %s" % (" " * self.indent, s, ' '.join(map(repr, args))) + + def msgin(self, level, s, *args): + """ + Print a debug message and indent + """ + if level <= self.debug: + self.msg(level, s, *args) + self.indent = self.indent + 1 + + def msgout(self, level, s, *args): + """ + Dedent and print a debug message + """ + if level <= self.debug: + self.indent = self.indent - 1 + self.msg(level, s, *args) diff --git a/tools/pypack/altgraph/__init__.py b/tools/pypack/altgraph/__init__.py new file mode 100644 index 0000000..d71ea1e --- /dev/null +++ b/tools/pypack/altgraph/__init__.py @@ -0,0 +1,133 @@ +''' + +altgraph - a python graph library +================================= + +altgraph is a fork of graphlib U{http://pygraphlib.sourceforge.net} tailored +to use newer Python 2.3+ features, including additional support used by the +py2app suite (modulegraph and macholib, specifically). + +altgraph is a python based graph (network) representation and manipulation package. +It has started out as an extension to the C{graph_lib} module written by Nathan Denny +U{http://www.ece.arizona.edu/~denny/python_nest/graph_lib_1.0.1.html} but over time +it has been significantly optimized and expanded. + +The L{Graph} class is loosely modeled after the U{LEDA} (Library of Efficient Datatypes) representation. The library +includes methods for constructing graphs, BFS and DFS traversals, +topological sort, finding connected components, shortest paths as well as a number +graph statistics functions. The library can also visualize graphs +via U{graphviz}. + +The package contains the following modules: + - the L{Graph} module contains the L{Graph.Graph} class that stores the graph data + - the L{GraphAlgo} implements graph algorithms operating on graphs (L{Graph.Graph} instances) + - the L{GraphStat} contains functions for computing statistical measures on graphs + - the L{GraphUtil} contains functions for generating, reading and saving graphs + - the L{Dot} contains functions for displaying graphs via U{graphviz}. + +Download +-------- + +Download the U{python source code<../dist>}. + +Installation +------------ + +Download and unpack the archive then type:: + + python setup.py install + +This will install the library in the default location. For instructions on +how to customize the install procedure read the output of:: + + python setup.py --help install + +To verify the installation procedure switch to the test directory and run the +test_graphib.py file that is located there:: + + python test_altgraph.py + +Example usage +------------- + +Lets assume that we want to analyze the graph below (links to the full picture) GRAPH_IMG. +Our script then might look the following way:: + + from altgraph import Graph, GraphAlgo, Dot + + # these are the edges + edges = [ (1,2), (2,4), (1,3), (2,4), (3,4), (4,5), (6,5), + (6,14), (14,15), (6, 15), (5,7), (7, 8), (7,13), (12,8), + (8,13), (11,12), (11,9), (13,11), (9,13), (13,10) ] + + # creates the graph + graph = Graph.Graph() + for head, tail in edges: + graph.add_edge(head, tail) + + # do a forward bfs from 1 at most to 20 + print graph.forw_bfs(1) + +This will print the nodes in some breadth first order:: + + [1, 2, 3, 4, 5, 7, 8, 13, 11, 10, 12, 9] + +If we wanted to get the hop-distance from node 1 to node 8 +we coud write:: + + print graph.get_hops(1, 8) + +This will print the following:: + + [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3), (7, 4), (8, 5)] + +Node 1 is at 0 hops since it is the starting node, nodes 2,3 are 1 hop away ... +node 8 is 5 hops away. To find the shortest distance between two nodes you +can use:: + + print GraphAlgo.shortest_path(graph, 1, 12) + +It will print the nodes on one (if there are more) the shortest paths:: + + [1, 2, 4, 5, 7, 13, 11, 12] + +To display the graph we can use the GraphViz backend:: + + dot = Dot.Dot(graph) + + # display the graph on the monitor + dot.display() + + # save it in an image file + dot.save_img(file_name='graph', file_type='gif') + + +@author: U{Istvan Albert} + +@license: MIT License + +Copyright (c) 2004 Istvan Albert unless otherwise noted. + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do +so. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +@requires: Python 2.3 or higher + +@newfield contributor: Contributors: +@contributor: U{Reka Albert } + +''' + +__version__ = '0.6.7' + +class GraphError(ValueError): + pass diff --git a/tools/pypack/altgraph/compat.py b/tools/pypack/altgraph/compat.py new file mode 100644 index 0000000..18c9907 --- /dev/null +++ b/tools/pypack/altgraph/compat.py @@ -0,0 +1,183 @@ +""" +Python 2.4-like compatibility library for Python 2.3 +""" +from itertools import * + +# +# builtins from 2.4 +# + +try: + set, frozenset +except NameError: + from sets import Set as set, ImmutableSet as frozenset + +try: + sorted +except NameError: + def sorted(iterable, cmp=None, key=None, reverse=False): + if key is not None: + a, b = tee(iterable) + iterable = izip(imap(key, iterable), iterable) + if cmp is not None: + iterable = list(iterable) + iterable.sort(cmp) + else: + iterable = isorted(iterable) + if key is not None: + iterable = [v for (k,v) in iterable] + if type(iterable) is not list: + iterable = list(iterable) + if reverse: + iterable.reverse() + return iterable + +try: + reversed +except NameError: + def reversed(iterable): + lst = list(iterable) + pop = lst.pop + while lst: + yield pop() + + +# +# itertools functions from 2.4 +# +try: + tee +except NameError: + def tee(iterable, n=2): + def gen(next, data={}, cnt=[0]): + for i in count(): + if i == cnt[0]: + item = data[i] = next() + cnt[0] += 1 + else: + item = data.pop(i) + yield item + return tuple(imap(gen, repeat(iter(iterable), n))) + +try: + groupby +except NameError: + class groupby(object): + def __init__(self, iterable, key=None): + if key is None: + key = lambda x: x + self.keyfunc = key + self.it = iter(iterable) + self.tgtkey = self.currkey = self.currvalue = xrange(0) + def __iter__(self): + return self + def next(self): + while self.currkey == self.tgtkey: + self.currvalue = self.it.next() # Exit on StopIteration + self.currkey = self.keyfunc(self.currvalue) + self.tgtkey = self.currkey + return (self.currkey, self._grouper(self.tgtkey)) + def _grouper(self, tgtkey): + while self.currkey == tgtkey: + yield self.currvalue + self.currvalue = self.it.next() # Exit on StopIteration + self.currkey = self.keyfunc(self.currvalue) + + +# +# operators from 2.4 +# +try: + from operator import attrgetter, itemgetter +except ImportError: + def attrgetter(attr): + def attrgetter(obj): + return getattr(obj, attr) + return attrgetter + + def itemgetter(item): + def itemgetter(obj): + return obj[item] + return itemgetter + + +# +# deque from 2.4's collections +# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/259179/ +# +try: + from collections import deque +except ImportError: + class deque(object): + + def __init__(self, iterable=()): + self.data = dict(enumerate(iterable)) + self.left = 0 + self.right = len(self.data) + + def append(self, x): + self.data[self.right] = x + self.right += 1 + + def appendleft(self, x): + self.left -= 1 + self.data[self.left] = x + + def pop(self): + if self.left == self.right: + raise IndexError('cannot pop from empty deque') + self.right -= 1 + return self.data[self.right] + + def popleft(self): + if self.left == self.right: + raise IndexError('cannot pop from empty deque') + x = self.data[self.left] + self.left += 1 + return x + + def __len__(self): + return self.right - self.left + + def __iter__(self): + return imap(self.data.__getitem__, xrange(self.left, self.right)) + + def __repr__(self): + return 'deque(%r)' % (list(self),) + + def __getstate__(self): + return (tuple(self),) + + def __setstate__(self, s): + self.__init__(s[0]) + + def __hash__(self): + raise TypeError + + def __copy__(self): + return self.__class__(self) + + def __deepcopy__(self, memo={}): + from copy import deepcopy + result = self.__class__() + memo[id(self)] = result + result.__init__(deepcopy(tuple(self), memo)) + return result + +# +# new functions +# +import heapq as _heapq +def isorted(iterable): + lst = list(iterable) + _heapq.heapify(lst) + pop = _heapq.heappop + while lst: + yield pop(lst) + +def ireversed(iterable): + if isinstance(iterable, (list, tuple)): + for i in xrange(len(iterable)-1, -1, -1): + yield iterable[i] + for obj in reversed(iterable): + yield obj diff --git a/tools/pypack/libpypack/__init__.py b/tools/pypack/libpypack/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/tools/pypack/libpypack/__init__.py @@ -0,0 +1 @@ + diff --git a/tools/pypack/libpypack/application.py b/tools/pypack/libpypack/application.py new file mode 100644 index 0000000..bff0e78 --- /dev/null +++ b/tools/pypack/libpypack/application.py @@ -0,0 +1,217 @@ +#!/usr/bin/env python +# +# Copyright (c) 2007, 2008 Agostino Russo +# +# Written by Agostino Russo +# +# pack.py is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# pack.py is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +import sys +import os +import shutil +from modulegraph.find_modules import find_modules +from modulegraph.modulegraph import SourceModule, Package, Script, Extension +from os.path import abspath, join, basename, dirname, exists +import py_compile +from optparse import OptionParser +import logging +from version import * + +log = logging.getLogger(__name__) + +class Application(object): + def __init__(self, root_dir): + self.root_dir = os.path.abspath(root_dir) + + def run(self): + self.localize() + self.parse_commandline_arguments() + self.set_logger() + self.create_dirs() + self.add_dependencies(self.main_script) + self.add_extras() + + def localize(self): + try: + import gettext + gettext.install(APPLICATION_NAME) + except ImportError: + import __builtin__ + def dummytrans (text): + """A _ function for systems without gettext. Effectively a NOOP""" + return text + __builtin__.__dict__['_'] = dummytrans + + def print_readme(self): + readme = ajoin(self.root_dir, 'README') + readme = open(readme, 'r') + content = readme.read() + readme.close() + print content + + def parse_commandline_arguments(self): + usage = "%prog [options] main_script [extra extra extra]" + version = version="%s-rev%s" % (APPLICATION_VERSION, APPLICATION_REVISION) + description='Pypack packages a script into a directory containing all needed depencies suitable for "folder deployment". Run `python pypack --readme` for more information.' + parser = OptionParser(usage=usage, description = description, version = version) + parser.add_option("--readme", action="store_true", dest="readme", help="show more information") + parser.add_option("--verbose", action="store_true", dest="verbose", help="run in verbose mode, all messages are displayed") + parser.add_option("--debug", action="store_true", dest="debug", help="print debug messages to stdout") + parser.add_option("--print", action="store_true", dest="print_dependencies", help="print dependencies and exit") + parser.add_option("--outputdir", dest="out_dir", default="./build", help="directory where the files will be built, if non existent, it will be created") + parser.add_option("--bytecompile", action="store_true", dest="bytecompile", help="bytecompile the python files") + options, args = parser.parse_args() + self.options, args = parser.parse_args() + if options.readme: + print self.print_readme() + sys.exit(0) + if not len(args): + parser.print_help() + sys.exit(1) + self.main_script = args[0] + self.extras = args[1:] + if self.options.debug: + self.options.verbose = True + if self.options.print_dependencies: + self.print_dependencies() + sys.exit(0) + + def create_dirs(self): + self.out_dir = self.options.out_dir + self.out_dir = ajoin(self.out_dir) + if os.path.exists(self.out_dir): + print 'ERROR: the build directory "%s" already exists.\nRemove that before running %s again.' % (self.out_dir, APPLICATION_NAME) + sys.exit(1) + self.lib_dir = ajoin(self.out_dir, 'lib') + os.makedirs(self.lib_dir) + + def set_logger(self): + ''' + Adjust the application root logger settings + ''' + root_logger = logging.getLogger() + if root_logger.handlers: + handler = root_logger.handlers[0] + else: + handler = logging.StreamHandler() + root_logger.addHandler(handler) + formatter = logging.Formatter('%(message)s', datefmt='%m-%d %H:%M') + handler.setFormatter(formatter) + root_logger.setLevel(logging.DEBUG) + if self.options.verbose: + handler.setLevel(logging.DEBUG) + else: + handler.setLevel(logging.ERROR) + + def print_dependencies(self): + scripts = [self.main_script] + scripts += [f for f in self.extras if f[:-3] == '.py'] + modules = [] + for script in scripts: + for m in get_modules(script): + modules.append(m) + for m in modules: + print m + + def add_dependencies(self, script): + ''' + Adds all dependencies to lib_dir + ''' + modules = get_modules(script) + lib_dir = self.lib_dir + for module in modules: + if not module.filename: + continue + if isinstance(module, SourceModule): + target = module2path(lib_dir, module.identifier) + target += '.py' + self.compile(module.filename, target) + elif isinstance(module, Package): + target = module2path(lib_dir, module.identifier) + target = ajoin(target, '__init__.py') + self.compile(module.filename, target) + elif isinstance(module, Script): + log.debug("Script %s", script) + if module.identifier[0] != "_": + script_name = basename(script) + target = ajoin(self.out_dir, script_name) + self.compile(module.filename, target) + elif isinstance(module, Extension): + target = module2path(lib_dir, module.identifier) + target = dirname(target) + makedirs(target) + log.debug("copying %s -> %s" % (module.filename, target)) + shutil.copy(module.filename, target) + else: + log.error("Unkown module %s", module) + + def compile(self, source, target): + log.debug("copying %s -> %s", source, target) + makedirs(dirname(target)) + shutil.copy(source, target) + if self.options.bytecompile: + log.debug("compiling %s", target) + dfile = target + if target.startswith(self.out_dir): + dfile = target[len(self.out_dir):] + py_compile.compile(target, dfile=dfile, doraise=True) + os.unlink(target) + + def add_extras(self): + ''' + Add extra files, modules, pacakges or directories + ''' + for extra in self.extras: + if os.path.isfile(extra): + if extra.endswith('.py'): + self.add_dependencies(extra) + target = os.path.basename(extra) + target = ajoin(self.lib_dir, target) + self.compile(extra, target) + else: + target = os.path.basename(extra) + target = ajoin(self.out_dir, target) + log.debug("copying %s -> %s", extra, target) + shutil.copy(extra, target) + elif os.path.isdir(extra): + target = os.path.basename(extra) + target = ajoin(self.out_dir, target) + log.debug("copying %s -> %s", extra, target) + shutil.copytree(extra, target, symlinks=False) + else: + print 'ERROR: The extra argument "%s" cannot be found' % extra + sys.exit(1) + + +def ajoin(*args): + return os.path.abspath(os.path.join(*args)) + +def makedirs(target_path): + try: + os.makedirs(target_path) + except: + pass + +def module2path(root_dir, module_name): + path = module_name.split('.') + path = ajoin(root_dir, *path) + return path + +def get_modules(script_path): + sys.path.insert(0, os.path.dirname(script_path)) + mf = find_modules((script_path,)) + del sys.path[0] + modules = mf.flatten() + return modules diff --git a/tools/pypack/libpypack/version.py b/tools/pypack/libpypack/version.py new file mode 100644 index 0000000..0012446 --- /dev/null +++ b/tools/pypack/libpypack/version.py @@ -0,0 +1,4 @@ +APPLICATION_NAME = 'pypack' +APPLICATION_VERSION = '0.0.0' +APPLICATION_REVISION = '0' + diff --git a/tools/pypack/modulegraph/__init__.py b/tools/pypack/modulegraph/__init__.py new file mode 100644 index 0000000..f0788a8 --- /dev/null +++ b/tools/pypack/modulegraph/__init__.py @@ -0,0 +1 @@ +__version__ = '0.7.1' diff --git a/tools/pypack/modulegraph/find_modules.py b/tools/pypack/modulegraph/find_modules.py new file mode 100644 index 0000000..a520cfb --- /dev/null +++ b/tools/pypack/modulegraph/find_modules.py @@ -0,0 +1,280 @@ +""" +High-level module dependency finding interface + +See find_modules(...) + +Originally (loosely) based on code in py2exe's build_exe.py by Thomas Heller. +""" + +import sys +import os +import imp +import warnings +try: + set +except NameError: + from sets import Set as set + +#from modulegraph import modulegraph +#from modulegraph.modulegraph import Alias +#from modulegraph.util import imp_find_module +import modulegraph +from modulegraph import Alias +from util import imp_find_module, imp_walk + +__all__ = [ + 'find_modules', 'parse_mf_results' +] + +def get_implies(): + result = { + # imports done from builtin modules in C code (untrackable by modulegraph) + "time": ["_strptime"], + "datetime": ["time"], + "MacOS": ["macresource"], + "cPickle": ["copy_reg", "cStringIO"], + "parser": ["copy_reg"], + "codecs": ["encodings"], + "cStringIO": ["copy_reg"], + "_sre": ["copy", "string", "sre"], + "zipimport": ["zlib"], + # mactoolboxglue can do a bunch more of these + # that are far harder to predict, these should be tracked + # manually for now. + + # this isn't C, but it uses __import__ + "anydbm": ["dbhash", "gdbm", "dbm", "dumbdbm", "whichdb"], + # package aliases + "wxPython.wx": Alias('wx'), + } + + if sys.version_info[:2] >= (2, 5): + result["_elementtree"] = ["pyexpat"] + + import xml.etree + files = os.listdir(xml.etree.__path__[0]) + for fn in files: + if fn.endswith('.py') and fn != "__init__.py": + result["_elementtree"].append("xml.etree.%s"%(fn[:-3],)) + + return result + +def parse_mf_results(mf): + #for name, imports in get_hidden_imports().items(): + # if name in mf.modules.keys(): + # for mod in imports: + # mf.import_hook(mod) + + # Retrieve modules from modulegraph + py_files = [] + extensions = [] + + for item in mf.flatten(): + # There may be __main__ modules (from mf.run_script), but + # we don't need it in the zipfile we build. + if item.identifier == "__main__": + continue + src = item.filename + if src: + suffix = os.path.splitext(src)[1] + + if suffix in PY_SUFFIXES: + py_files.append(item) + elif suffix in C_SUFFIXES: + extensions.append(item) + else: + raise TypeError("Don't know how to handle '%s'" % repr(src)) + + # sort on the file names, the output is nicer to read + py_files.sort(lambda a,b:cmp(a.filename, b.filename)) + extensions.sort(lambda a,b:cmp(a.filename, b.filename)) + return py_files, extensions + + +def plat_prepare(includes, packages, excludes): + # used by Python itself + includes.update(["warnings", "unicodedata", "weakref"]) + + if not sys.platform.startswith('irix'): + excludes.update([ + 'AL', + 'sgi', + ]) + + if not sys.platform in ('mac', 'darwin'): + # XXX - this doesn't look nearly complete + excludes.update([ + 'Audio_mac', + 'Carbon.File', + 'Carbon.Folder', + 'Carbon.Folders', + 'EasyDialogs', + 'MacOS', + 'macfs', + 'macostools', + 'macpath', + ]) + + if not sys.platform == 'mac': + excludes.update([ + 'mkcwproject', + ]) + + if not sys.platform == 'win32': + # only win32 + excludes.update([ + 'ntpath', + 'nturl2path', + 'win32api', + 'win32con', + 'win32event', + 'win32evtlogutil', + 'win32evtlog', + 'win32file', + 'win32gui', + 'win32pipe', + 'win32process', + 'win32security', + 'pywintypes', + 'winsound', + 'win32', + '_winreg', + ]) + + if not sys.platform == 'riscos': + excludes.update([ + 'riscosenviron', + 'riscospath', + 'rourl2path', + ]) + + if not sys.platform == 'dos' or sys.platform.startswith('ms-dos'): + excludes.update([ + 'dos', + ]) + + if not sys.platform == 'os2emx': + excludes.update([ + 'os2emxpath' + ]) + + excludes.update(set(['posix', 'nt', 'os2', 'mac', 'ce', 'riscos']) - set(sys.builtin_module_names)) + + try: + imp_find_module('poll') + except ImportError: + excludes.update([ + 'poll', + ]) + +def find_needed_modules(mf=None, scripts=(), includes=(), packages=(), warn=warnings.warn): + if mf is None: + mf = modulegraph.ModuleGraph() + # feed Modulefinder with everything, and return it. + + for path in scripts: + mf.run_script(path) + + for mod in includes: + if mod[-2:] == '.*': + mf.import_hook(mod[:-2], None, ['*']) + else: + mf.import_hook(mod) + + for f in packages: + # If modulegraph has seen a reference to the package, then + # we prefer to believe that (imp_find_module doesn't seem to locate + # sub-packages) + m = mf.findNode(f) + if m is not None: + path = m.packagepath[0] + else: + # Find path of package + # TODO: use imp_find_module_or_importer + try: + path = imp_find_module(f)[1] + except ImportError: + warn("No package named %s" % f) + continue + + # walk the path to find subdirs containing __init__.py files + # scan the results (directory of __init__.py files) + # first trim the path (of the head package), + # then convert directory name in package name, + # finally push into modulegraph. + for (dirpath, dirnames, filenames) in os.walk(path): + if '__init__.py' in filenames and dirpath.startswith(path): + package = f + '.' + path[len(path)+1:].replace(os.sep, '.') + mf.import_hook(package, None, ["*"]) + + return mf + +# +# resource constants +# +PY_SUFFIXES = ['.py', '.pyw', '.pyo', '.pyc'] +C_SUFFIXES = [ + _triple[0] for _triple in imp.get_suffixes() + if _triple[2] == imp.C_EXTENSION +] + +# +# side-effects +# + +def _replacePackages(): + REPLACEPACKAGES = { + '_xmlplus': 'xml', + } + for k,v in REPLACEPACKAGES.iteritems(): + modulegraph.ReplacePackage(k, v) + +_replacePackages() + +def find_modules(scripts=(), includes=(), packages=(), excludes=(), path=None, debug=0): + """ + High-level interface, takes iterables for: + scripts, includes, packages, excludes + + And returns a ModuleGraph instance, python_files, and extensions + + python_files is a list of pure python dependencies as modulegraph.Module objects, + extensions is a list of platform-specific C extension dependencies as modulegraph.Module objects + """ + scripts = set(scripts) + includes = set(includes) + packages = set(packages) + excludes = set(excludes) + plat_prepare(includes, packages, excludes) + mf = modulegraph.ModuleGraph( + path=path, + excludes=(excludes - includes), + implies=get_implies(), + debug=debug, + ) + find_needed_modules(mf, scripts, includes, packages) + return mf + +def test(): + if '-g' in sys.argv[1:]: + sys.argv.remove('-g') + dograph = True + else: + dograph = False + if '-x' in sys.argv[1:]: + sys.argv.remove('-x') + doxref = True + else: + doxref= False + + scripts = sys.argv[1:] or [__file__] + mf = find_modules(scripts=scripts) + if doxref: + mf.create_xref() + elif dograph: + mf.graphreport() + else: + mf.report() + +if __name__ == '__main__': + test() diff --git a/tools/pypack/modulegraph/modulegraph.py b/tools/pypack/modulegraph/modulegraph.py new file mode 100644 index 0000000..a0529f6 --- /dev/null +++ b/tools/pypack/modulegraph/modulegraph.py @@ -0,0 +1,969 @@ +""" +Find modules used by a script, using bytecode analysis. + +Based on the stdlib modulefinder by Thomas Heller and Just van Rossum, +but uses a graph data structure and 2.3 features +""" + +#from pkg_resources import require +#require("altgraph") + +import pkg_resources +import StringIO +import dis +import imp +import marshal +import os +import sys +import new +import struct +import urllib +import zipfile +import zipimport + +from altgraph.Dot import Dot +from altgraph.ObjectGraph import ObjectGraph +from altgraph.GraphUtil import filter_stack +from altgraph.compat import * + +import util + +READ_MODE = "U" # universal line endings + +# Modulegraph does a good job at simulating Python's, but it can not +# handle packagepath modifications packages make at runtime. Therefore there +# is a mechanism whereby you can register extra paths in this map for a +# package, and it will be honored. + +# Note this is a mapping is lists of paths. +packagePathMap = {} + + +def namespace_package_path(fqname, pathname, syspath=None): + path = [] + + if syspath is None: + working_set = pkg_resources.working_set + else: + working_set = pkg_resources.WorkingSet(syspath) + + for dist in working_set: + assert dist in working_set + + if dist.has_metadata('namespace_packages.txt'): + namespaces = dist.get_metadata( + 'namespace_packages.txt').splitlines() + if fqname in namespaces: + path.append(os.path.join(dist.location, *fqname.split('.'))) + + if not path: + return [pathname] + + else: + return path + +def os_listdir(path): + """ + os.listdir with support for zipfiles + """ + try: + return os.listdir(path) + except os.error: + info = sys.exc_info() + + rest = '' + while not os.path.exists(path): + path, r = os.path.split(path) + rest = os.path.join(r, rest) + + if not os.path.isfile(path): + # Directory really doesn't exist + raise info[0], info[1], info[2] + + try: + zf = zipfile.ZipFile(path) + except zipfile.BadZipfile: + raise info[0], info[1], info[2] + + if rest: + rest = rest + '/' + result = set() + for nm in zf.namelist(): + if nm.startswith(rest): + result.add(nm[len(rest):].split('/')[0]) + return list(result) + + +def _code_to_file(co): + """ Convert code object to a .pyc pseudo-file """ + return StringIO.StringIO( + imp.get_magic() + chr(0)*4 + marshal.dumps(co)) + +def find_module(name, path=None): + """ + A version of imp.find_module that works with zipped packages. + """ + if path is None: + path = sys.path + + for entry in path: + importer = pkg_resources.get_importer(entry) + loader = importer.find_module(name) + if loader is None: continue + + if isinstance(importer, pkg_resources.ImpWrapper): + filename = loader.filename + if filename.endswith('.pyc') or filename.endswith('.pyo'): + fp = open(filename, 'rb') + description = ('.pyc', 'rb', imp.PY_COMPILED) + return (fp, filename, description) + + elif filename.endswith('.py'): + fp = file(filename, READ_MODE) + description = ('.py', READ_MODE, imp.PY_SOURCE) + return (fp, filename, description) + + else: + for _sfx, _mode, _type in imp.get_suffixes(): + if _type == imp.C_EXTENSION and filename.endswith(_sfx): + description = (_sfx, 'rb', imp.C_EXTENSION) + break + else: + description = ('', '', imp.PKG_DIRECTORY) + + return (None, filename, description) + + elif hasattr(loader, 'get_code'): + co = loader.get_code(name) + fp = _code_to_file(co) + + pathname = os.path.join(entry, *name.split('.')) + + if isinstance(loader, zipimport.zipimporter): + # Check if this happens to be a wrapper module introduced by setuptools, + # if it is we return the actual extension. + zn = '/'.join(name.split('.')) + for _sfx, _mode, _type in imp.get_suffixes(): + if _type == imp.C_EXTENSION: + p = loader.prefix + zn + _sfx + if p in loader._files: + description = (_sfx, 'rb', imp.C_EXTENSION) + return (None, pathname + _sfx, description) + + if hasattr(loader, 'is_package') and loader.is_package(name): + return (None, pathname, ('', '', imp.PKG_DIRECTORY)) + + pathname = pathname + '.pyc' + description = ('.pyc', 'rb', imp.PY_COMPILED) + return (fp, pathname, description) + + raise ImportError(name) + +def moduleInfoForPath(path, suffixes=imp.get_suffixes()): + for (ext, readmode, typ) in imp.get_suffixes(): + if path.endswith(ext): + return os.path.basename(path)[:-len(ext)], readmode, typ + return None + +# A Public interface +def AddPackagePath(packagename, path): + paths = packagePathMap.get(packagename, []) + paths.append(path) + packagePathMap[packagename] = paths + +replacePackageMap = {} + +# This ReplacePackage mechanism allows modulefinder to work around the +# way the _xmlplus package injects itself under the name "xml" into +# sys.modules at runtime by calling ReplacePackage("_xmlplus", "xml") +# before running ModuleGraph. + +def ReplacePackage(oldname, newname): + replacePackageMap[oldname] = newname + +class Node(object): + def __init__(self, identifier): + self.graphident = identifier + self.identifier = identifier + self.namespace = {} + self.filename = None + self.packagepath = None + self.code = None + # The set of global names that are assigned to in the module. + # This includes those names imported through starimports of + # Python modules. + self.globalnames = set() + # The set of starimports this module did that could not be + # resolved, ie. a starimport from a non-Python module. + self.starimports = set() + + def __contains__(self, name): + return name in self.namespace + + def __getitem__(self, name): + return self.namespace[name] + + def __setitem__(self, name, value): + self.namespace[name] = value + + def get(self, *args): + return self.namespace.get(*args) + + def __cmp__(self, other): + return cmp(self.graphident, other.graphident) + + def __hash__(self): + return hash(self.graphident) + + def infoTuple(self): + return (self.identifier,) + + def __repr__(self): + return '%s%r' % (type(self).__name__, self.infoTuple()) + +class Alias(str): + pass + +class AliasNode(Node): + def __init__(self, name, node): + super(AliasNode, self).__init__(name) + for k in 'identifier', 'packagepath', 'namespace', 'globalnames', 'startimports': + setattr(self, k, getattr(node, k, None)) + + def infoTuple(self): + return (self.graphident, self.identifier) + +class BadModule(Node): + pass + +class ExcludedModule(BadModule): + pass + +class MissingModule(BadModule): + pass + +class Script(Node): + def __init__(self, filename): + super(Script, self).__init__(filename) + self.filename = filename + + def infoTuple(self): + return (self.filename,) + +class BaseModule(Node): + def __init__(self, name, filename=None, path=None): + super(BaseModule, self).__init__(name) + self.filename = filename + self.packagepath = path + + def infoTuple(self): + return tuple(filter(None, (self.identifier, self.filename, self.packagepath))) + +class BuiltinModule(BaseModule): + pass + +class SourceModule(BaseModule): + pass + +class CompiledModule(BaseModule): + pass + +class Package(BaseModule): + pass + +class FlatPackage(BaseModule): + pass + +class Extension(BaseModule): + pass + +class ArchiveModule(BaseModule): + pass + +class ModuleGraph(ObjectGraph): + def __init__(self, path=None, excludes=(), replace_paths=(), implies=(), graph=None, debug=0): + super(ModuleGraph, self).__init__(graph=graph, debug=debug) + if path is None: + path = sys.path + self.path = path + self.lazynodes = {} + # excludes is stronger than implies + self.lazynodes.update(dict(implies)) + for m in excludes: + self.lazynodes[m] = None + self.replace_paths = replace_paths + + def implyNodeReference(self, node, other): + """ + Imply that one node depends on another. + other may be a module name or another node. + + For use by extension modules and tricky import code + """ + if not isinstance(other, Node): + if not isinstance(other, tuple): + other = (other, node) + others = self.import_hook(*other) + for other in others: + self.createReference(node, other) + elif isinstance(other, AliasNode): + self.addNode(other) + other.connectTo(node) + else: + self.createReference(node, other) + + + def createReference(self, fromnode, tonode, edge_data='direct'): + """ + Create a reference from fromnode to tonode + """ + return super(ModuleGraph, self).createReference(fromnode, tonode, edge_data=edge_data) + + def findNode(self, name): + """ + Find a node by identifier. If a node by that identifier exists, + it will be returned. + + If a lazy node exists by that identifier with no dependencies (excluded), + it will be instantiated and returned. + + If a lazy node exists by that identifier with dependencies, it and its + dependencies will be instantiated and scanned for additional dependencies. + """ + data = super(ModuleGraph, self).findNode(name) + if data is not None: + return data + if name in self.lazynodes: + deps = self.lazynodes.pop(name) + if deps is None: + # excluded module + m = self.createNode(ExcludedModule, name) + elif isinstance(deps, Alias): + other = self._safe_import_hook(deps, None, None).pop() + m = self.createNode(AliasNode, name, other) + self.implyNodeReference(m, other) + else: + m = self._safe_import_hook(name, None, None).pop() + for dep in deps: + self.implyNodeReference(m, dep) + return m + return None + + def run_script(self, pathname, caller=None): + """ + Create a node by path (not module name). It is expected to be a Python + source file, and will be scanned for dependencies. + """ + self.msg(2, "run_script", pathname) + pathname = os.path.realpath(pathname) + m = self.findNode(pathname) + if m is not None: + return m + + co = compile(file(pathname, READ_MODE).read()+'\n', pathname, 'exec') + if self.replace_paths: + co = self.replace_paths_in_code(co) + m = self.createNode(Script, pathname) + m.code = co + self.createReference(caller, m) + self.scan_code(co, m) + return m + + def import_hook(self, name, caller=None, fromlist=None): + """ + Import a module + + Return the set of modules that are imported + """ + self.msg(3, "import_hook", name, caller, fromlist) + parent = self.determine_parent(caller) + q, tail = self.find_head_package(parent, name) + m = self.load_tail(q, tail) + modules = set([m]) + if fromlist and m.packagepath: + modules.update(self.ensure_fromlist(m, fromlist)) + for m in modules: + self.createReference(caller, m) + return modules + + def determine_parent(self, caller): + """ + Determine the package containing a node + """ + self.msgin(4, "determine_parent", caller) + parent = None + if caller: + pname = caller.identifier + if caller.packagepath: + parent = self.findNode(pname) + elif '.' in pname: + pname = pname[:pname.rfind('.')] + parent = self.findNode(pname) + self.msgout(4, "determine_parent ->", parent) + return parent + + def find_head_package(self, parent, name): + """ + Given a calling parent package and an import name determine the containing + package for the name + """ + self.msgin(4, "find_head_package", parent, name) + if '.' in name: + head, tail = name.split('.', 1) + else: + head, tail = name, '' + if parent: + qname = parent.identifier + '.' + head + else: + qname = head + q = self.import_module(head, qname, parent) + if q: + self.msgout(4, "find_head_package ->", (q, tail)) + return q, tail + if parent: + qname = head + parent = None + q = self.import_module(head, qname, parent) + if q: + self.msgout(4, "find_head_package ->", (q, tail)) + return q, tail + self.msgout(4, "raise ImportError: No module named", qname) + raise ImportError, "No module named " + qname + + def load_tail(self, q, tail): + self.msgin(4, "load_tail", q, tail) + m = q + while tail: + i = tail.find('.') + if i < 0: i = len(tail) + head, tail = tail[:i], tail[i+1:] + mname = "%s.%s" % (m.identifier, head) + m = self.import_module(head, mname, m) + if not m: + self.msgout(4, "raise ImportError: No module named", mname) + raise ImportError, "No module named " + mname + self.msgout(4, "load_tail ->", m) + return m + + def ensure_fromlist(self, m, fromlist): + fromlist = set(fromlist) + self.msg(4, "ensure_fromlist", m, fromlist) + if '*' in fromlist: + fromlist.update(self.find_all_submodules(m)) + fromlist.remove('*') + for sub in fromlist: + submod = m.get(sub) + if submod is None: + fullname = m.identifier + '.' + sub + submod = self.import_module(sub, fullname, m) + if submod is None: + raise ImportError, "No module named " + fullname + yield submod + + def find_all_submodules(self, m): + if not m.packagepath: + return + # 'suffixes' used to be a list hardcoded to [".py", ".pyc", ".pyo"]. + # But we must also collect Python extension modules - although + # we cannot separate normal dlls from Python extensions. + suffixes = [triple[0] for triple in imp.get_suffixes()] + for path in m.packagepath: + try: + names = os_listdir(path) + except os.error: + self.msg(2, "can't list directory", path) + continue + for (path, mode, typ) in ifilter(None, imap(moduleInfoForPath, names)): + if path != '__init__': + yield path + + def import_module(self, partname, fqname, parent): + self.msgin(3, "import_module", partname, fqname, parent) + m = self.findNode(fqname) + if m is not None: + self.msgout(3, "import_module ->", m) + if parent: + self.createReference(m, parent) + return m + if parent and parent.packagepath is None: + self.msgout(3, "import_module -> None") + return None + try: + fp, pathname, stuff = self.find_module(partname, + parent and parent.packagepath, parent) + except ImportError: + self.msgout(3, "import_module ->", None) + return None + + m = self.load_module(fqname, fp, pathname, stuff) + if parent: + self.createReference(m, parent) + parent[partname] = m + self.msgout(3, "import_module ->", m) + return m + + def load_module(self, fqname, fp, pathname, (suffix, mode, typ)): + self.msgin(2, "load_module", fqname, fp and "fp", pathname) + if typ == imp.PKG_DIRECTORY: + m = self.load_package(fqname, pathname) + self.msgout(2, "load_module ->", m) + return m + if typ == imp.PY_SOURCE: + co = compile(fp.read() + '\n', pathname, 'exec') + cls = SourceModule + elif typ == imp.PY_COMPILED: + if fp.read(4) != imp.get_magic(): + self.msgout(2, "raise ImportError: Bad magic number", pathname) + raise ImportError, "Bad magic number in %s" % pathname + fp.read(4) + co = marshal.loads(fp.read()) + cls = CompiledModule + elif typ == imp.C_BUILTIN: + cls = BuiltinModule + co = None + else: + cls = Extension + co = None + m = self.createNode(cls, fqname) + m.filename = pathname + if co: + if self.replace_paths: + co = self.replace_paths_in_code(co) + m.code = co + self.scan_code(co, m) + self.msgout(2, "load_module ->", m) + return m + + def _safe_import_hook(self, name, caller, fromlist): + # wrapper for self.import_hook() that won't raise ImportError + try: + mods = self.import_hook(name, caller) + except ImportError, msg: + self.msg(2, "ImportError:", str(msg)) + m = self.createNode(MissingModule, name) + self.createReference(caller, m) + else: + assert len(mods) == 1 + m = list(mods)[0] + + subs = set([m]) + for sub in (fromlist or ()): + # If this name is in the module namespace already, + # then add the entry to the list of substitutions + if sub in m: + sm = m[sub] + if sm is not None: + subs.add(sm) + continue + + # See if we can load it + fullname = name + '.' + sub + sm = self.findNode(fullname) + if sm is None: + try: + sm = self.import_hook(name, caller, [sub]) + except ImportError, msg: + self.msg(2, "ImportError:", str(msg)) + sm = self.createNode(MissingModule, fullname) + else: + sm = self.findNode(fullname) + + m[sub] = sm + if sm is not None: + self.createReference(sm, m) + subs.add(sm) + return subs + + def scan_code(self, co, m, + HAVE_ARGUMENT=chr(dis.HAVE_ARGUMENT), + LOAD_CONST=chr(dis.opname.index('LOAD_CONST')), + IMPORT_NAME=chr(dis.opname.index('IMPORT_NAME')), + STORE_NAME=chr(dis.opname.index('STORE_NAME')), + STORE_GLOBAL=chr(dis.opname.index('STORE_GLOBAL')), + unpack=struct.unpack): + code = co.co_code + constants = co.co_consts + n = len(code) + i = 0 + fromlist = None + while i < n: + c = code[i] + i += 1 + if c >= HAVE_ARGUMENT: + i = i+2 + if c == LOAD_CONST: + # An IMPORT_NAME is always preceded by a LOAD_CONST, it's + # a tuple of "from" names, or None for a regular import. + # The tuple may contain "*" for "from import *" + oparg = unpack('", m) + return m + + def find_module(self, name, path, parent=None): + if parent is not None: + # assert path is not None + fullname = parent.identifier + '.' + name + else: + fullname = name + + node = self.findNode(fullname) + if node is not None: + self.msgout(3, "find_module -> already included?", node) + raise ImportError, name + + if path is None: + if name in sys.builtin_module_names: + return (None, None, ("", "", imp.C_BUILTIN)) + + path = self.path + + fp, buf, stuff = find_module(name, path) + if buf: + buf = os.path.realpath(buf) + return (fp, buf, stuff) + + def create_xref(self, out=None): + if out is None: + out = sys.stdout + scripts = [] + mods = [] + for mod in self.flatten(): + name = os.path.basename(mod.identifier) + if isinstance(mod, Script): + scripts.append((name, mod)) + else: + mods.append((name, mod)) + scripts.sort() + mods.sort() + scriptnames = [name for name, m in scripts] + scripts.extend(mods) + mods = scripts + + title = "modulegraph cross reference for " + ', '.join(scriptnames) + print >>out, """%s +

%s

""" % (title, title) + + def sorted_namelist(mods): + lst = [os.path.basename(mod.identifier) for mod in mods if mod] + lst.sort() + return lst + for name, m in mods: + if isinstance(m, BuiltinModule): + print >>out, """%s + (builtin module)
""" % (name, name) + elif isinstance(m, Extension): + print >>out, """
%s %s +
""" % (name, name, m.filename) + else: + url = urllib.pathname2url(m.filename or "") + print >>out, """ + %s +
""" % (name, url, name) + oute, ince = map(sorted_namelist, self.get_edges(m)) + if oute: + print >>out, 'imports:' + for n in oute: + print >>out, """%s""" % (n, n) + print >>out, '
' + if ince: + print >>out, 'imported by:' + for n in ince: + print >>out, """%s""" % (n, n) + print >>out, '
' + print >>out, '
' + print >>out, '' + + + def itergraphreport(self, name='G', flatpackages=()): + nodes = map(self.graph.describe_node, self.graph.iterdfs(self)) + describe_edge = self.graph.describe_edge + edges = deque() + packagenodes = set() + packageidents = {} + nodetoident = {} + inpackages = {} + mainedges = set() + + # XXX - implement + flatpackages = dict(flatpackages) + + def nodevisitor(node, data, outgoing, incoming): + if not isinstance(data, Node): + return {'label': str(node)} + #if isinstance(d, (ExcludedModule, MissingModule, BadModule)): + # return None + s = ' ' + type(data).__name__ + for i,v in izip(count(1), data.infoTuple()[:1]): + s += '| %s' % (i,v) + return {'label':s, 'shape':'record'} + + def edgevisitor(edge, data, head, tail): + if data == 'orphan': + return {'style':'dashed'} + elif data == 'pkgref': + return {'style':'dotted'} + return {} + + yield 'digraph %s {\n' % (name,) + attr = dict(rankdir='LR', concentrate='true') + cpatt = '%s="%s"' + for item in attr.iteritems(): + yield '\t%s;\n' % (cpatt % item,) + + # find all packages (subgraphs) + for (node, data, outgoing, incoming) in nodes: + nodetoident[node] = getattr(data, 'identifier', None) + if isinstance(data, Package): + packageidents[data.identifier] = node + inpackages[node] = set([node]) + packagenodes.add(node) + + + # create sets for subgraph, write out descriptions + for (node, data, outgoing, incoming) in nodes: + # update edges + for edge in imap(describe_edge, outgoing): + edges.append(edge) + + # describe node + yield '\t"%s" [%s];\n' % ( + node, + ','.join([ + (cpatt % item) for item in + nodevisitor(node, data, outgoing, incoming).iteritems() + ]), + ) + + inside = inpackages.get(node) + if inside is None: + inside = inpackages[node] = set() + ident = nodetoident[node] + if ident is None: + continue + pkgnode = packageidents.get(ident[:ident.rfind('.')]) + if pkgnode is not None: + inside.add(pkgnode) + + + graph = [] + subgraphs = {} + for key in packagenodes: + subgraphs[key] = [] + + while edges: + edge, data, head, tail = edges.popleft() + if ((head, tail)) in mainedges: + continue + mainedges.add((head, tail)) + tailpkgs = inpackages[tail] + common = inpackages[head] & tailpkgs + if not common and tailpkgs: + usepkgs = sorted(tailpkgs) + if len(usepkgs) != 1 or usepkgs[0] != tail: + edges.append((edge, data, head, usepkgs[0])) + edges.append((edge, 'pkgref', usepkgs[-1], tail)) + continue + if common: + common = common.pop() + if tail == common: + edges.append((edge, data, tail, head)) + elif head == common: + subgraphs[common].append((edge, 'pkgref', head, tail)) + else: + edges.append((edge, data, common, head)) + edges.append((edge, data, common, tail)) + + else: + graph.append((edge, data, head, tail)) + + def do_graph(edges, tabs): + edgestr = tabs + '"%s" -> "%s" [%s];\n' + # describe edge + for (edge, data, head, tail) in edges: + attribs = edgevisitor(edge, data, head, tail) + yield edgestr % ( + head, + tail, + ','.join([(cpatt % item) for item in attribs.iteritems()]), + ) + + for g, edges in subgraphs.iteritems(): + yield '\tsubgraph "cluster_%s" {\n' % (g,) + yield '\t\tlabel="%s";\n' % (nodetoident[g],) + for s in do_graph(edges, '\t\t'): + yield s + yield '\t}\n' + + for s in do_graph(graph, '\t'): + yield s + + yield '}\n' + + def graphreport(self, fileobj=None, flatpackages=()): + if fileobj is None: + fileobj = sys.stdout + fileobj.writelines(self.itergraphreport(flatpackages=flatpackages)) + + def report(self): + """Print a report to stdout, listing the found modules with their + paths, as well as modules that are missing, or seem to be missing. + """ + print + print "%-15s %-25s %s" % ("Class", "Name", "File") + print "%-15s %-25s %s" % ("----", "----", "----") + # Print modules found + sorted = [(os.path.basename(mod.identifier), mod) for mod in self.flatten()] + sorted.sort() + for (name, m) in sorted: + print "%-15s %-25s %s" % (type(m).__name__, name, m.filename or "") + + def replace_paths_in_code(self, co): + new_filename = original_filename = os.path.normpath(co.co_filename) + for f, r in self.replace_paths: + f = os.path.join(f, '') + r = os.path.join(r, '') + if original_filename.startswith(f): + new_filename = r + original_filename[len(f):] + break + + consts = list(co.co_consts) + for i in range(len(consts)): + if isinstance(consts[i], type(co)): + consts[i] = self.replace_paths_in_code(consts[i]) + + return new.code(co.co_argcount, co.co_nlocals, co.co_stacksize, + co.co_flags, co.co_code, tuple(consts), co.co_names, + co.co_varnames, new_filename, co.co_name, + co.co_firstlineno, co.co_lnotab, + co.co_freevars, co.co_cellvars) + +def main(): + # Parse command line + import getopt + try: + opts, args = getopt.getopt(sys.argv[1:], "dgmp:qx:") + except getopt.error, msg: + print msg + return + + # Process options + debug = 1 + domods = 0 + dodot = False + addpath = [] + excludes = [] + for o, a in opts: + if o == '-d': + debug = debug + 1 + if o == '-m': + domods = 1 + if o == '-p': + addpath = addpath + a.split(os.pathsep) + if o == '-q': + debug = 0 + if o == '-x': + excludes.append(a) + if o == '-g': + dodot = True + + # Provide default arguments + if not args: + script = __file__ + else: + script = args[0] + + # Set the path based on sys.path and the script directory + path = sys.path[:] + path[0] = os.path.dirname(script) + path = addpath + path + if debug > 1: + print "path:" + for item in path: + print " ", repr(item) + + # Create the module finder and turn its crank + mf = ModuleGraph(path, excludes=excludes, debug=debug) + for arg in args[1:]: + if arg == '-m': + domods = 1 + continue + if domods: + if arg[-2:] == '.*': + mf.import_hook(arg[:-2], None, ["*"]) + else: + mf.import_hook(arg) + else: + mf.run_script(arg) + mf.run_script(script) + if dodot: + mf.graphreport() + else: + mf.report() + return mf # for -i debugging + + +if __name__ == '__main__': + try: + mf = main() + except KeyboardInterrupt: + print "\n[interrupt]" diff --git a/tools/pypack/modulegraph/pkg_resources.py b/tools/pypack/modulegraph/pkg_resources.py new file mode 100644 index 0000000..9edb6c0 --- /dev/null +++ b/tools/pypack/modulegraph/pkg_resources.py @@ -0,0 +1,2584 @@ +"""Package resource API +-------------------- + +A resource is a logical file contained within a package, or a logical +subdirectory thereof. The package resource API expects resource names +to have their path parts separated with ``/``, *not* whatever the local +path separator is. Do not use os.path operations to manipulate resource +names being passed into the API. + +The package resource API is designed to work with normal filesystem packages, +.egg files, and unpacked .egg files. It can also work in a limited way with +.zip files and with custom PEP 302 loaders that support the ``get_data()`` +method. +""" + +import sys, os, zipimport, time, re, imp, new + +try: + frozenset +except NameError: + from sets import ImmutableSet as frozenset + +from os import utime, rename, unlink # capture these to bypass sandboxing +from os import open as os_open + + + + + + + + + + + + + + + + + +def get_supported_platform(): + """Return this platform's maximum compatible version. + + distutils.util.get_platform() normally reports the minimum version + of Mac OS X that would be required to *use* extensions produced by + distutils. But what we want when checking compatibility is to know the + version of Mac OS X that we are *running*. To allow usage of packages that + explicitly require a newer version of Mac OS X, we must also know the + current version of the OS. + + If this condition occurs for any other platform with a version in its + platform strings, this function should be extended accordingly. + """ + plat = get_build_platform(); m = macosVersionString.match(plat) + if m is not None and sys.platform == "darwin": + try: + plat = 'macosx-%s-%s' % ('.'.join(_macosx_vers()[:2]), m.group(3)) + except ValueError: + pass # not Mac OS X + return plat + + + + + + + + + + + + + + + + + + + + + +__all__ = [ + # Basic resource access and distribution/entry point discovery + 'require', 'run_script', 'get_provider', 'get_distribution', + 'load_entry_point', 'get_entry_map', 'get_entry_info', 'iter_entry_points', + 'resource_string', 'resource_stream', 'resource_filename', + 'resource_listdir', 'resource_exists', 'resource_isdir', + + # Environmental control + 'declare_namespace', 'working_set', 'add_activation_listener', + 'find_distributions', 'set_extraction_path', 'cleanup_resources', + 'get_default_cache', + + # Primary implementation classes + 'Environment', 'WorkingSet', 'ResourceManager', + 'Distribution', 'Requirement', 'EntryPoint', + + # Exceptions + 'ResolutionError','VersionConflict','DistributionNotFound','UnknownExtra', + 'ExtractionError', + + # Parsing functions and string utilities + 'parse_requirements', 'parse_version', 'safe_name', 'safe_version', + 'get_platform', 'compatible_platforms', 'yield_lines', 'split_sections', + 'safe_extra', 'to_filename', + + # filesystem utilities + 'ensure_directory', 'normalize_path', + + # Distribution "precedence" constants + 'EGG_DIST', 'BINARY_DIST', 'SOURCE_DIST', 'CHECKOUT_DIST', 'DEVELOP_DIST', + + # "Provider" interfaces, implementations, and registration/lookup APIs + 'IMetadataProvider', 'IResourceProvider', 'FileMetadata', + 'PathMetadata', 'EggMetadata', 'EmptyProvider', 'empty_provider', + 'NullProvider', 'EggProvider', 'DefaultProvider', 'ZipProvider', + 'register_finder', 'register_namespace_handler', 'register_loader_type', + 'fixup_namespace_packages', 'get_importer', + + # Deprecated/backward compatibility only + 'run_main', 'AvailableDistributions', +] +class ResolutionError(Exception): + """Abstract base for dependency resolution errors""" + def __repr__(self): return self.__class__.__name__+repr(self.args) + +class VersionConflict(ResolutionError): + """An already-installed version conflicts with the requested version""" + +class DistributionNotFound(ResolutionError): + """A requested distribution was not found""" + +class UnknownExtra(ResolutionError): + """Distribution doesn't have an "extra feature" of the given name""" +_provider_factories = {} +PY_MAJOR = sys.version[:3] +EGG_DIST = 3 +BINARY_DIST = 2 +SOURCE_DIST = 1 +CHECKOUT_DIST = 0 +DEVELOP_DIST = -1 + +def register_loader_type(loader_type, provider_factory): + """Register `provider_factory` to make providers for `loader_type` + + `loader_type` is the type or class of a PEP 302 ``module.__loader__``, + and `provider_factory` is a function that, passed a *module* object, + returns an ``IResourceProvider`` for that module. + """ + _provider_factories[loader_type] = provider_factory + +def get_provider(moduleOrReq): + """Return an IResourceProvider for the named module or requirement""" + if isinstance(moduleOrReq,Requirement): + return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0] + try: + module = sys.modules[moduleOrReq] + except KeyError: + __import__(moduleOrReq) + module = sys.modules[moduleOrReq] + loader = getattr(module, '__loader__', None) + return _find_adapter(_provider_factories, loader)(module) + +def _macosx_vers(_cache=[]): + if not _cache: + info = os.popen('/usr/bin/sw_vers').read().splitlines() + for line in info: + key, value = line.split(None, 1) + if key == 'ProductVersion:': + _cache.append(value.strip().split(".")) + break + else: + raise ValueError, "What?!" + return _cache[0] + +def _macosx_arch(machine): + return {'PowerPC':'ppc', 'Power_Macintosh':'ppc'}.get(machine,machine) + +def get_build_platform(): + """Return this platform's string for platform-specific distributions + + XXX Currently this is the same as ``distutils.util.get_platform()``, but it + needs some hacks for Linux and Mac OS X. + """ + from distutils.util import get_platform + plat = get_platform() + if sys.platform == "darwin" and not plat.startswith('macosx-'): + try: + version = _macosx_vers() + machine = os.uname()[4].replace(" ", "_") + return "macosx-%d.%d-%s" % (int(version[0]), int(version[1]), + _macosx_arch(machine)) + except ValueError: + # if someone is running a non-Mac darwin system, this will fall + # through to the default implementation + pass + return plat + +macosVersionString = re.compile(r"macosx-(\d+)\.(\d+)-(.*)") +darwinVersionString = re.compile(r"darwin-(\d+)\.(\d+)\.(\d+)-(.*)") +get_platform = get_build_platform # XXX backward compat + + + +def compatible_platforms(provided,required): + """Can code for the `provided` platform run on the `required` platform? + + Returns true if either platform is ``None``, or the platforms are equal. + + XXX Needs compatibility checks for Linux and other unixy OSes. + """ + if provided is None or required is None or provided==required: + return True # easy case + + # Mac OS X special cases + reqMac = macosVersionString.match(required) + if reqMac: + provMac = macosVersionString.match(provided) + + # is this a Mac package? + if not provMac: + # this is backwards compatibility for packages built before + # setuptools 0.6. All packages built after this point will + # use the new macosx designation. + provDarwin = darwinVersionString.match(provided) + if provDarwin: + dversion = int(provDarwin.group(1)) + macosversion = "%s.%s" % (reqMac.group(1), reqMac.group(2)) + if dversion == 7 and macosversion >= "10.3" or \ + dversion == 8 and macosversion >= "10.4": + + #import warnings + #warnings.warn("Mac eggs should be rebuilt to " + # "use the macosx designation instead of darwin.", + # category=DeprecationWarning) + return True + return False # egg isn't macosx or legacy darwin + + # are they the same major version and machine type? + if provMac.group(1) != reqMac.group(1) or \ + provMac.group(3) != reqMac.group(3): + return False + + + + # is the required OS major update >= the provided one? + if int(provMac.group(2)) > int(reqMac.group(2)): + return False + + return True + + # XXX Linux and other platforms' special cases should go here + return False + + +def run_script(dist_spec, script_name): + """Locate distribution `dist_spec` and run its `script_name` script""" + ns = sys._getframe(1).f_globals + name = ns['__name__'] + ns.clear() + ns['__name__'] = name + require(dist_spec)[0].run_script(script_name, ns) + +run_main = run_script # backward compatibility + +def get_distribution(dist): + """Return a current distribution object for a Requirement or string""" + if isinstance(dist,basestring): dist = Requirement.parse(dist) + if isinstance(dist,Requirement): dist = get_provider(dist) + if not isinstance(dist,Distribution): + raise TypeError("Expected string, Requirement, or Distribution", dist) + return dist + +def load_entry_point(dist, group, name): + """Return `name` entry point of `group` for `dist` or raise ImportError""" + return get_distribution(dist).load_entry_point(group, name) + +def get_entry_map(dist, group=None): + """Return the entry point map for `group`, or the full entry map""" + return get_distribution(dist).get_entry_map(group) + +def get_entry_info(dist, group, name): + """Return the EntryPoint object for `group`+`name`, or ``None``""" + return get_distribution(dist).get_entry_info(group, name) + + +class IMetadataProvider: + + def has_metadata(name): + """Does the package's distribution contain the named metadata?""" + + def get_metadata(name): + """The named metadata resource as a string""" + + def get_metadata_lines(name): + """Yield named metadata resource as list of non-blank non-comment lines + + Leading and trailing whitespace is stripped from each line, and lines + with ``#`` as the first non-blank character are omitted.""" + + def metadata_isdir(name): + """Is the named metadata a directory? (like ``os.path.isdir()``)""" + + def metadata_listdir(name): + """List of metadata names in the directory (like ``os.listdir()``)""" + + def run_script(script_name, namespace): + """Execute the named script in the supplied namespace dictionary""" + + + + + + + + + + + + + + + + + + + +class IResourceProvider(IMetadataProvider): + """An object that provides access to package resources""" + + def get_resource_filename(manager, resource_name): + """Return a true filesystem path for `resource_name` + + `manager` must be an ``IResourceManager``""" + + def get_resource_stream(manager, resource_name): + """Return a readable file-like object for `resource_name` + + `manager` must be an ``IResourceManager``""" + + def get_resource_string(manager, resource_name): + """Return a string containing the contents of `resource_name` + + `manager` must be an ``IResourceManager``""" + + def has_resource(resource_name): + """Does the package contain the named resource?""" + + def resource_isdir(resource_name): + """Is the named resource a directory? (like ``os.path.isdir()``)""" + + def resource_listdir(resource_name): + """List of resource names in the directory (like ``os.listdir()``)""" + + + + + + + + + + + + + + + +class WorkingSet(object): + """A collection of active distributions on sys.path (or a similar list)""" + + def __init__(self, entries=None): + """Create working set from list of path entries (default=sys.path)""" + self.entries = [] + self.entry_keys = {} + self.by_key = {} + self.callbacks = [] + + if entries is None: + entries = sys.path + + for entry in entries: + self.add_entry(entry) + + + def add_entry(self, entry): + """Add a path item to ``.entries``, finding any distributions on it + + ``find_distributions(entry,False)`` is used to find distributions + corresponding to the path entry, and they are added. `entry` is + always appended to ``.entries``, even if it is already present. + (This is because ``sys.path`` can contain the same value more than + once, and the ``.entries`` of the ``sys.path`` WorkingSet should always + equal ``sys.path``.) + """ + self.entry_keys.setdefault(entry, []) + self.entries.append(entry) + for dist in find_distributions(entry, True): + self.add(dist, entry, False) + + + def __contains__(self,dist): + """True if `dist` is the active distribution for its project""" + return self.by_key.get(dist.key) == dist + + + + + + def find(self, req): + """Find a distribution matching requirement `req` + + If there is an active distribution for the requested project, this + returns it as long as it meets the version requirement specified by + `req`. But, if there is an active distribution for the project and it + does *not* meet the `req` requirement, ``VersionConflict`` is raised. + If there is no active distribution for the requested project, ``None`` + is returned. + """ + dist = self.by_key.get(req.key) + if dist is not None and dist not in req: + raise VersionConflict(dist,req) # XXX add more info + else: + return dist + + def iter_entry_points(self, group, name=None): + """Yield entry point objects from `group` matching `name` + + If `name` is None, yields all entry points in `group` from all + distributions in the working set, otherwise only ones matching + both `group` and `name` are yielded (in distribution order). + """ + for dist in self: + entries = dist.get_entry_map(group) + if name is None: + for ep in entries.values(): + yield ep + elif name in entries: + yield entries[name] + + def run_script(self, requires, script_name): + """Locate distribution for `requires` and run `script_name` script""" + ns = sys._getframe(1).f_globals + name = ns['__name__'] + ns.clear() + ns['__name__'] = name + self.require(requires)[0].run_script(script_name, ns) + + + + def __iter__(self): + """Yield distributions for non-duplicate projects in the working set + + The yield order is the order in which the items' path entries were + added to the working set. + """ + seen = {} + for item in self.entries: + for key in self.entry_keys[item]: + if key not in seen: + seen[key]=1 + yield self.by_key[key] + + def add(self, dist, entry=None, insert=True): + """Add `dist` to working set, associated with `entry` + + If `entry` is unspecified, it defaults to the ``.location`` of `dist`. + On exit from this routine, `entry` is added to the end of the working + set's ``.entries`` (if it wasn't already present). + + `dist` is only added to the working set if it's for a project that + doesn't already have a distribution in the set. If it's added, any + callbacks registered with the ``subscribe()`` method will be called. + """ + if insert: + dist.insert_on(self.entries, entry) + + if entry is None: + entry = dist.location + keys = self.entry_keys.setdefault(entry,[]) + keys2 = self.entry_keys.setdefault(dist.location,[]) + if dist.key in self.by_key: + return # ignore hidden distros + + self.by_key[dist.key] = dist + if dist.key not in keys: + keys.append(dist.key) + if dist.key not in keys2: + keys2.append(dist.key) + self._added_new(dist) + + def resolve(self, requirements, env=None, installer=None): + """List all distributions needed to (recursively) meet `requirements` + + `requirements` must be a sequence of ``Requirement`` objects. `env`, + if supplied, should be an ``Environment`` instance. If + not supplied, it defaults to all distributions available within any + entry or distribution in the working set. `installer`, if supplied, + will be invoked with each requirement that cannot be met by an + already-installed distribution; it should return a ``Distribution`` or + ``None``. + """ + + requirements = list(requirements)[::-1] # set up the stack + processed = {} # set of processed requirements + best = {} # key -> dist + to_activate = [] + + while requirements: + req = requirements.pop(0) # process dependencies breadth-first + if req in processed: + # Ignore cyclic or redundant dependencies + continue + dist = best.get(req.key) + if dist is None: + # Find the best distribution and add it to the map + dist = self.by_key.get(req.key) + if dist is None: + if env is None: + env = Environment(self.entries) + dist = best[req.key] = env.best_match(req, self, installer) + if dist is None: + raise DistributionNotFound(req) # XXX put more info here + to_activate.append(dist) + if dist not in req: + # Oops, the "best" so far conflicts with a dependency + raise VersionConflict(dist,req) # XXX put more info here + requirements.extend(dist.requires(req.extras)[::-1]) + processed[req] = True + + return to_activate # return list of distros to activate + + def find_plugins(self, + plugin_env, full_env=None, installer=None, fallback=True + ): + """Find all activatable distributions in `plugin_env` + + Example usage:: + + distributions, errors = working_set.find_plugins( + Environment(plugin_dirlist) + ) + map(working_set.add, distributions) # add plugins+libs to sys.path + print "Couldn't load", errors # display errors + + The `plugin_env` should be an ``Environment`` instance that contains + only distributions that are in the project's "plugin directory" or + directories. The `full_env`, if supplied, should be an ``Environment`` + contains all currently-available distributions. If `full_env` is not + supplied, one is created automatically from the ``WorkingSet`` this + method is called on, which will typically mean that every directory on + ``sys.path`` will be scanned for distributions. + + `installer` is a standard installer callback as used by the + ``resolve()`` method. The `fallback` flag indicates whether we should + attempt to resolve older versions of a plugin if the newest version + cannot be resolved. + + This method returns a 2-tuple: (`distributions`, `error_info`), where + `distributions` is a list of the distributions found in `plugin_env` + that were loadable, along with any other distributions that are needed + to resolve their dependencies. `error_info` is a dictionary mapping + unloadable plugin distributions to an exception instance describing the + error that occurred. Usually this will be a ``DistributionNotFound`` or + ``VersionConflict`` instance. + """ + + plugin_projects = list(plugin_env) + plugin_projects.sort() # scan project names in alphabetic order + + error_info = {} + distributions = {} + + if full_env is None: + env = Environment(self.entries) + env += plugin_env + else: + env = full_env + plugin_env + + shadow_set = self.__class__([]) + map(shadow_set.add, self) # put all our entries in shadow_set + + for project_name in plugin_projects: + + for dist in plugin_env[project_name]: + + req = [dist.as_requirement()] + + try: + resolvees = shadow_set.resolve(req, env, installer) + + except ResolutionError,v: + error_info[dist] = v # save error info + if fallback: + continue # try the next older version of project + else: + break # give up on this project, keep going + + else: + map(shadow_set.add, resolvees) + distributions.update(dict.fromkeys(resolvees)) + + # success, no need to try any more versions of this project + break + + distributions = list(distributions) + distributions.sort() + + return distributions, error_info + + + + + + def require(self, *requirements): + """Ensure that distributions matching `requirements` are activated + + `requirements` must be a string or a (possibly-nested) sequence + thereof, specifying the distributions and versions required. The + return value is a sequence of the distributions that needed to be + activated to fulfill the requirements; all relevant distributions are + included, even if they were already activated in this working set. + """ + + needed = self.resolve(parse_requirements(requirements)) + + for dist in needed: + self.add(dist) + + return needed + + + def subscribe(self, callback): + """Invoke `callback` for all distributions (including existing ones)""" + if callback in self.callbacks: + return + self.callbacks.append(callback) + for dist in self: + callback(dist) + + + def _added_new(self, dist): + for callback in self.callbacks: + callback(dist) + + + + + + + + + + + +class Environment(object): + """Searchable snapshot of distributions on a search path""" + + def __init__(self, search_path=None, platform=get_supported_platform(), python=PY_MAJOR): + """Snapshot distributions available on a search path + + Any distributions found on `search_path` are added to the environment. + `search_path` should be a sequence of ``sys.path`` items. If not + supplied, ``sys.path`` is used. + + `platform` is an optional string specifying the name of the platform + that platform-specific distributions must be compatible with. If + unspecified, it defaults to the current platform. `python` is an + optional string naming the desired version of Python (e.g. ``'2.4'``); + it defaults to the current version. + + You may explicitly set `platform` (and/or `python`) to ``None`` if you + wish to map *all* distributions, not just those compatible with the + running platform or Python version. + """ + self._distmap = {} + self._cache = {} + self.platform = platform + self.python = python + self.scan(search_path) + + def can_add(self, dist): + """Is distribution `dist` acceptable for this environment? + + The distribution must match the platform and python version + requirements specified when this environment was created, or False + is returned. + """ + return (self.python is None or dist.py_version is None + or dist.py_version==self.python) \ + and compatible_platforms(dist.platform,self.platform) + + def remove(self, dist): + """Remove `dist` from the environment""" + self._distmap[dist.key].remove(dist) + + def scan(self, search_path=None): + """Scan `search_path` for distributions usable in this environment + + Any distributions found are added to the environment. + `search_path` should be a sequence of ``sys.path`` items. If not + supplied, ``sys.path`` is used. Only distributions conforming to + the platform/python version defined at initialization are added. + """ + if search_path is None: + search_path = sys.path + + for item in search_path: + for dist in find_distributions(item): + self.add(dist) + + def __getitem__(self,project_name): + """Return a newest-to-oldest list of distributions for `project_name` + """ + try: + return self._cache[project_name] + except KeyError: + project_name = project_name.lower() + if project_name not in self._distmap: + return [] + + if project_name not in self._cache: + dists = self._cache[project_name] = self._distmap[project_name] + _sort_dists(dists) + + return self._cache[project_name] + + def add(self,dist): + """Add `dist` if we ``can_add()`` it and it isn't already added""" + if self.can_add(dist) and dist.has_version(): + dists = self._distmap.setdefault(dist.key,[]) + if dist not in dists: + dists.append(dist) + if dist.key in self._cache: + _sort_dists(self._cache[dist.key]) + + + def best_match(self, req, working_set, installer=None): + """Find distribution best matching `req` and usable on `working_set` + + This calls the ``find(req)`` method of the `working_set` to see if a + suitable distribution is already active. (This may raise + ``VersionConflict`` if an unsuitable version of the project is already + active in the specified `working_set`.) If a suitable distribution + isn't active, this method returns the newest distribution in the + environment that meets the ``Requirement`` in `req`. If no suitable + distribution is found, and `installer` is supplied, then the result of + calling the environment's ``obtain(req, installer)`` method will be + returned. + """ + dist = working_set.find(req) + if dist is not None: + return dist + for dist in self[req.key]: + if dist in req: + return dist + return self.obtain(req, installer) # try and download/install + + def obtain(self, requirement, installer=None): + """Obtain a distribution matching `requirement` (e.g. via download) + + Obtain a distro that matches requirement (e.g. via download). In the + base ``Environment`` class, this routine just returns + ``installer(requirement)``, unless `installer` is None, in which case + None is returned instead. This method is a hook that allows subclasses + to attempt other ways of obtaining a distribution before falling back + to the `installer` argument.""" + if installer is not None: + return installer(requirement) + + def __iter__(self): + """Yield the unique project names of the available distributions""" + for key in self._distmap.keys(): + if self[key]: yield key + + + + + def __iadd__(self, other): + """In-place addition of a distribution or environment""" + if isinstance(other,Distribution): + self.add(other) + elif isinstance(other,Environment): + for project in other: + for dist in other[project]: + self.add(dist) + else: + raise TypeError("Can't add %r to environment" % (other,)) + return self + + def __add__(self, other): + """Add an environment or distribution to an environment""" + new = self.__class__([], platform=None, python=None) + for env in self, other: + new += env + return new + + +AvailableDistributions = Environment # XXX backward compatibility + + +class ExtractionError(RuntimeError): + """An error occurred extracting a resource + + The following attributes are available from instances of this exception: + + manager + The resource manager that raised this exception + + cache_path + The base directory for resource extraction + + original_error + The exception instance that caused extraction to fail + """ + + + + +class ResourceManager: + """Manage resource extraction and packages""" + extraction_path = None + + def __init__(self): + self.cached_files = {} + + def resource_exists(self, package_or_requirement, resource_name): + """Does the named resource exist?""" + return get_provider(package_or_requirement).has_resource(resource_name) + + def resource_isdir(self, package_or_requirement, resource_name): + """Is the named resource an existing directory?""" + return get_provider(package_or_requirement).resource_isdir( + resource_name + ) + + def resource_filename(self, package_or_requirement, resource_name): + """Return a true filesystem path for specified resource""" + return get_provider(package_or_requirement).get_resource_filename( + self, resource_name + ) + + def resource_stream(self, package_or_requirement, resource_name): + """Return a readable file-like object for specified resource""" + return get_provider(package_or_requirement).get_resource_stream( + self, resource_name + ) + + def resource_string(self, package_or_requirement, resource_name): + """Return specified resource as a string""" + return get_provider(package_or_requirement).get_resource_string( + self, resource_name + ) + + def resource_listdir(self, package_or_requirement, resource_name): + """List the contents of the named resource directory""" + return get_provider(package_or_requirement).resource_listdir( + resource_name + ) + + def extraction_error(self): + """Give an error message for problems extracting file(s)""" + + old_exc = sys.exc_info()[1] + cache_path = self.extraction_path or get_default_cache() + + err = ExtractionError("""Can't extract file(s) to egg cache + +The following error occurred while trying to extract file(s) to the Python egg +cache: + + %s + +The Python egg cache directory is currently set to: + + %s + +Perhaps your account does not have write access to this directory? You can +change the cache directory by setting the PYTHON_EGG_CACHE environment +variable to point to an accessible directory. +""" % (old_exc, cache_path) + ) + err.manager = self + err.cache_path = cache_path + err.original_error = old_exc + raise err + + + + + + + + + + + + + + + + def get_cache_path(self, archive_name, names=()): + """Return absolute location in cache for `archive_name` and `names` + + The parent directory of the resulting path will be created if it does + not already exist. `archive_name` should be the base filename of the + enclosing egg (which may not be the name of the enclosing zipfile!), + including its ".egg" extension. `names`, if provided, should be a + sequence of path name parts "under" the egg's extraction location. + + This method should only be called by resource providers that need to + obtain an extraction location, and only for names they intend to + extract, as it tracks the generated names for possible cleanup later. + """ + extract_path = self.extraction_path or get_default_cache() + target_path = os.path.join(extract_path, archive_name+'-tmp', *names) + try: + ensure_directory(target_path) + except: + self.extraction_error() + + self.cached_files[target_path] = 1 + return target_path + + + + + + + + + + + + + + + + + + + + def postprocess(self, tempname, filename): + """Perform any platform-specific postprocessing of `tempname` + + This is where Mac header rewrites should be done; other platforms don't + have anything special they should do. + + Resource providers should call this method ONLY after successfully + extracting a compressed resource. They must NOT call it on resources + that are already in the filesystem. + + `tempname` is the current (temporary) name of the file, and `filename` + is the name it will be renamed to by the caller after this routine + returns. + """ + + if os.name == 'posix': + # Make the resource executable + mode = ((os.stat(tempname).st_mode) | 0555) & 07777 + os.chmod(tempname, mode) + + + + + + + + + + + + + + + + + + + + + + + def set_extraction_path(self, path): + """Set the base path where resources will be extracted to, if needed. + + If you do not call this routine before any extractions take place, the + path defaults to the return value of ``get_default_cache()``. (Which + is based on the ``PYTHON_EGG_CACHE`` environment variable, with various + platform-specific fallbacks. See that routine's documentation for more + details.) + + Resources are extracted to subdirectories of this path based upon + information given by the ``IResourceProvider``. You may set this to a + temporary directory, but then you must call ``cleanup_resources()`` to + delete the extracted files when done. There is no guarantee that + ``cleanup_resources()`` will be able to remove all extracted files. + + (Note: you may not change the extraction path for a given resource + manager once resources have been extracted, unless you first call + ``cleanup_resources()``.) + """ + if self.cached_files: + raise ValueError( + "Can't change extraction path, files already extracted" + ) + + self.extraction_path = path + + def cleanup_resources(self, force=False): + """ + Delete all extracted resource files and directories, returning a list + of the file and directory names that could not be successfully removed. + This function does not have any concurrency protection, so it should + generally only be called when the extraction path is a temporary + directory exclusive to a single process. This method is not + automatically called; you must call it explicitly or register it as an + ``atexit`` function if you wish to ensure cleanup of a temporary + directory used for extractions. + """ + # XXX + + + +def get_default_cache(): + """Determine the default cache location + + This returns the ``PYTHON_EGG_CACHE`` environment variable, if set. + Otherwise, on Windows, it returns a "Python-Eggs" subdirectory of the + "Application Data" directory. On all other systems, it's "~/.python-eggs". + """ + try: + return os.environ['PYTHON_EGG_CACHE'] + except KeyError: + pass + + if os.name!='nt': + return os.path.expanduser('~/.python-eggs') + + app_data = 'Application Data' # XXX this may be locale-specific! + app_homes = [ + (('APPDATA',), None), # best option, should be locale-safe + (('USERPROFILE',), app_data), + (('HOMEDRIVE','HOMEPATH'), app_data), + (('HOMEPATH',), app_data), + (('HOME',), None), + (('WINDIR',), app_data), # 95/98/ME + ] + + for keys, subdir in app_homes: + dirname = '' + for key in keys: + if key in os.environ: + dirname = os.path.join(dirname, os.environ[key]) + else: + break + else: + if subdir: + dirname = os.path.join(dirname,subdir) + return os.path.join(dirname, 'Python-Eggs') + else: + raise RuntimeError( + "Please set the PYTHON_EGG_CACHE enviroment variable" + ) + +def safe_name(name): + """Convert an arbitrary string to a standard distribution name + + Any runs of non-alphanumeric/. characters are replaced with a single '-'. + """ + return re.sub('[^A-Za-z0-9.]+', '-', name) + + +def safe_version(version): + """Convert an arbitrary string to a standard version string + + Spaces become dots, and all other non-alphanumeric characters become + dashes, with runs of multiple dashes condensed to a single dash. + """ + version = version.replace(' ','.') + return re.sub('[^A-Za-z0-9.]+', '-', version) + + +def safe_extra(extra): + """Convert an arbitrary string to a standard 'extra' name + + Any runs of non-alphanumeric characters are replaced with a single '_', + and the result is always lowercased. + """ + return re.sub('[^A-Za-z0-9.]+', '_', extra).lower() + + +def to_filename(name): + """Convert a project or version name to its filename-escaped form + + Any '-' characters are currently replaced with '_'. + """ + return name.replace('-','_') + + + + + + + + +class NullProvider: + """Try to implement resources and metadata for arbitrary PEP 302 loaders""" + + egg_name = None + egg_info = None + loader = None + + def __init__(self, module): + self.loader = getattr(module, '__loader__', None) + self.module_path = os.path.dirname(getattr(module, '__file__', '')) + + def get_resource_filename(self, manager, resource_name): + return self._fn(self.module_path, resource_name) + + def get_resource_stream(self, manager, resource_name): + return StringIO(self.get_resource_string(manager, resource_name)) + + def get_resource_string(self, manager, resource_name): + return self._get(self._fn(self.module_path, resource_name)) + + def has_resource(self, resource_name): + return self._has(self._fn(self.module_path, resource_name)) + + def has_metadata(self, name): + return self.egg_info and self._has(self._fn(self.egg_info,name)) + + def get_metadata(self, name): + if not self.egg_info: + return "" + return self._get(self._fn(self.egg_info,name)) + + def get_metadata_lines(self, name): + return yield_lines(self.get_metadata(name)) + + def resource_isdir(self,resource_name): + return self._isdir(self._fn(self.module_path, resource_name)) + + def metadata_isdir(self,name): + return self.egg_info and self._isdir(self._fn(self.egg_info,name)) + + + def resource_listdir(self,resource_name): + return self._listdir(self._fn(self.module_path,resource_name)) + + def metadata_listdir(self,name): + if self.egg_info: + return self._listdir(self._fn(self.egg_info,name)) + return [] + + def run_script(self,script_name,namespace): + script = 'scripts/'+script_name + if not self.has_metadata(script): + raise ResolutionError("No script named %r" % script_name) + script_text = self.get_metadata(script).replace('\r\n','\n') + script_text = script_text.replace('\r','\n') + script_filename = self._fn(self.egg_info,script) + namespace['__file__'] = script_filename + if os.path.exists(script_filename): + execfile(script_filename, namespace, namespace) + else: + from linecache import cache + cache[script_filename] = ( + len(script_text), 0, script_text.split('\n'), script_filename + ) + script_code = compile(script_text,script_filename,'exec') + exec script_code in namespace, namespace + + def _has(self, path): + raise NotImplementedError( + "Can't perform this operation for unregistered loader type" + ) + + def _isdir(self, path): + raise NotImplementedError( + "Can't perform this operation for unregistered loader type" + ) + + def _listdir(self, path): + raise NotImplementedError( + "Can't perform this operation for unregistered loader type" + ) + + def _fn(self, base, resource_name): + if resource_name: + return os.path.join(base, *resource_name.split('/')) + return base + + def _get(self, path): + if hasattr(self.loader, 'get_data'): + return self.loader.get_data(path) + raise NotImplementedError( + "Can't perform this operation for loaders without 'get_data()'" + ) + +register_loader_type(object, NullProvider) + + +class EggProvider(NullProvider): + """Provider based on a virtual filesystem""" + + def __init__(self,module): + NullProvider.__init__(self,module) + self._setup_prefix() + + def _setup_prefix(self): + # we assume here that our metadata may be nested inside a "basket" + # of multiple eggs; that's why we use module_path instead of .archive + path = self.module_path + old = None + while path!=old: + if path.lower().endswith('.egg'): + self.egg_name = os.path.basename(path) + self.egg_info = os.path.join(path, 'EGG-INFO') + self.egg_root = path + break + old = path + path, base = os.path.split(path) + + + + + + +class DefaultProvider(EggProvider): + """Provides access to package resources in the filesystem""" + + def _has(self, path): + return os.path.exists(path) + + def _isdir(self,path): + return os.path.isdir(path) + + def _listdir(self,path): + return os.listdir(path) + + def get_resource_stream(self, manager, resource_name): + return open(self._fn(self.module_path, resource_name), 'rb') + + def _get(self, path): + stream = open(path, 'rb') + try: + return stream.read() + finally: + stream.close() + +register_loader_type(type(None), DefaultProvider) + + +class EmptyProvider(NullProvider): + """Provider that returns nothing for all requests""" + + _isdir = _has = lambda self,path: False + _get = lambda self,path: '' + _listdir = lambda self,path: [] + module_path = None + + def __init__(self): + pass + +empty_provider = EmptyProvider() + + + + +class ZipProvider(EggProvider): + """Resource support for zips and eggs""" + + eagers = None + + def __init__(self, module): + EggProvider.__init__(self,module) + self.zipinfo = zipimport._zip_directory_cache[self.loader.archive] + self.zip_pre = self.loader.archive+os.sep + + def _zipinfo_name(self, fspath): + # Convert a virtual filename (full path to file) into a zipfile subpath + # usable with the zipimport directory cache for our target archive + if fspath.startswith(self.zip_pre): + return fspath[len(self.zip_pre):] + raise AssertionError( + "%s is not a subpath of %s" % (fspath,self.zip_pre) + ) + + def _parts(self,zip_path): + # Convert a zipfile subpath into an egg-relative path part list + fspath = self.zip_pre+zip_path # pseudo-fs path + if fspath.startswith(self.egg_root+os.sep): + return fspath[len(self.egg_root)+1:].split(os.sep) + raise AssertionError( + "%s is not a subpath of %s" % (fspath,self.egg_root) + ) + + def get_resource_filename(self, manager, resource_name): + if not self.egg_name: + raise NotImplementedError( + "resource_filename() only supported for .egg, not .zip" + ) + # no need to lock for extraction, since we use temp names + zip_path = self._resource_to_zip(resource_name) + eagers = self._get_eager_resources() + if '/'.join(self._parts(zip_path)) in eagers: + for name in eagers: + self._extract_resource(manager, self._eager_to_zip(name)) + return self._extract_resource(manager, zip_path) + + def _extract_resource(self, manager, zip_path): + + if zip_path in self._index(): + for name in self._index()[zip_path]: + last = self._extract_resource( + manager, os.path.join(zip_path, name) + ) + return os.path.dirname(last) # return the extracted directory name + + zip_stat = self.zipinfo[zip_path] + t,d,size = zip_stat[5], zip_stat[6], zip_stat[3] + date_time = ( + (d>>9)+1980, (d>>5)&0xF, d&0x1F, # ymd + (t&0xFFFF)>>11, (t>>5)&0x3F, (t&0x1F) * 2, 0, 0, -1 # hms, etc. + ) + timestamp = time.mktime(date_time) + + try: + real_path = manager.get_cache_path( + self.egg_name, self._parts(zip_path) + ) + + if os.path.isfile(real_path): + stat = os.stat(real_path) + if stat.st_size==size and stat.st_mtime==timestamp: + # size and stamp match, don't bother extracting + return real_path + + outf, tmpnam = _mkstemp(".$extract", dir=os.path.dirname(real_path)) + os.write(outf, self.loader.get_data(zip_path)) + os.close(outf) + utime(tmpnam, (timestamp,timestamp)) + manager.postprocess(tmpnam, real_path) + + try: + rename(tmpnam, real_path) + + except os.error: + if os.path.isfile(real_path): + stat = os.stat(real_path) + + if stat.st_size==size and stat.st_mtime==timestamp: + # size and stamp match, somebody did it just ahead of + # us, so we're done + return real_path + elif os.name=='nt': # Windows, del old file and retry + unlink(real_path) + rename(tmpnam, real_path) + return real_path + raise + + except os.error: + manager.extraction_error() # report a user-friendly error + + return real_path + + def _get_eager_resources(self): + if self.eagers is None: + eagers = [] + for name in ('native_libs.txt', 'eager_resources.txt'): + if self.has_metadata(name): + eagers.extend(self.get_metadata_lines(name)) + self.eagers = eagers + return self.eagers + + def _index(self): + try: + return self._dirindex + except AttributeError: + ind = {} + for path in self.zipinfo: + parts = path.split(os.sep) + while parts: + parent = os.sep.join(parts[:-1]) + if parent in ind: + ind[parent].append(parts[-1]) + break + else: + ind[parent] = [parts.pop()] + self._dirindex = ind + return ind + + def _has(self, fspath): + zip_path = self._zipinfo_name(fspath) + return zip_path in self.zipinfo or zip_path in self._index() + + def _isdir(self,fspath): + return self._zipinfo_name(fspath) in self._index() + + def _listdir(self,fspath): + return list(self._index().get(self._zipinfo_name(fspath), ())) + + def _eager_to_zip(self,resource_name): + return self._zipinfo_name(self._fn(self.egg_root,resource_name)) + + def _resource_to_zip(self,resource_name): + return self._zipinfo_name(self._fn(self.module_path,resource_name)) + +register_loader_type(zipimport.zipimporter, ZipProvider) + + + + + + + + + + + + + + + + + + + + + + + + +class FileMetadata(EmptyProvider): + """Metadata handler for standalone PKG-INFO files + + Usage:: + + metadata = FileMetadata("/path/to/PKG-INFO") + + This provider rejects all data and metadata requests except for PKG-INFO, + which is treated as existing, and will be the contents of the file at + the provided location. + """ + + def __init__(self,path): + self.path = path + + def has_metadata(self,name): + return name=='PKG-INFO' + + def get_metadata(self,name): + if name=='PKG-INFO': + return open(self.path,'rU').read() + raise KeyError("No metadata except PKG-INFO is available") + + def get_metadata_lines(self,name): + return yield_lines(self.get_metadata(name)) + + + + + + + + + + + + + + + + +class PathMetadata(DefaultProvider): + """Metadata provider for egg directories + + Usage:: + + # Development eggs: + + egg_info = "/path/to/PackageName.egg-info" + base_dir = os.path.dirname(egg_info) + metadata = PathMetadata(base_dir, egg_info) + dist_name = os.path.splitext(os.path.basename(egg_info))[0] + dist = Distribution(basedir,project_name=dist_name,metadata=metadata) + + # Unpacked egg directories: + + egg_path = "/path/to/PackageName-ver-pyver-etc.egg" + metadata = PathMetadata(egg_path, os.path.join(egg_path,'EGG-INFO')) + dist = Distribution.from_filename(egg_path, metadata=metadata) + """ + + def __init__(self, path, egg_info): + self.module_path = path + self.egg_info = egg_info + + +class EggMetadata(ZipProvider): + """Metadata provider for .egg files""" + + def __init__(self, importer): + """Create a metadata provider from a zipimporter""" + + self.zipinfo = zipimport._zip_directory_cache[importer.archive] + self.zip_pre = importer.archive+os.sep + self.loader = importer + if importer.prefix: + self.module_path = os.path.join(importer.archive, importer.prefix) + else: + self.module_path = importer.archive + self._setup_prefix() + + +class ImpWrapper: + """PEP 302 Importer that wraps Python's "normal" import algorithm""" + + def __init__(self, path=None): + self.path = path + + def find_module(self, fullname, path=None): + subname = fullname.split(".")[-1] + if subname != fullname and self.path is None: + return None + if self.path is None: + path = None + else: + path = [self.path] + try: + file, filename, etc = imp.find_module(subname, path) + except ImportError: + return None + return ImpLoader(file, filename, etc) + + +class ImpLoader: + """PEP 302 Loader that wraps Python's "normal" import algorithm""" + + def __init__(self, file, filename, etc): + self.file = file + self.filename = filename + self.etc = etc + + def load_module(self, fullname): + try: + mod = imp.load_module(fullname, self.file, self.filename, self.etc) + finally: + if self.file: self.file.close() + # Note: we don't set __loader__ because we want the module to look + # normal; i.e. this is just a wrapper for standard import machinery + return mod + + + + +def get_importer(path_item): + """Retrieve a PEP 302 "importer" for the given path item + + If there is no importer, this returns a wrapper around the builtin import + machinery. The returned importer is only cached if it was created by a + path hook. + """ + try: + importer = sys.path_importer_cache[path_item] + except KeyError: + for hook in sys.path_hooks: + try: + importer = hook(path_item) + except ImportError: + pass + else: + break + else: + importer = None + + sys.path_importer_cache.setdefault(path_item,importer) + if importer is None: + try: + importer = ImpWrapper(path_item) + except ImportError: + pass + return importer + +try: + from pkgutil import get_importer, ImpImporter +except ImportError: + pass # Python 2.3 or 2.4, use our own implementation +else: + ImpWrapper = ImpImporter # Python 2.5, use pkgutil's implementation + del ImpLoader, ImpImporter + + + + + + +_distribution_finders = {} + +def register_finder(importer_type, distribution_finder): + """Register `distribution_finder` to find distributions in sys.path items + + `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item + handler), and `distribution_finder` is a callable that, passed a path + item and the importer instance, yields ``Distribution`` instances found on + that path item. See ``pkg_resources.find_on_path`` for an example.""" + _distribution_finders[importer_type] = distribution_finder + + +def find_distributions(path_item, only=False): + """Yield distributions accessible via `path_item`""" + importer = get_importer(path_item) + finder = _find_adapter(_distribution_finders, importer) + return finder(importer, path_item, only) + +def find_in_zip(importer, path_item, only=False): + metadata = EggMetadata(importer) + if metadata.has_metadata('PKG-INFO'): + yield Distribution.from_filename(path_item, metadata=metadata) + if only: + return # don't yield nested distros + for subitem in metadata.resource_listdir('/'): + if subitem.endswith('.egg'): + subpath = os.path.join(path_item, subitem) + for dist in find_in_zip(zipimport.zipimporter(subpath), subpath): + yield dist + +register_finder(zipimport.zipimporter, find_in_zip) + +def StringIO(*args, **kw): + """Thunk to load the real StringIO on demand""" + global StringIO + try: + from cStringIO import StringIO + except ImportError: + from StringIO import StringIO + return StringIO(*args,**kw) + +def find_nothing(importer, path_item, only=False): + return () +register_finder(object,find_nothing) + +def find_on_path(importer, path_item, only=False): + """Yield distributions accessible on a sys.path directory""" + path_item = _normalize_cached(path_item) + + if os.path.isdir(path_item): + if path_item.lower().endswith('.egg'): + # unpacked egg + yield Distribution.from_filename( + path_item, metadata=PathMetadata( + path_item, os.path.join(path_item,'EGG-INFO') + ) + ) + else: + # scan for .egg and .egg-info in directory + for entry in os.listdir(path_item): + lower = entry.lower() + if lower.endswith('.egg-info'): + fullpath = os.path.join(path_item, entry) + if os.path.isdir(fullpath): + # egg-info directory, allow getting metadata + metadata = PathMetadata(path_item, fullpath) + else: + metadata = FileMetadata(fullpath) + yield Distribution.from_location( + path_item,entry,metadata,precedence=DEVELOP_DIST + ) + elif not only and lower.endswith('.egg'): + for dist in find_distributions(os.path.join(path_item, entry)): + yield dist + elif not only and lower.endswith('.egg-link'): + for line in file(os.path.join(path_item, entry)): + if not line.strip(): continue + for item in find_distributions(os.path.join(path_item,line.rstrip())): + yield item + break +register_finder(ImpWrapper,find_on_path) + +_namespace_handlers = {} +_namespace_packages = {} + +def register_namespace_handler(importer_type, namespace_handler): + """Register `namespace_handler` to declare namespace packages + + `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item + handler), and `namespace_handler` is a callable like this:: + + def namespace_handler(importer,path_entry,moduleName,module): + # return a path_entry to use for child packages + + Namespace handlers are only called if the importer object has already + agreed that it can handle the relevant path item, and they should only + return a subpath if the module __path__ does not already contain an + equivalent subpath. For an example namespace handler, see + ``pkg_resources.file_ns_handler``. + """ + _namespace_handlers[importer_type] = namespace_handler + +def _handle_ns(packageName, path_item): + """Ensure that named package includes a subpath of path_item (if needed)""" + importer = get_importer(path_item) + if importer is None: + return None + loader = importer.find_module(packageName) + if loader is None: + return None + module = sys.modules.get(packageName) + if module is None: + module = sys.modules[packageName] = new.module(packageName) + module.__path__ = []; _set_parent_ns(packageName) + elif not hasattr(module,'__path__'): + raise TypeError("Not a package:", packageName) + handler = _find_adapter(_namespace_handlers, importer) + subpath = handler(importer,path_item,packageName,module) + if subpath is not None: + path = module.__path__; path.append(subpath) + loader.load_module(packageName); module.__path__ = path + return subpath + +def declare_namespace(packageName): + """Declare that package 'packageName' is a namespace package""" + + imp.acquire_lock() + try: + if packageName in _namespace_packages: + return + + path, parent = sys.path, None + if '.' in packageName: + parent = '.'.join(packageName.split('.')[:-1]) + declare_namespace(parent) + __import__(parent) + try: + path = sys.modules[parent].__path__ + except AttributeError: + raise TypeError("Not a package:", parent) + + # Track what packages are namespaces, so when new path items are added, + # they can be updated + _namespace_packages.setdefault(parent,[]).append(packageName) + _namespace_packages.setdefault(packageName,[]) + + for path_item in path: + # Ensure all the parent's path items are reflected in the child, + # if they apply + _handle_ns(packageName, path_item) + + finally: + imp.release_lock() + +def fixup_namespace_packages(path_item, parent=None): + """Ensure that previously-declared namespace packages include path_item""" + imp.acquire_lock() + try: + for package in _namespace_packages.get(parent,()): + subpath = _handle_ns(package, path_item) + if subpath: fixup_namespace_packages(subpath,package) + finally: + imp.release_lock() + +def file_ns_handler(importer, path_item, packageName, module): + """Compute an ns-package subpath for a filesystem or zipfile importer""" + + subpath = os.path.join(path_item, packageName.split('.')[-1]) + normalized = _normalize_cached(subpath) + for item in module.__path__: + if _normalize_cached(item)==normalized: + break + else: + # Only return the path if it's not already there + return subpath + +register_namespace_handler(ImpWrapper,file_ns_handler) +register_namespace_handler(zipimport.zipimporter,file_ns_handler) + + +def null_ns_handler(importer, path_item, packageName, module): + return None + +register_namespace_handler(object,null_ns_handler) + + +def normalize_path(filename): + """Normalize a file/dir name for comparison purposes""" + return os.path.normcase(os.path.realpath(filename)) + +def _normalize_cached(filename,_cache={}): + try: + return _cache[filename] + except KeyError: + _cache[filename] = result = normalize_path(filename) + return result + +def _set_parent_ns(packageName): + parts = packageName.split('.') + name = parts.pop() + if parts: + parent = '.'.join(parts) + setattr(sys.modules[parent], name, sys.modules[packageName]) + + +def yield_lines(strs): + """Yield non-empty/non-comment lines of a ``basestring`` or sequence""" + if isinstance(strs,basestring): + for s in strs.splitlines(): + s = s.strip() + if s and not s.startswith('#'): # skip blank lines/comments + yield s + else: + for ss in strs: + for s in yield_lines(ss): + yield s + +LINE_END = re.compile(r"\s*(#.*)?$").match # whitespace and comment +CONTINUE = re.compile(r"\s*\\\s*(#.*)?$").match # line continuation +DISTRO = re.compile(r"\s*((\w|[-.])+)").match # Distribution or extra +VERSION = re.compile(r"\s*(<=?|>=?|==|!=)\s*((\w|[-.])+)").match # ver. info +COMMA = re.compile(r"\s*,").match # comma between items +OBRACKET = re.compile(r"\s*\[").match +CBRACKET = re.compile(r"\s*\]").match +MODULE = re.compile(r"\w+(\.\w+)*$").match +EGG_NAME = re.compile( + r"(?P[^-]+)" + r"( -(?P[^-]+) (-py(?P[^-]+) (-(?P.+))? )? )?", + re.VERBOSE | re.IGNORECASE +).match + +component_re = re.compile(r'(\d+ | [a-z]+ | \.| -)', re.VERBOSE) +replace = {'pre':'c', 'preview':'c','-':'final-','rc':'c','dev':'@'}.get + +def _parse_version_parts(s): + for part in component_re.split(s): + part = replace(part,part) + if not part or part=='.': + continue + if part[:1] in '0123456789': + yield part.zfill(8) # pad for numeric comparison + else: + yield '*'+part + + yield '*final' # ensure that alpha/beta/candidate are before final + +def parse_version(s): + """Convert a version string to a chronologically-sortable key + + This is a rough cross between distutils' StrictVersion and LooseVersion; + if you give it versions that would work with StrictVersion, then it behaves + the same; otherwise it acts like a slightly-smarter LooseVersion. It is + *possible* to create pathological version coding schemes that will fool + this parser, but they should be very rare in practice. + + The returned value will be a tuple of strings. Numeric portions of the + version are padded to 8 digits so they will compare numerically, but + without relying on how numbers compare relative to strings. Dots are + dropped, but dashes are retained. Trailing zeros between alpha segments + or dashes are suppressed, so that e.g. "2.4.0" is considered the same as + "2.4". Alphanumeric parts are lower-cased. + + The algorithm assumes that strings like "-" and any alpha string that + alphabetically follows "final" represents a "patch level". So, "2.4-1" + is assumed to be a branch or patch of "2.4", and therefore "2.4.1" is + considered newer than "2.4-1", which in turn is newer than "2.4". + + Strings like "a", "b", "c", "alpha", "beta", "candidate" and so on (that + come before "final" alphabetically) are assumed to be pre-release versions, + so that the version "2.4" is considered newer than "2.4a1". + + Finally, to handle miscellaneous cases, the strings "pre", "preview", and + "rc" are treated as if they were "c", i.e. as though they were release + candidates, and therefore are not as new as a version string that does not + contain them, and "dev" is replaced with an '@' so that it sorts lower than + than any other pre-release tag. + """ + parts = [] + for part in _parse_version_parts(s.lower()): + if part.startswith('*'): + if part<'*final': # remove '-' before a prerelease tag + while parts and parts[-1]=='*final-': parts.pop() + # remove trailing zeros from each series of numeric parts + while parts and parts[-1]=='00000000': + parts.pop() + parts.append(part) + return tuple(parts) + +class EntryPoint(object): + """Object representing an advertised importable object""" + + def __init__(self, name, module_name, attrs=(), extras=(), dist=None): + if not MODULE(module_name): + raise ValueError("Invalid module name", module_name) + self.name = name + self.module_name = module_name + self.attrs = tuple(attrs) + self.extras = Requirement.parse(("x[%s]" % ','.join(extras))).extras + self.dist = dist + + def __str__(self): + s = "%s = %s" % (self.name, self.module_name) + if self.attrs: + s += ':' + '.'.join(self.attrs) + if self.extras: + s += ' [%s]' % ','.join(self.extras) + return s + + def __repr__(self): + return "EntryPoint.parse(%r)" % str(self) + + def load(self, require=True, env=None, installer=None): + if require: self.require(env, installer) + entry = __import__(self.module_name, globals(),globals(), ['__name__']) + for attr in self.attrs: + try: + entry = getattr(entry,attr) + except AttributeError: + raise ImportError("%r has no %r attribute" % (entry,attr)) + return entry + + def require(self, env=None, installer=None): + if self.extras and not self.dist: + raise UnknownExtra("Can't require() without a distribution", self) + map(working_set.add, + working_set.resolve(self.dist.requires(self.extras),env,installer)) + + + + #@classmethod + def parse(cls, src, dist=None): + """Parse a single entry point from string `src` + + Entry point syntax follows the form:: + + name = some.module:some.attr [extra1,extra2] + + The entry name and module name are required, but the ``:attrs`` and + ``[extras]`` parts are optional + """ + try: + attrs = extras = () + name,value = src.split('=',1) + if '[' in value: + value,extras = value.split('[',1) + req = Requirement.parse("x["+extras) + if req.specs: raise ValueError + extras = req.extras + if ':' in value: + value,attrs = value.split(':',1) + if not MODULE(attrs.rstrip()): + raise ValueError + attrs = attrs.rstrip().split('.') + except ValueError: + raise ValueError( + "EntryPoint must be in 'name=module:attrs [extras]' format", + src + ) + else: + return cls(name.strip(), value.strip(), attrs, extras, dist) + + parse = classmethod(parse) + + + + + + + + + #@classmethod + def parse_group(cls, group, lines, dist=None): + """Parse an entry point group""" + if not MODULE(group): + raise ValueError("Invalid group name", group) + this = {} + for line in yield_lines(lines): + ep = cls.parse(line, dist) + if ep.name in this: + raise ValueError("Duplicate entry point", group, ep.name) + this[ep.name]=ep + return this + + parse_group = classmethod(parse_group) + + #@classmethod + def parse_map(cls, data, dist=None): + """Parse a map of entry point groups""" + if isinstance(data,dict): + data = data.items() + else: + data = split_sections(data) + maps = {} + for group, lines in data: + if group is None: + if not lines: + continue + raise ValueError("Entry points must be listed in groups") + group = group.strip() + if group in maps: + raise ValueError("Duplicate group name", group) + maps[group] = cls.parse_group(group, lines, dist) + return maps + + parse_map = classmethod(parse_map) + + + + + + +class Distribution(object): + """Wrap an actual or potential sys.path entry w/metadata""" + def __init__(self, + location=None, metadata=None, project_name=None, version=None, + py_version=PY_MAJOR, platform=None, precedence = EGG_DIST + ): + self.project_name = safe_name(project_name or 'Unknown') + if version is not None: + self._version = safe_version(version) + self.py_version = py_version + self.platform = platform + self.location = location + self.precedence = precedence + self._provider = metadata or empty_provider + + #@classmethod + def from_location(cls,location,basename,metadata=None,**kw): + project_name, version, py_version, platform = [None]*4 + basename, ext = os.path.splitext(basename) + if ext.lower() in (".egg",".egg-info"): + match = EGG_NAME(basename) + if match: + project_name, version, py_version, platform = match.group( + 'name','ver','pyver','plat' + ) + return cls( + location, metadata, project_name=project_name, version=version, + py_version=py_version, platform=platform, **kw + ) + from_location = classmethod(from_location) + + hashcmp = property( + lambda self: ( + getattr(self,'parsed_version',()), self.precedence, self.key, + -len(self.location or ''), self.location, self.py_version, + self.platform + ) + ) + def __cmp__(self, other): return cmp(self.hashcmp, other) + def __hash__(self): return hash(self.hashcmp) + + # These properties have to be lazy so that we don't have to load any + # metadata until/unless it's actually needed. (i.e., some distributions + # may not know their name or version without loading PKG-INFO) + + #@property + def key(self): + try: + return self._key + except AttributeError: + self._key = key = self.project_name.lower() + return key + key = property(key) + + #@property + def parsed_version(self): + try: + return self._parsed_version + except AttributeError: + self._parsed_version = pv = parse_version(self.version) + return pv + + parsed_version = property(parsed_version) + + #@property + def version(self): + try: + return self._version + except AttributeError: + for line in self._get_metadata('PKG-INFO'): + if line.lower().startswith('version:'): + self._version = safe_version(line.split(':',1)[1].strip()) + return self._version + else: + raise ValueError( + "Missing 'Version:' header and/or PKG-INFO file", self + ) + version = property(version) + + + + + #@property + def _dep_map(self): + try: + return self.__dep_map + except AttributeError: + dm = self.__dep_map = {None: []} + for name in 'requires.txt', 'depends.txt': + for extra,reqs in split_sections(self._get_metadata(name)): + if extra: extra = safe_extra(extra) + dm.setdefault(extra,[]).extend(parse_requirements(reqs)) + return dm + _dep_map = property(_dep_map) + + def requires(self,extras=()): + """List of Requirements needed for this distro if `extras` are used""" + dm = self._dep_map + deps = [] + deps.extend(dm.get(None,())) + for ext in extras: + try: + deps.extend(dm[safe_extra(ext)]) + except KeyError: + raise UnknownExtra( + "%s has no such extra feature %r" % (self, ext) + ) + return deps + + def _get_metadata(self,name): + if self.has_metadata(name): + for line in self.get_metadata_lines(name): + yield line + + def activate(self,path=None): + """Ensure distribution is importable on `path` (default=sys.path)""" + if path is None: path = sys.path + self.insert_on(path) + if path is sys.path: + fixup_namespace_packages(self.location) + map(declare_namespace, self._get_metadata('namespace_packages.txt')) + + + def egg_name(self): + """Return what this distribution's standard .egg filename should be""" + filename = "%s-%s-py%s" % ( + to_filename(self.project_name), to_filename(self.version), + self.py_version or PY_MAJOR + ) + + if self.platform: + filename += '-'+self.platform + return filename + + def __repr__(self): + if self.location: + return "%s (%s)" % (self,self.location) + else: + return str(self) + + def __str__(self): + try: version = getattr(self,'version',None) + except ValueError: version = None + version = version or "[unknown version]" + return "%s %s" % (self.project_name,version) + + def __getattr__(self,attr): + """Delegate all unrecognized public attributes to .metadata provider""" + if attr.startswith('_'): + raise AttributeError,attr + return getattr(self._provider, attr) + + #@classmethod + def from_filename(cls,filename,metadata=None, **kw): + return cls.from_location( + _normalize_cached(filename), os.path.basename(filename), metadata, + **kw + ) + from_filename = classmethod(from_filename) + + def as_requirement(self): + """Return a ``Requirement`` that matches this distribution exactly""" + return Requirement.parse('%s==%s' % (self.project_name, self.version)) + + def load_entry_point(self, group, name): + """Return the `name` entry point of `group` or raise ImportError""" + ep = self.get_entry_info(group,name) + if ep is None: + raise ImportError("Entry point %r not found" % ((group,name),)) + return ep.load() + + def get_entry_map(self, group=None): + """Return the entry point map for `group`, or the full entry map""" + try: + ep_map = self._ep_map + except AttributeError: + ep_map = self._ep_map = EntryPoint.parse_map( + self._get_metadata('entry_points.txt'), self + ) + if group is not None: + return ep_map.get(group,{}) + return ep_map + + def get_entry_info(self, group, name): + """Return the EntryPoint object for `group`+`name`, or ``None``""" + return self.get_entry_map(group).get(name) + + + + + + + + + + + + + + + + + + + + def insert_on(self, path, loc = None): + """Insert self.location in path before its nearest parent directory""" + + loc = loc or self.location + if not loc: + return + + if path is sys.path: + self.check_version_conflict() + + nloc = _normalize_cached(loc) + bdir = os.path.dirname(nloc) + npath= map(_normalize_cached, path) + + bp = None + for p, item in enumerate(npath): + if item==nloc: + break + elif item==bdir and self.precedence==EGG_DIST: + # if it's an .egg, give it precedence over its directory + path.insert(p, loc) + npath.insert(p, nloc) + break + else: + path.append(loc) + return + + # p is the spot where we found or inserted loc; now remove duplicates + while 1: + try: + np = npath.index(nloc, p+1) + except ValueError: + break + else: + del npath[np], path[np] + p = np # ha! + + return + + + + def check_version_conflict(self): + if self.key=='setuptools': + return # ignore the inevitable setuptools self-conflicts :( + + nsp = dict.fromkeys(self._get_metadata('namespace_packages.txt')) + loc = normalize_path(self.location) + for modname in self._get_metadata('top_level.txt'): + if (modname not in sys.modules or modname in nsp + or modname in _namespace_packages + ): + continue + + fn = getattr(sys.modules[modname], '__file__', None) + if fn and normalize_path(fn).startswith(loc): + continue + issue_warning( + "Module %s was already imported from %s, but %s is being added" + " to sys.path" % (modname, fn, self.location), + ) + + def has_version(self): + try: + self.version + except ValueError: + issue_warning("Unbuilt egg for "+repr(self)) + return False + return True + + def clone(self,**kw): + """Copy this distribution, substituting in any changed keyword args""" + for attr in ( + 'project_name', 'version', 'py_version', 'platform', 'location', + 'precedence' + ): + kw.setdefault(attr, getattr(self,attr,None)) + kw.setdefault('metadata', self._provider) + return self.__class__(**kw) + + + + + #@property + def extras(self): + return [dep for dep in self._dep_map if dep] + extras = property(extras) + + +def issue_warning(*args,**kw): + level = 1 + g = globals() + try: + # find the first stack frame that is *not* code in + # the pkg_resources module, to use for the warning + while sys._getframe(level).f_globals is g: + level += 1 + except ValueError: + pass + from warnings import warn + warn(stacklevel = level+1, *args, **kw) + + + + + + + + + + + + + + + + + + + + + + + +def parse_requirements(strs): + """Yield ``Requirement`` objects for each specification in `strs` + + `strs` must be an instance of ``basestring``, or a (possibly-nested) + iterable thereof. + """ + # create a steppable iterator, so we can handle \-continuations + lines = iter(yield_lines(strs)) + + def scan_list(ITEM,TERMINATOR,line,p,groups,item_name): + + items = [] + + while not TERMINATOR(line,p): + if CONTINUE(line,p): + try: + line = lines.next(); p = 0 + except StopIteration: + raise ValueError( + "\\ must not appear on the last nonblank line" + ) + + match = ITEM(line,p) + if not match: + raise ValueError("Expected "+item_name+" in",line,"at",line[p:]) + + items.append(match.group(*groups)) + p = match.end() + + match = COMMA(line,p) + if match: + p = match.end() # skip the comma + elif not TERMINATOR(line,p): + raise ValueError( + "Expected ',' or end-of-list in",line,"at",line[p:] + ) + + match = TERMINATOR(line,p) + if match: p = match.end() # skip the terminator, if any + return line, p, items + + for line in lines: + match = DISTRO(line) + if not match: + raise ValueError("Missing distribution spec", line) + project_name = match.group(1) + p = match.end() + extras = [] + + match = OBRACKET(line,p) + if match: + p = match.end() + line, p, extras = scan_list( + DISTRO, CBRACKET, line, p, (1,), "'extra' name" + ) + + line, p, specs = scan_list(VERSION,LINE_END,line,p,(1,2),"version spec") + specs = [(op,safe_version(val)) for op,val in specs] + yield Requirement(project_name, specs, extras) + + +def _sort_dists(dists): + tmp = [(dist.hashcmp,dist) for dist in dists] + tmp.sort() + dists[::-1] = [d for hc,d in tmp] + + + + + + + + + + + + + + + + + +class Requirement: + def __init__(self, project_name, specs, extras): + """DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!""" + self.unsafe_name, project_name = project_name, safe_name(project_name) + self.project_name, self.key = project_name, project_name.lower() + index = [(parse_version(v),state_machine[op],op,v) for op,v in specs] + index.sort() + self.specs = [(op,ver) for parsed,trans,op,ver in index] + self.index, self.extras = index, tuple(map(safe_extra,extras)) + self.hashCmp = ( + self.key, tuple([(op,parsed) for parsed,trans,op,ver in index]), + frozenset(self.extras) + ) + self.__hash = hash(self.hashCmp) + + def __str__(self): + specs = ','.join([''.join(s) for s in self.specs]) + extras = ','.join(self.extras) + if extras: extras = '[%s]' % extras + return '%s%s%s' % (self.project_name, extras, specs) + + def __eq__(self,other): + return isinstance(other,Requirement) and self.hashCmp==other.hashCmp + + def __contains__(self,item): + if isinstance(item,Distribution): + if item.key <> self.key: return False + if self.index: item = item.parsed_version # only get if we need it + elif isinstance(item,basestring): + item = parse_version(item) + last = None + for parsed,trans,op,ver in self.index: + action = trans[cmp(item,parsed)] + if action=='F': return False + elif action=='T': return True + elif action=='+': last = True + elif action=='-' or last is None: last = False + if last is None: last = True # no rules encountered + return last + + + def __hash__(self): + return self.__hash + + def __repr__(self): return "Requirement.parse(%r)" % str(self) + + #@staticmethod + def parse(s): + reqs = list(parse_requirements(s)) + if reqs: + if len(reqs)==1: + return reqs[0] + raise ValueError("Expected only one requirement", s) + raise ValueError("No requirements found", s) + + parse = staticmethod(parse) + +state_machine = { + # =>< + '<' : '--T', + '<=': 'T-T', + '>' : 'F+F', + '>=': 'T+F', + '==': 'T..', + '!=': 'F++', +} + + +def _get_mro(cls): + """Get an mro for a type or classic class""" + if not isinstance(cls,type): + class cls(cls,object): pass + return cls.__mro__[1:] + return cls.__mro__ + +def _find_adapter(registry, ob): + """Return an adapter factory for `ob` from `registry`""" + for t in _get_mro(getattr(ob, '__class__', type(ob))): + if t in registry: + return registry[t] + + +def ensure_directory(path): + """Ensure that the parent directory of `path` exists""" + dirname = os.path.dirname(path) + if not os.path.isdir(dirname): + os.makedirs(dirname) + +def split_sections(s): + """Split a string or iterable thereof into (section,content) pairs + + Each ``section`` is a stripped version of the section header ("[section]") + and each ``content`` is a list of stripped lines excluding blank lines and + comment-only lines. If there are any such lines before the first section + header, they're returned in a first ``section`` of ``None``. + """ + section = None + content = [] + for line in yield_lines(s): + if line.startswith("["): + if line.endswith("]"): + if section or content: + yield section, content + section = line[1:-1].strip() + content = [] + else: + raise ValueError("Invalid section heading", line) + else: + content.append(line) + + # wrap up last segment + yield section, content + +def _mkstemp(*args,**kw): + from tempfile import mkstemp + old_open = os.open + try: + os.open = os_open # temporarily bypass sandboxing + return mkstemp(*args,**kw) + finally: + os.open = old_open # and then put it back + + +# Set up global resource manager +_manager = ResourceManager() +def _initialize(g): + for name in dir(_manager): + if not name.startswith('_'): + g[name] = getattr(_manager, name) +_initialize(globals()) + +# Prepare the master working set and make the ``require()`` API available +working_set = WorkingSet() +try: + # Does the main program list any requirements? + from __main__ import __requires__ +except ImportError: + pass # No: just use the default working set based on sys.path +else: + # Yes: ensure the requirements are met, by prefixing sys.path if necessary + try: + working_set.require(__requires__) + except VersionConflict: # try it without defaults already on sys.path + working_set = WorkingSet([]) # by starting with an empty path + for dist in working_set.resolve( + parse_requirements(__requires__), Environment() + ): + working_set.add(dist) + for entry in sys.path: # add any missing entries from sys.path + if entry not in working_set.entries: + working_set.add_entry(entry) + sys.path[:] = working_set.entries # then copy back to sys.path + +require = working_set.require +iter_entry_points = working_set.iter_entry_points +add_activation_listener = working_set.subscribe +run_script = working_set.run_script +run_main = run_script # backward compatibility +# Activate all distributions already on sys.path, and ensure that +# all distributions added to the working set in the future (e.g. by +# calling ``require()``) will get activated as well. +add_activation_listener(lambda dist: dist.activate()) +working_set.entries=[]; map(working_set.add_entry,sys.path) # match order + diff --git a/tools/pypack/modulegraph/util.py b/tools/pypack/modulegraph/util.py new file mode 100644 index 0000000..3403c68 --- /dev/null +++ b/tools/pypack/modulegraph/util.py @@ -0,0 +1,82 @@ +import os +import imp +import sys + +def imp_find_module(name, path=None): + """ + same as imp.find_module, but handles dotted names + """ + names = name.split('.') + if path is not None: + path = [os.path.realpath(path)] + for name in names: + result = imp.find_module(name, path) + path = [result[1]] + return result + +def _check_importer_for_path(name, path_item): + try: + importer = sys.path_importer_cache[path_item] + except KeyError: + for path_hook in sys.path_hooks: + try: + importer = path_hook(path_item) + break + except ImportError: + pass + else: + importer = None + sys.path_importer_cache.setdefault(path_item, importer) + + if importer is None: + try: + return imp.find_module(name, [path_item]) + except ImportError: + return None + return importer.find_module(name) + +def imp_walk(name): + """ + yields namepart, tuple_or_importer for each path item + + raise ImportError if a name can not be found. + """ + if name in sys.builtin_module_names: + yield name, (None, None, ("", "", imp.C_BUILTIN)) + return + paths = sys.path + res = None + for namepart in name.split('.'): + for path_item in paths: + res = _check_importer_for_path(namepart, path_item) + if hasattr(res, 'find_module'): + break + else: + break + yield namepart, res + paths = [os.path.join(path_item, namepart)] + else: + return + raise ImportError('No module named %s' % (name,)) + + +def test_imp_find_module(): + import encodings.aliases + fn = imp_find_module('encodings.aliases')[1] + assert encodings.aliases.__file__.startswith(fn) + +def test_imp_walk(): + import encodings.aliases + imps = list(imp_walk('encodings.aliases')) + assert len(imps) == 2 + + assert imps[0][0] == 'encodings' + assert encodings.__file__.startswith(imps[0][1][1]) + + assert imps[1][0] == 'aliases' + assert encodings.aliases.__file__.startswith(imps[1][1][1]) + + +if __name__ == '__main__': + test_imp_find_module() + test_imp_walk() diff --git a/tools/pypack/pypack b/tools/pypack/pypack new file mode 100755 index 0000000..5bc9241 --- /dev/null +++ b/tools/pypack/pypack @@ -0,0 +1,27 @@ +#!/usr/bin/env python +# Mondrian - multiple apps in one window +# Copyright (C) 2006-2008 cmsj@tenshu.net +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 2 only. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 +# USA + +import sys +import os +root_dir = os.path.abspath(os.path.dirname(__file__)) +lib_dir = os.path.join(root_dir, 'lib') +sys.path.insert(0, lib_dir) + +from libpypack.application import Application +pypack = Application(root_dir) +pypack.run() diff --git a/usbcreator/__init__.py b/usbcreator/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/usbcreator/backends/__init__.py b/usbcreator/backends/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/usbcreator/backends/base/__init__.py b/usbcreator/backends/base/__init__.py new file mode 100644 index 0000000..d1e6f79 --- /dev/null +++ b/usbcreator/backends/base/__init__.py @@ -0,0 +1 @@ +from usbcreator.backends.base.backend import Backend diff --git a/usbcreator/backends/base/backend.py b/usbcreator/backends/base/backend.py new file mode 100644 index 0000000..c09d909 --- /dev/null +++ b/usbcreator/backends/base/backend.py @@ -0,0 +1,212 @@ +import usbcreator.install +from usbcreator import misc +import logging +import os + +def abstract(func): + def not_implemented(*args): + raise NotImplementedError('%s is not implemented by the backend.' % + func.__name__) + return not_implemented + +class Backend: + def __init__(self): + self.sources = {} + self.targets = {} + self.current_source = None + self.install_thread = None + + # Public methods. + + def add_image(self, filename): + logging.debug('Backend told to add: %s' % filename) + filename = os.path.abspath(os.path.expanduser(filename)) + if not os.path.isfile(filename): + return + if filename in self.sources: + logging.warn('Source already added.') + # TODO evand 2009-07-27: Scroll to source and select. + return + + extension = os.path.splitext(filename)[1] + # TODO evand 2009-07-25: What's the equivalent of `file` on Windows? + # Going by extension is a bit rough. + if not extension: + logging.error('File did not have an extension. ' + 'Could not determine file type.') + # TODO evand 2009-07-26: Error dialog. + return + + extension = extension.lower() + if extension == '.iso': + label = self._is_casper_cd(filename) + if label: + self.sources[filename] = { + 'device' : filename, + 'size' : os.path.getsize(filename), + 'label' : label, + 'type' : misc.SOURCE_ISO, + } + if misc.callable(self.source_added_cb): + self.source_added_cb(filename) + elif extension == '.img': + self.sources[filename] = { + 'device' : filename, + 'size' : os.path.getsize(filename), + 'label' : '', + 'type' : misc.SOURCE_IMG, + } + if misc.callable(self.source_added_cb): + self.source_added_cb(filename) + else: + logging.error('Filename extension type not supported.') + + @abstract + def detect_devices(self): + pass + + def set_current_source(self, source): + if source == None or source in self.sources: + self.current_source = source + else: + raise KeyError(source) + self.update_free() + + def get_current_source(self): + return self.current_source + + # Common helpers + + def _device_removed(self, device): + logging.debug('Device has been removed from the system: %s' % device) + if device in self.sources: + if misc.callable(self.source_removed_cb): + self.source_removed_cb(device) + self.sources.pop(device) + elif device in self.targets: + if misc.callable(self.target_removed_cb): + self.target_removed_cb(device) + self.targets.pop(device) + + # Signals. + + def source_added_cb(self, drive): + pass + + def target_added_cb(self, drive): + pass + + def source_removed_cb(self, drive): + pass + + def target_removed_cb(self, drive): + pass + + def target_changed_cb(self, udi): + pass + + def format_ended_cb(self): + pass + + def format_failed_cb(self, message): + pass + + # Installation signals. + + def success_cb(self): + pass + + def failure_cb(self, message=None): + pass + + def install_progress_cb(self, complete, remaining, speed): + pass + + def install_progress_message_cb(self, message): + pass + + def install_progress_pulse_cb(self): + pass + + def install_progress_pulse_stop_cb(self): + pass + + def retry_cb(self, message): + pass + + def update_free(self): + if not self.current_source: + return True + + for k in self.targets: + status = self.targets[k]['status'] + if status == misc.NEED_FORMAT or status == misc.CANNOT_USE: + continue + changed = self._update_free(k) + if changed and misc.callable(self.target_changed_cb): + self.target_changed_cb(k) + return True + + # Internal functions. + + def _update_free(self, k): + # TODO evand 2009-08-28: Replace this mess with inotify watches. + # Incorporate accounting for files we will delete. Defer updates if + # sufficient time has not passed since the last update. + if not self.current_source: + return False + current_source = self.sources[self.current_source] + changed = False + target = self.targets[k] + free = target['free'] + target['free'] = misc.fs_size(target['mountpoint'])[1] + if free != target['free']: + changed = True + + target = self.targets[k] + status = target['status'] + target['status'] = misc.CAN_USE + target['persist'] = 0 + if target['capacity'] < current_source['size']: + target['status'] = misc.CANNOT_USE + elif target['free'] < current_source['size']: + target['status'] = misc.NEED_SPACE + else: + target['persist'] = (target['free'] - current_source['size'] - + misc.PADDING * 1024 * 1024) + if status != target['status']: + changed = True + # casper cannot handle files larger than MAX_PERSISTENCE (4GB) + persist_max = misc.MAX_PERSISTENCE * 1024 * 1024 - 1 + if target['persist'] > persist_max: + target['persist'] = persist_max + return changed + + def install(self, source, target, persist, device=None, + allow_system_internal=False): + fastboot_mode = self.__class__.__name__ == 'FastbootBackend' + logging.debug('Starting install thread.') + self.install_thread = usbcreator.install.install( + source, target, persist, device=device, + allow_system_internal=allow_system_internal, + fastboot_mode=fastboot_mode) + # Connect signals. + self.install_thread.success = self.success_cb + self.install_thread.failure = self.failure_cb + self.install_thread.progress = self.install_progress_cb + self.install_thread.progress_message = self.install_progress_message_cb + self.install_thread.progress_pulse = self.install_progress_pulse_cb + self.install_thread.progress_pulse_stop = self.install_progress_pulse_stop_cb + self.install_thread.retry = self.retry_cb + self.install_thread.start() + + def cancel_install(self): + logging.debug('cancel_install') + if self.install_thread and self.install_thread.is_alive(): + # TODO evand 2009-07-24: Should set the timeout for join, and + # continue to process in a loop until the thread finishes, calling + # into the frontend for UI event processing then break. The + # frontend should notify the user that it's canceling by changing + # the progress message to "Canceling the installation..." and + # disabiling the cancel button. + self.install_thread.join() diff --git a/usbcreator/backends/fastboot/__init__.py b/usbcreator/backends/fastboot/__init__.py new file mode 100644 index 0000000..2266551 --- /dev/null +++ b/usbcreator/backends/fastboot/__init__.py @@ -0,0 +1 @@ +from usbcreator.backends.fastboot.backend import FastbootBackend diff --git a/usbcreator/backends/fastboot/backend.py b/usbcreator/backends/fastboot/backend.py new file mode 100644 index 0000000..6ef7f14 --- /dev/null +++ b/usbcreator/backends/fastboot/backend.py @@ -0,0 +1,68 @@ +import logging + +from gi.repository import GUdev +from gi.repository import GLib + +from usbcreator.backends.base import Backend +from usbcreator import misc + +KNOWN_IDS = { + 'ID_VENDOR_ID': ('18d1',), + 'ID_MODEL_ID': ('4e40', 'd001',), +} + +class FastbootBackend(Backend): + def __init__(self): + Backend.__init__(self) + logging.debug('FastbootBackend') + self.client = GUdev.Client(subsystems=['usb']) + + def on_uevent(self, action, device): + logging.debug('action: %s' % action) + logging.debug('device: %s' % device.get_sysfs_path()) + + for key,ids in KNOWN_IDS.items(): + result = device.get_property(key) + if result not in ids: + logging.debug('Unknown %s: %s' % (key, result)) + return + + [logging.debug('%s=%s' % (k, device.get_property(k))) for k in device.get_property_keys()] + + key = device.get_property('ID_SERIAL_SHORT') + + if action == 'add': + self.targets[key] = { + 'vendor' : device.get_property('ID_VENDOR_FROM_DATABASE'), + 'model' : device.get_property('ID_MODEL'), + 'label' : '', + 'device' : device.get_property('ID_SERIAL_SHORT'), + 'status' : misc.CAN_USE, + } + if misc.callable(self.target_added_cb): + self.target_added_cb(key) + elif action == 'remove': + self._device_removed(key) + + def detect_devices(self): + def _on_uevent(client, action, device): + self.on_uevent(action, device) + + self.client.connect('uevent', _on_uevent) + # Just in case, go over already attached devices + for device in self.client.query_by_subsystem('usb'): + self.on_uevent('add', device) + + def update_free(self): + # No progress yet. + return True + + def _is_casper_cd(self, filename): + # no cds for us + return None + + def unmount(self): + return + + def shutdown(self): + return diff --git a/usbcreator/backends/udisks/__init__.py b/usbcreator/backends/udisks/__init__.py new file mode 100644 index 0000000..561c099 --- /dev/null +++ b/usbcreator/backends/udisks/__init__.py @@ -0,0 +1 @@ +from usbcreator.backends.udisks.backend import UDisksBackend diff --git a/usbcreator/backends/udisks/backend.py b/usbcreator/backends/udisks/backend.py new file mode 100644 index 0000000..39285f8 --- /dev/null +++ b/usbcreator/backends/udisks/backend.py @@ -0,0 +1,364 @@ +import dbus +import logging +from dbus.mainloop.glib import DBusGMainLoop +from usbcreator.backends.base import Backend +from usbcreator import misc + +DISKS_IFACE = 'org.freedesktop.UDisks' +DEVICE_IFACE = 'org.freedesktop.UDisks.Device' +PROPS_IFACE = 'org.freedesktop.DBus.Properties' + +import time + +class UDisksBackend(Backend): + def __init__(self, allow_system_internal=False, bus=None, show_all=False): + Backend.__init__(self) + self.mounted_source = '' + self.formatting = [] + self.show_all = show_all + self.allow_system_internal = allow_system_internal + logging.debug('UDisksBackend') + DBusGMainLoop(set_as_default=True) + if bus: + self.bus = bus + else: + self.bus = dbus.SystemBus() + udisks_obj = self.bus.get_object(DISKS_IFACE, + '/org/freedesktop/UDisks') + self.udisks = dbus.Interface(udisks_obj, DISKS_IFACE) + self.helper = self.bus.get_object('com.ubuntu.USBCreator', + '/com/ubuntu/USBCreator') + self.helper = dbus.Interface(self.helper, 'com.ubuntu.USBCreator') + + # Adapted from udisk's test harness. + # This is why the entire backend needs to be its own thread. + def retry_mount(self, device): + '''Try to mount until it does not fail with "Busy".''' + timeout = 10 + dev_obj = self.bus.get_object(DISKS_IFACE, device) + props = dbus.Interface(dev_obj, dbus.PROPERTIES_IFACE) + device_i = dbus.Interface(dev_obj, DEVICE_IFACE) + while timeout >= 0: + if props.Get(device, 'device-is-mounted'): + break + try: + device_i.FilesystemMount('', []) + except dbus.DBusException as e: + if e._dbus_error_name != 'org.freedesktop.UDisks.Error.Busy': + raise + logging.debug('Busy.') + time.sleep(0.3) + timeout -= 1 + + # Device detection and processing functions. + + def detect_devices(self): + '''Start looking for new devices to add. Devices added will be sent to + the fronted using frontend.device_added. Devices will only be added as + they arrive if a main loop is present.''' + logging.debug('detect_devices') + self.bus.add_signal_receiver(self._device_added, + 'DeviceAdded', + DISKS_IFACE, + DISKS_IFACE, + '/org/freedesktop/UDisks') + self.bus.add_signal_receiver(self._device_changed, + 'DeviceChanged', + DISKS_IFACE, + DISKS_IFACE, + '/org/freedesktop/UDisks') + self.bus.add_signal_receiver(self._device_removed, + 'DeviceRemoved', + DISKS_IFACE, + DISKS_IFACE, + '/org/freedesktop/UDisks') + def handle_reply(res): + for r in res: + self._device_added(r) + def handle_error(err): + logging.error('Unable to enumerate devices: %s' % str(err)) + self.udisks.EnumerateDevices(reply_handler=handle_reply, + error_handler=handle_error) + + def _device_added(self, device): + logging.debug('device_added: %s' % device) + udisks_obj = self.bus.get_object(DISKS_IFACE, device) + d = dbus.Interface(udisks_obj, 'org.freedesktop.DBus.Properties') + + if d.Get(device, 'device-is-optical-disc'): + self._add_cd(device) + if (self.allow_system_internal or + not d.Get(device, 'device-is-system-internal')): + if d.Get(device, 'device-is-partition'): + self._add_partition(device) + elif d.Get(device, 'device-is-drive'): + if not d.Get(device, 'device-is-optical-disc'): + self._add_drive(device) + + def _device_changed(self, device): + udisks_obj = self.bus.get_object(DISKS_IFACE, device) + dbus.Interface(udisks_obj, 'org.freedesktop.DBus.Properties') + logging.debug('device change %s' % str(device)) + # As this will happen in the same event, the frontend wont change + # (though it needs to make sure the list is sorted, otherwise it will). + self._device_removed(device) + self._device_added(device) + + def _add_cd(self, device): + logging.debug('cd added: %s' % device) + dk = self.bus.get_object(DISKS_IFACE, device) + def get(prop): + return dk.Get(device, prop, dbus_interface=PROPS_IFACE) + label = get('id-label') + if not get('device-is-mounted'): + try: + dk.FilesystemMount('', [], dbus_interface=DEVICE_IFACE) + except dbus.DBusException as e: + logging.exception('Could not mount the device: %s' % e) + return + mount = get('device-mount-paths')[0] + device_file = get('device-file') + total, free = misc.fs_size(mount) + self.sources[device] = { + 'device' : device_file, + 'size' : total, + 'label' : label, + 'type' : misc.SOURCE_CD, + } + if misc.callable(self.source_added_cb): + self.source_added_cb(device) + + def _add_partition(self, device): + logging.debug('partition added: %s' % device) + dk = self.bus.get_object(DISKS_IFACE, device) + def get(prop): + return dk.Get(device, prop, dbus_interface=PROPS_IFACE) + + model = get('DriveModel') + vendor = get('DriveVendor') + fstype = get('id-type') + logging.debug('id-type: %s' % fstype) + if fstype == 'vfat': + status = misc.CAN_USE + else: + status = misc.NEED_FORMAT + label = get('id-label') + logging.debug('id-label: %s' % label) + parent = get('partition-slave') + if fstype == 'vfat' and not get('device-is-mounted'): + parent_i = self.bus.get_object(DISKS_IFACE, parent) + parent_i.Get(parent, 'device-file', dbus_interface=PROPS_IFACE) + if device not in self.formatting and parent not in self.formatting: + try: + self.retry_mount(device) + except: + logging.exception('Could not mount the device:') + return + mount = get('device-mount-paths') or '' + if mount: + mount = mount[0] + total, free = misc.fs_size(mount) + else: + # FIXME evand 2009-09-11: This is going to have weird side effects. + # If the device cannot be mounted, but is a vfat filesystem, that + # is. Is this really the right approach? + total = get('partition-size') + free = -1 + logging.debug('mount: %s' % mount) + device_file = get('device-file') + if total > 0: + self.targets[misc.text_type(device)] = { + 'vendor' : vendor, + 'model' : model, + 'label' : misc.text_type(label), + 'free' : free, + 'device' : misc.text_type(device_file), + 'capacity' : total, + 'status' : status, + 'mountpoint' : mount, + 'persist' : 0, + 'parent' : misc.text_type(parent), + 'formatting' : False, + } + self._update_free(misc.text_type(device)) + if self.show_all: + if misc.callable(self.target_added_cb): + self.target_added_cb(device) + else: + if status != misc.NEED_FORMAT: + if misc.text_type(parent) in self.targets: + if misc.callable(self.target_removed_cb): + self.target_removed_cb(parent) + if misc.callable(self.target_added_cb): + self.target_added_cb(device) + else: + logging.debug('not adding device: 0 byte partition.') + + def _add_drive(self, device): + logging.debug('disk added: %s' % device) + dk = self.bus.get_object(DISKS_IFACE, device) + def get(prop): + return dk.Get(device, prop, dbus_interface=PROPS_IFACE) + model = get('DriveModel') + vendor = get('DriveVendor') + device_file = get('device-file') + size = get('device-size') + if size > 0: + self.targets[misc.text_type(device)] = { + 'vendor' : vendor, + 'model' : model, + 'label' : '', + 'free' : -1, + 'device' : misc.text_type(device_file), + 'capacity' : size, + 'status' : misc.NEED_FORMAT, + 'mountpoint' : None, + 'persist' : 0, + 'parent' : None, + 'formatting' : False, + } + if misc.callable(self.target_added_cb): + if self.show_all: + self.target_added_cb(device) + else: + children = [x for x in self.targets + if self.targets[x]['parent'] == misc.text_type(device) and + self.targets[x]['status'] != misc.NEED_FORMAT] + if not children: + self.target_added_cb(device) + else: + logging.debug('not adding device: 0 byte disk.') + + # Device manipulation functions. + def _is_casper_cd(self, filename): + cmd = ['isoinfo', '-J', '-i', filename, '-x', '/.disk/info'] + try: + output = misc.popen(cmd, stderr=None) + if output: + return output + except misc.USBCreatorProcessException: + # TODO evand 2009-07-26: Error dialog. + logging.error('Could not extract .disk/info.') + return None + + def open(self, udi): + mp = self.targets[udi]['mountpoint'] + if not mp: + try: + dk = self.bus.get_object(DISKS_IFACE, udi) + mp = dk.FilesystemMount('', [], dbus_interface=DEVICE_IFACE) + except dbus.DBusException: + logging.exception('Could not mount the device:') + return '' + try: + misc.popen(['mount', '-o', 'remount,rw', mp]) + except misc.USBCreatorProcessException: + logging.exception('Could not mount the device:') + return '' + return mp + + def format_done(self, dev=None): + if dev in self.targets: + p = self.targets[dev]['parent'] + if p and p in self.targets: + dev = p + self.targets[dev]['formatting'] = False + self.formatting.remove(dev) + + def format_ended(self, dev=None): + self.format_done(dev) + self.format_ended_cb() + + def format_failed(self, message, dev=None): + self.format_done(dev) + self.format_failed_cb(message) + + def format(self, device): + try: + dk = self.bus.get_object(DISKS_IFACE, device) + dev = dk.Get(device, 'device-file', dbus_interface=PROPS_IFACE) + p = self.targets[device]['parent'] + if p and p in self.targets: + self.formatting.append(p) + self.targets[p]['formatting'] = True + else: + self.formatting.append(device) + self.targets[device]['formatting'] = True + self.helper.Format(dev, self.allow_system_internal, + # There must be a better way... + reply_handler=lambda: self.format_ended(device), + error_handler=lambda x: self.format_failed(x, device)) + except dbus.DBusException: + # Could not talk to usb-creator-helper or devkit. + logging.exception('Could not format the device:') + + def install(self, source, target, persist, allow_system_internal=False): + # TODO evand 2009-07-31: Lock source and target. + logging.debug('install source: %s' % source) + logging.debug('install target: %s' % target) + logging.debug('install persistence: %d' % persist) + + # There's no going back now... + self.bus.remove_signal_receiver(self._device_added, + 'DeviceAdded', + DISKS_IFACE, + DISKS_IFACE, + '/org/freedesktop/UDisks') + self.bus.remove_signal_receiver(self._device_changed, + 'DeviceChanged', + DISKS_IFACE, + DISKS_IFACE, + '/org/freedesktop/UDisks') + self.bus.remove_signal_receiver(self._device_removed, + 'DeviceRemoved', + DISKS_IFACE, + DISKS_IFACE, + '/org/freedesktop/UDisks') + + stype = self.sources[source]['type'] + if stype == misc.SOURCE_CD: + dk = self.bus.get_object(DISKS_IFACE, source) + def get_source(prop): + return dk.Get(source, prop, dbus_interface=PROPS_IFACE) + if not get_source('device-is-mounted'): + source = dk.FilesystemMount('', [], dbus_interface=DEVICE_IFACE) + else: + source = get_source('device-mount-paths')[0] + elif stype == misc.SOURCE_ISO: + isofile = self.sources[source]['device'] + source = self.helper.MountISO(isofile) + self.mounted_source = source + + dk = self.bus.get_object(DISKS_IFACE, target) + def get_target(prop): + return dk.Get(target, prop, dbus_interface=PROPS_IFACE) + dev = get_target('device-file') + if stype == misc.SOURCE_IMG: + target = None + self.helper.Unmount(target) + else: + if not get_target('device-is-mounted'): + target = dk.FilesystemMount('', [], dbus_interface=DEVICE_IFACE) + else: + target = get_target('device-mount-paths')[0] + self.helper.RemountRW(dev) + Backend.install(self, source, target, persist, device=dev, + allow_system_internal=allow_system_internal) + + def cancel_install(self): + Backend.cancel_install(self) + self.unmount() + + def unmount(self): + try: + if self.mounted_source: + self.helper.UnmountFile(self.mounted_source) + except: + # TODO let the user know via the frontend. + logging.exception('Could not unmount the source ISO.') + + def shutdown(self): + try: + self.helper.Shutdown() + except dbus.DBusException: + logging.exception('Could not shut down the dbus service.') diff --git a/usbcreator/backends/windows/__init__.py b/usbcreator/backends/windows/__init__.py new file mode 100644 index 0000000..2707f19 --- /dev/null +++ b/usbcreator/backends/windows/__init__.py @@ -0,0 +1 @@ +from usbcreator.backends.windows.backend import WindowsBackend diff --git a/usbcreator/backends/windows/backend.py b/usbcreator/backends/windows/backend.py new file mode 100644 index 0000000..f52b57f --- /dev/null +++ b/usbcreator/backends/windows/backend.py @@ -0,0 +1,194 @@ +# Copyright (C) 2009 Canonical Ltd. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from usbcreator.backends.base import Backend +from usbcreator import misc +import os +import ctypes +import ctypes.wintypes +import logging + +DRIVE_TYPES = ['unknown', + 'no_root_dir', + 'removeable', + 'localdisk', + 'remotedisk', + 'cdrom', + 'ramdisk'] + +def get_device_num_for_letter(source): + class STORAGE_DEVICE_NUMBER(ctypes.Structure): + _fields_ = [("DeviceType", ctypes.wintypes.DWORD), + ("DeviceNumber", ctypes.wintypes.ULONG), + ("PartitionNumber", ctypes.wintypes.ULONG)] + + GENERIC_READ = (-2147483648) + FILE_SHARE_READ = 1 + OPEN_EXISTING = 3 + INVALID_HANDLE_VALUE = 4294967295L + NULL = 0 + IOCTL_STORAGE_GET_DEVICE_NUMBER = 0x2D1080 + + CreateFileW = ctypes.windll.kernel32.CreateFileW + DeviceIoControl = ctypes.windll.kernel32.DeviceIoControl + if not os.path.isfile(source): + # Strip the last character from the source (\). + source = os.path.join('\\\\.\\', source[:2]) + source_h = CreateFileW(misc.text_type(source), GENERIC_READ, FILE_SHARE_READ, + NULL, OPEN_EXISTING, 0, NULL) + if source_h == INVALID_HANDLE_VALUE: + logging.error('Invalid handle.') + return -1 + num = STORAGE_DEVICE_NUMBER() + c = ctypes.wintypes.DWORD() + if not DeviceIoControl(source_h, IOCTL_STORAGE_GET_DEVICE_NUMBER, NULL, 0, + ctypes.byref(num), ctypes.sizeof(num), + ctypes.byref(c), NULL): + logging.error('IOCTL_STORAGE_GET_DEVICE_NUMBER failed.') + return -1 + logging.debug('Device properties for %s: type %d, device %d, partition %d' + % (source, num.DeviceType, num.DeviceNumber, + num.PartitionNumber)) + ctypes.windll.kernel32.CloseHandle(source_h) + assert num.DeviceNumber != 0, 'Was going to return the first disk.' + return num.DeviceNumber + +class WindowsBackend(Backend): + def __init__(self): + Backend.__init__(self) + + # Device processing. + + def detect_devices(self): + logical_drives = ctypes.windll.kernel32.GetLogicalDrives() + + for i in range(26): + if (logical_drives >> i) & 0x01: + drive = u'%s:\\' % chr(i + 65) + self._device_added(drive) + + def _device_added(self, drive): + drive_buf = ctypes.create_unicode_buffer(512) + fs_buf = ctypes.create_unicode_buffer(512) + vol_i = ctypes.windll.kernel32.GetVolumeInformationW + drive_type = ctypes.windll.kernel32.GetDriveTypeW(drive) + if vol_i(drive, drive_buf, 512, None, None, None, fs_buf, 512): + volume = drive_buf.value + fs = fs_buf.value + else: + logging.error('Could not get volume information for %s' % drive) + return + + if drive_type > len(DRIVE_TYPES): + drive_type = 0 + drive_type = DRIVE_TYPES[drive_type] + + if drive_type == 'cdrom': + if os.path.exists(os.path.join(drive, '.disk/info')): + self.sources[drive] = { + 'device' : drive, + 'size' : misc.fs_size(drive)[0], + 'label' : volume, + 'type' : misc.SOURCE_CD, + } + if misc.callable(self.source_added_cb): + self.source_added_cb(drive) + elif drive_type == 'removeable': # and fs == u'fat32': + tot, free = misc.fs_size(drive) + self.targets[drive] = { + 'capacity' : tot, + 'free' : free, + 'device' : drive, + # FIXME evand 2009-07-16: How does Windows get the volume name? + # GetVolumeInformation returns NULL here. + 'label' : '', + 'mountpoint' : drive, + 'status' : misc.CAN_USE, + } + if misc.callable(self.target_added_cb): + self.target_added_cb(drive) + else: + tot, free = misc.fs_size(drive) + logging.debug('Not adding %s (%s %s %s volume, %d total bytes, ' + '%d bytes free)' % + (drive, volume, drive_type, fs, tot, free)) + + def format(self, drive): + assert drive == 'E:\\' + assert drive in self.targets + # TODO evand 2009-07-16: Windows does not provide an API for + # formatting. It offers a method to bring up the format dialog, but + # that will not work as there is no way to force it to the FAT32 + # filesystem. + # One can format a volume using WMI, but that would pull in a + # dependency on Mark Hammond's pywin32. + + def _is_casper_cd(self, filename): + '''If this is a casper-based CD, return the CD label.''' + # XXX evand 2009-07-25: Using 7zip until cdkit gets mingw support. + cmd = ['7z', 'x', filename, '.disk/info', '-so'] + try: + output = misc.popen(cmd, stderr=None) + if output: + return output + except misc.USBCreatorProcessException: + # TODO evand 2009-07-26: Error dialog. + logging.error('Could not extract .disk/info.') + return None + + def install(self, source, target, persist): + target_dev = None + source_type = self.sources[source]['type'] + if source_type == misc.SOURCE_IMG: + target_dev = get_device_num_for_letter(target) + if target_dev < 1: + logging.error('Could not determine the disk number. Got %d.' % + target_dev) + # TODO evand 2009-08-28: Fail. + return + target_dev = '\\\\?\\Device\\Hardisk%d\\Partition0' % target_dev + Backend.install(self, source, target, persist, device=target_dev) + +#def dd(source, target): +# import ctypes +# import ctypes.wintypes +# GENERIC_READ = (-2147483648) +# GENERIC_WRITE = (1073741824) +# FILE_SHARE_READ = 1 +# CREATE_ALWAYS = 2 +# OPEN_EXISTING = 3 +# FILE_ATTRIBUTE_NORMAL = 128 +# INVALID_HANDLE_VALUE = 4294967295L +# FSCTL_LOCK_VOLUME = 589848 +# NULL = 0 +# +# CreateFileW = ctypes.windll.kernel32.CreateFileW +# DeviceIoControl = ctypes.windll.kernel32.DeviceIoControl +# if not os.path.isfile(source): +# source = os.path.join('\\\\.', source) +# source_h = CreateFileW(misc.text_type(source), GENERIC_READ, FILE_SHARE_READ, +# NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL) +# target = os.path.join('\\\\.', target) +# target_h = CreateFileW(misc.text_type(source), GENERIC_WRITE, 0, +# NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL) +# if source_h == INVALID_HANDLE_VALUE or target_h == INVALID_HANDLE_VALUE: +# print('Invalid handle.') +# return +# # Lock. +# bytes_returned = ctypes.wintypes.DWORD() +# res = DeviceIoControl(target_h, FSCTL_LOCK_VOLUME, NULL, 0, NULL, 0, +# byref(bytes_returned), NULL) +# # Unmount. +# # ... +# # Unlock. diff --git a/usbcreator/frontends/__init__.py b/usbcreator/frontends/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/usbcreator/frontends/base/__init__.py b/usbcreator/frontends/base/__init__.py new file mode 100644 index 0000000..0f298d3 --- /dev/null +++ b/usbcreator/frontends/base/__init__.py @@ -0,0 +1 @@ +from usbcreator.frontends.base.frontend import Frontend diff --git a/usbcreator/frontends/base/frontend.py b/usbcreator/frontends/base/frontend.py new file mode 100644 index 0000000..0f9fe9b --- /dev/null +++ b/usbcreator/frontends/base/frontend.py @@ -0,0 +1,2 @@ +class Frontend: + pass diff --git a/usbcreator/frontends/gtk/__init__.py b/usbcreator/frontends/gtk/__init__.py new file mode 100644 index 0000000..1d55b99 --- /dev/null +++ b/usbcreator/frontends/gtk/__init__.py @@ -0,0 +1 @@ +from usbcreator.frontends.gtk.frontend import GtkFrontend diff --git a/usbcreator/frontends/gtk/frontend.py b/usbcreator/frontends/gtk/frontend.py new file mode 100644 index 0000000..2081f80 --- /dev/null +++ b/usbcreator/frontends/gtk/frontend.py @@ -0,0 +1,817 @@ +# Copyright (C) 2008-2009 Canonical Ltd. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import subprocess +import os + +import gettext +import logging +from gi.repository import GObject +from gi.repository import GLib +from gi.repository import Gio +from gi.repository import Gdk +from gi.repository import Pango +from gi.repository import Gtk + +from usbcreator.frontends.base import Frontend +from usbcreator.frontends.gtk.unitysupport import UnitySupport +from usbcreator import misc + +if 'USBCREATOR_LOCAL' in os.environ: + ui_path = os.path.join(os.getcwd(), 'gui/usbcreator-gtk.ui') + eula_path = os.path.join(os.getcwd(), 'gui/ubuntu-nexus7-USAGE-NOTICE-en.txt') +else: + ui_path = '/usr/share/usb-creator/usbcreator-gtk.ui' + eula_path = '/usr/share/usb-creator/ubuntu-nexus7-USAGE-NOTICE-en.txt' + +GObject.threads_init() +Gdk.threads_init() + +def thread_wrap(func): + '''Decorator for functions that will be called by another thread.''' + def wrap(*args): + Gdk.threads_enter() + try: + return func(*args) + finally: + Gdk.threads_leave() + return wrap + +class GtkFrontend(Frontend): + @classmethod + def startup_failure(cls, message): + dialog = Gtk.MessageDialog(parent=None, flags=0, message_type=Gtk.MessageType.ERROR, + buttons=Gtk.ButtonsType.CLOSE, message_format=message) + dialog.run() + dialog.destroy() + + @classmethod + def DBusMainLoop(cls): + from dbus.mainloop.glib import DBusGMainLoop + DBusGMainLoop(set_as_default=True) + + def __init__(self, backend, img=None, persistent=True, + allow_system_internal=False): + + self.allow_system_internal = allow_system_internal + self.fastboot_mode = backend.__class__.__name__ == 'FastbootBackend' + + self.all_widgets = set() + + self.builder = Gtk.Builder() + self.builder.set_translation_domain('usbcreator') + self.builder.add_from_file(ui_path) + # A cache of the icon names and display names for the individual + # devices. + self.icons = {} + self.names = {} + self.pretty_names = {} + + for widget in self.builder.get_objects(): + # Taken from ubiquity: + # We generally want labels to be selectable so that people can + # easily report problems in them + # (https://launchpad.net/bugs/41618), but GTK+ likes to put + # selectable labels in the focus chain, and I can't seem to turn + # this off in glade and have it stick. Accordingly, make sure + # labels are unfocusable here. + if isinstance(widget, Gtk.Label): + widget.set_property('can-focus', False) + if issubclass(type(widget), Gtk.Widget): + self.all_widgets.add(widget) + widget.set_name(Gtk.Buildable.get_name(widget)) + setattr(self, Gtk.Widget.get_name(widget), widget) + + Gtk.Window.set_default_icon_name('usb-creator-gtk') + + # Connect signals to widgets + self.builder.connect_signals (self) + self.cancelbutton.connect('clicked', lambda x: self.warning_dialog.hide()) + self.finished_exit.connect('clicked', lambda x: self.finished_dialog.hide()) + self.failed_exit.connect('clicked', lambda x: self.failed_exit.hide()) + self.progress_cancel_button.connect('clicked', lambda x: self.warning_dialog.show()) + + def format_value(scale, value): + return misc.format_mb_size(value) + self.persist_value.set_adjustment( + Gtk.Adjustment.new(0, 0, 100, 1, 10, 0)) + self.persist_value.connect('format-value', format_value) + + # Connect to backend signals. + self.backend = backend + self.backend.source_added_cb = self.add_source + self.backend.target_added_cb = self.add_target + self.backend.source_removed_cb = self.remove_source + self.backend.target_removed_cb = self.remove_target + self.backend.failure_cb = self.failure + self.backend.success_cb = self.success + self.backend.install_progress_cb = self.progress + self.backend.install_progress_message_cb = self.progress_message + self.backend.install_progress_pulse_cb = self.progress_pulse + self.backend.install_progress_pulse_stop_cb = self.progress_pulse_stop + self.backend.retry_cb = self.retry + self.backend.target_changed_cb = self.update_target + self.backend.format_failed_cb = self.format_failed + + # Pulse state. + self.pulsing = False + + # Hide erase in fastboot mode + if self.fastboot_mode: + self.format_dest.hide() + self.intro_label.set_text(_('To run Ubuntu on a portable device, it needs to be set up first.')) + self.label2.set_text(_('Source disc image (.img):')) + self.label3.set_text(_('Target device:')) + self.window.set_title(_('Ubuntu Core Installer')) + self.button_install.set_label(_('Install Ubuntu Core')) + self.button_help.set_label(_('Legal')) + self.button_help.connect('clicked', self.show_eula) + self.eula_dialog.add_buttons( + Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, + Gtk.STOCK_OK, Gtk.ResponseType.OK + ) + with open(eula_path, 'r') as f: + text = ''.join(f.readlines()) + self.eula_text.get_buffer().set_text(text) + else: + # we currently do not have help + self.button_help.hide() + #self.button_help.connect('clicked', lambda x: Gtk.show_uri(self.button_help.get_screen(), + # 'ghelp:usb-creator', + # Gtk.get_current_event_time())) + + self.setup_sources_treeview() + self.setup_targets_treeview() + self.persist_vbox.set_sensitive(False) + + # Pre-populate the source view. + if img is not None: + self.backend.add_image(img) + self.source_vbox.hide() + + for search_dir_id in [GLib.UserDirectory.DIRECTORY_DOWNLOAD, GLib.UserDirectory.DIRECTORY_DESKTOP]: + search_dir = GLib.get_user_special_dir(search_dir_id) + if search_dir and os.path.isdir(search_dir): + # TODO evand 2009-10-22: File type detection based on file(1). + for fname in os.listdir(search_dir): + if fname.endswith('.iso') or fname.endswith('.img'): + self.backend.add_image(os.path.join(search_dir, fname)) + + # Sets first pre-populated image as current in the backend + self.selection_changed_source(self.source_treeview.get_selection()) + + if not persistent: + self.persist_disabled.set_active(True) + self.persist_vbox.hide() + + self.window.show() + selection = self.source_treeview.get_selection() + selection.connect('changed', self.selection_changed_source) + selection = self.dest_treeview.get_selection() + selection.connect('changed', self.selection_changed_target) + + self.backend.detect_devices() + # FIXME: instead of passing parent we really should just send signals + self.unity = UnitySupport(parent=self) + self.update_loop = self.add_timeout(2000, self.backend.update_free) + Gdk.threads_enter() + try: + Gtk.main() + except KeyboardInterrupt: + self.quit() + Gdk.threads_leave() + + def add_timeout(self, interval, func, *args): + '''Add a new timer for function 'func' with optional arguments. Wraps a + similar gobject call timeout_add.''' + + timer = GLib.timeout_add(interval, func, *args) + + return timer + def delete_timeout(self, timer): + '''Remove the specified timer. Wraps gobject source_remove call.''' + + return GLib.source_remove(timer) + + def add_source(self, source): + logging.debug('add_source: %s' % str(source)) + _append_to_list_and_select(self.source_treeview, [source], + force_selection=False) + + # XXX evand 2009-09-17: Find a label and icon for the device, if we + # don't already have one. This will go away when the code for the + # presentation-name and presentation-icon properties in udisks + # is written. + t = self.backend.sources[source]['type'] + l = self.backend.sources[source]['label'] + d = self.backend.sources[source]['device'] + if not (t == misc.SOURCE_ISO or t == misc.SOURCE_IMG): + name, icon = self.get_gnome_drive(d) + if icon: + self.icons[source] = icon + if not l and name: + self.names[source] = name + + def add_target(self, target): + logging.debug('add_target: %s' % str(target)) + # use str() here, since it is originally a DBus.ObjectPath object + _append_to_list_and_select(self.dest_treeview, [str(target)], + force_selection=False) + + # XXX evand 2009-09-17: Find a label and icon for the device. + v = self.backend.targets[target]['vendor'] + m = self.backend.targets[target]['model'] + d = self.backend.targets[target]['device'] + l = self.backend.targets[target]['label'] + name, icon = self.get_gnome_drive(d) + if icon: + self.icons[target] = icon + if not l and name: + self.names[target] = name + self.pretty_names[target] = "%s %s (%s)" % (v, m, misc.text_type(d)) + + def remove_source(self, source): + model = self.source_treeview.get_model() + iterator = model.get_iter_first() + to_delete = None + while iterator is not None: + if model.get_value(iterator, 0) == source: + to_delete = iterator + iterator = model.iter_next(iterator) + if to_delete is not None: + model.remove(to_delete) + + if source in self.names: + self.names.pop(source) + if source in self.icons: + self.icons.pop(source) + + sel = self.source_treeview.get_selection() + m, i = sel.get_selected() + + def remove_target(self, target): + model = self.dest_treeview.get_model() + iterator = model.get_iter_first() + to_delete = None + while iterator is not None: + if model.get_value(iterator, 0) == target: + to_delete = iterator + iterator = model.iter_next(iterator) + if to_delete is not None: + model.remove(to_delete) + + if target in self.names: + self.names.pop(target) + if target in self.icons: + self.icons.pop(target) + if target in self.pretty_names: + self.pretty_names.pop(target) + + sel = self.dest_treeview.get_selection() + m, i = sel.get_selected() + + def get_source(self): + '''Returns the UDI of the selected source image.''' + sel = self.source_treeview.get_selection() + m, i = sel.get_selected() + if i: + return m[i][0] + else: + logging.debug('No source selected.') + return '' + + def get_target(self): + '''Returns the UDI of the selected target disk or partition.''' + sel = self.dest_treeview.get_selection() + m, i = sel.get_selected() + if i: + return m[i][0] + else: + logging.debug('No target selected.') + return '' + + def get_persistence(self): + if self.persist_enabled.get_active() and \ + self.persist_enabled.get_state() != Gtk.StateType.INSENSITIVE: + val = self.persist_value.get_value() + return int(val) + else: + return 0 + + def get_gnome_drive(self, dev): + try: + monitor = Gio.VolumeMonitor.get() + for drive in monitor.get_volumes(): + if 'unix-device' in drive.enumerate_identifiers(): + if drive.get_identifier('unix-device') == dev: + name = drive.get_name() + icon = drive.get_icon().get_names()[0] + return (name, icon) + for drive in monitor.get_connected_drives(): + if 'unix-device' in drive.enumerate_identifiers(): + if drive.get_identifier('unix-device') == dev: + name = drive.get_name() + icon = drive.get_icon().get_names()[0] + return (name, icon) + except Exception: + logging.exception('Could not determine GNOME drive:') + return ('', '') + + def setup_sources_treeview(self): + def column_data_func(layout, cell, model, iterator, column): + if not self.backend: + return + udi = model[iterator][0] + dev = self.backend.sources[udi] + if column == 0: + if udi in self.names: + cell.set_property('text', self.names[udi]) + else: + cell.set_property('text', dev['device']) + elif column == 1: + cell.set_property('text', dev['label']) + elif column == 2: + cell.set_property('text', misc.format_size(dev['size'])) + + def pixbuf_data_func(column, cell, model, iterator, data): + if not self.backend: + return + udi = model[iterator][0] + dev = self.backend.sources[udi] + source_type = dev['type'] + if source_type == misc.SOURCE_ISO: + cell.set_property('stock-id', Gtk.STOCK_CDROM) + elif source_type == misc.SOURCE_IMG: + cell.set_property('stock-id', Gtk.STOCK_HARDDISK) + else: + if udi in self.icons: + cell.set_property('icon-name', self.icons[udi]) + else: + cell.set_property('stock-id', None) + + list_store = Gtk.ListStore(str) + self.source_treeview.set_model(list_store) + + cell_name = Gtk.CellRendererText() + cell_name.set_property('ellipsize', Pango.EllipsizeMode.END) + cell_pixbuf = Gtk.CellRendererPixbuf() + column_name = Gtk.TreeViewColumn(_('CD-Drive/Image')) + if self.fastboot_mode: + column_name = Gtk.TreeViewColumn(_('Image')) + column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) + column_name.set_resizable(True) + column_name.set_expand(True) + column_name.set_min_width(75) + column_name.pack_start(cell_pixbuf, False) + column_name.pack_start(cell_name, True) + self.source_treeview.append_column(column_name) + column_name.set_cell_data_func(cell_name, column_data_func, 0) + column_name.set_cell_data_func(cell_pixbuf, pixbuf_data_func, None) + + if not self.fastboot_mode: + cell_version = Gtk.CellRendererText() + cell_version.set_property('ellipsize', Pango.EllipsizeMode.END) + column_name = Gtk.TreeViewColumn(_('OS Version'), cell_version) + column_name.set_cell_data_func(cell_version, column_data_func, 1) + column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) + column_name.set_resizable(True) + column_name.set_expand(True) + column_name.set_min_width(75) + self.source_treeview.append_column(column_name) + + cell_size = Gtk.CellRendererText() + cell_size.set_property('ellipsize', Pango.EllipsizeMode.END) + column_name = Gtk.TreeViewColumn(_('Size'), cell_size) + column_name.set_cell_data_func(cell_size, column_data_func, 2) + column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) + column_name.set_resizable(True) + column_name.set_expand(False) + column_name.set_min_width(75) + self.source_treeview.append_column(column_name) + + # Drag and drop support. + # FIXME evand 2009-04-28: Anything can be dropped on the source + # treeview. Ideally, the user should only be able to drop ISO and IMG + # files. + + def motion_cb(wid, context, x, y, time): + context.drag_status(Gdk.DragAction.COPY, time) + return True + + def drop_cb(w, context, x, y, time): + target_list = w.drag_dest_get_target_list() + target = w.drag_dest_find_target(context, target_list) + w.drag_get_data(context, target) + context.finish(True, True) + return True + + def data_received_cb(w, context, x, y, selection, target_type, timestamp): + # FIXME evand 2009-04-28: Use the GNOME VFS? Test with a sshfs + # nautilus window. + file = selection.data.strip('\r\n\x00') + if file.startswith('file://'): + file = file[7:] + elif file.startswith('file:'): + file = file[5:] + self.backend.add_image(file) + + self.source_treeview.drag_dest_set(Gtk.DestDefaults.ALL, + [Gtk.TargetEntry.new('text/uri-list', 0, 600)], Gdk.DragAction.COPY) + self.source_treeview.connect('drag_motion', motion_cb) + self.source_treeview.connect('drag_drop', drop_cb) + self.source_treeview.connect('drag-data-received', data_received_cb) + + def update_target(self, udi): + m = self.dest_treeview.get_model() + iterator = m.get_iter_first() + # Update the warning / error icon in the treeview. + while iterator is not None: + if m.get_value(iterator, 0) == udi: + m.row_changed(m.get_path(iterator), iterator) + break + iterator = m.iter_next(iterator) + + target = self.backend.targets[udi] + + # Update persistence maximum value. + if not self.fastboot_mode: + self.persist_vbox.set_sensitive(False) + self.persist_enabled_vbox.set_sensitive(False) + persist_mb = target['persist'] / 1024 / 1024 + if persist_mb > misc.MIN_PERSISTENCE: + self.persist_vbox.set_sensitive(True) + self.persist_enabled_vbox.set_sensitive(True) + self.persist_value.set_range(misc.MIN_PERSISTENCE, persist_mb) + self.persist_value.set_value(misc.MIN_PERSISTENCE) + + # Update install button state. + status = target['status'] + source = self.backend.get_current_source() + if not source: + self.button_install.set_sensitive(False) + return + if status == misc.CAN_USE: + self.button_install.set_sensitive(True) + else: + self.button_install.set_sensitive(False) + # Update the destination status message. + self.open_dest.hide() + if status == misc.CANNOT_USE: + msg = _('The device is not large enough to hold this image.') + elif status == misc.NEED_SPACE: + msg = _('There is not enough free space for this image.') + self.open_dest.show() + else: + msg = '' + self.dest_status.set_text(msg) + + def selection_changed_source(self, selection): + model, iterator = selection.get_selected() + if not iterator: + return + udi = model[iterator][0] + self.backend.set_current_source(udi) + self.selection_changed_target(self.dest_treeview.get_selection()) + + def selection_changed_target(self, selection): + '''The selected partition has changed and the bounds on the persistence + slider need to be changed, or the slider needs to be disabled, to + reflect the amount of free space on the partition.''' + + model, iterator = selection.get_selected() + if not iterator: + return + udi = model[iterator][0] + if udi: + self.update_target(udi) + + if self.fastboot_mode: + return + + dev = self.backend.targets[udi] + p = dev['parent'] + if p and p in self.backend.targets: + dev = self.backend.targets[p] + if dev['formatting']: + self.format_dest.set_sensitive(False) + self.format_dest_label.set_text(_('Erasing...')) + self.format_dest_spinner.show() + self.format_dest_spinner.start() + else: + self.format_dest.set_sensitive(True) + self.format_dest_label.set_text(_('Erase Disk')) + self.format_dest_spinner.hide() + self.format_dest_spinner.stop() + + def setup_targets_treeview(self): + def column_data_func(layout, cell, model, iterator, column): + if not self.backend: + return + udi = model[iterator][0] + dev = self.backend.targets[udi] + + if column == 0: + if udi in self.pretty_names: + cell.set_property('text', self.pretty_names[udi]) + else: + cell.set_property('text', dev['device']) + elif column == 1: + if udi in self.names: + cell.set_property('text', self.names[udi]) + else: + cell.set_property('text', dev['label']) + elif column == 2: + cell.set_property('text', misc.format_size(dev['capacity'])) + elif column == 3: + free = dev['free'] + if free >= 0: + cell.set_property('text', misc.format_size(free)) + else: + cell.set_property('text', '') + + def pixbuf_data_func(column, cell, model, iterator, data): + if not self.backend: + return + udi = model[iterator][0] + dev = self.backend.targets[udi] + status = dev['status'] + + if status == misc.NEED_SPACE: + cell.set_property('stock-id', Gtk.STOCK_DIALOG_WARNING) + elif status == misc.CANNOT_USE: + # TODO evand 2009-05-05: Implement disabled rows as a + # replacement? + cell.set_property('stock-id', Gtk.STOCK_DIALOG_ERROR) + else: + if udi in self.icons: + cell.set_property('icon-name', self.icons[udi]) + else: + cell.set_property('stock-id', None) + + list_store = Gtk.ListStore(GObject.TYPE_STRING) + list_store.set_sort_column_id(0, Gtk.SortType.ASCENDING) + self.dest_treeview.set_model(list_store) + + column_name = Gtk.TreeViewColumn() + column_name.set_title(_('Device')) + cell_name = Gtk.CellRendererText() + cell_name.set_property('ellipsize', Pango.EllipsizeMode.END) + cell_pixbuf = Gtk.CellRendererPixbuf() + column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) + column_name.set_resizable(True) + column_name.set_expand(True) + column_name.set_min_width(75) + column_name.pack_start(cell_pixbuf, False) + column_name.pack_start(cell_name, True) + self.dest_treeview.append_column(column_name) + column_name.set_cell_data_func(cell_name, column_data_func, 0) + column_name.set_cell_data_func(cell_pixbuf, pixbuf_data_func, None) + + if not self.fastboot_mode: + cell_name = Gtk.CellRendererText() + cell_name.set_property('ellipsize', Pango.EllipsizeMode.END) + column_name = Gtk.TreeViewColumn(_('Label'), cell_name) + column_name.set_cell_data_func(cell_name, column_data_func, 1) + column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) + column_name.set_resizable(True) + column_name.set_expand(True) + column_name.set_min_width(75) + self.dest_treeview.append_column(column_name) + + cell_capacity = Gtk.CellRendererText() + cell_capacity.set_property('ellipsize', Pango.EllipsizeMode.END) + column_name = Gtk.TreeViewColumn(_('Capacity'), cell_capacity) + column_name.set_cell_data_func(cell_capacity, column_data_func, 2) + column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) + column_name.set_resizable(True) + column_name.set_expand(False) + column_name.set_min_width(75) + self.dest_treeview.append_column(column_name) + + cell_free = Gtk.CellRendererText() + cell_free.set_property('ellipsize', Pango.EllipsizeMode.END) + column_name = Gtk.TreeViewColumn(_('Free Space'), cell_free) + column_name.set_cell_data_func(cell_free, column_data_func, 3) + column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE) + column_name.set_resizable(True) + column_name.set_expand(False) + column_name.set_min_width(75) + self.dest_treeview.append_column(column_name) + + def add_file_source_dialog(self, *args): + filename = '' + chooser = Gtk.FileChooserDialog(title=None,action=Gtk.FileChooserAction.OPEN, + buttons=(Gtk.STOCK_CANCEL,Gtk.ResponseType.CANCEL,Gtk.STOCK_OPEN,Gtk.ResponseType.OK)) + def _add_filter(p, n): + filter = Gtk.FileFilter() + filter.add_pattern(p) + filter.set_name(n) + chooser.add_filter(filter) + + if not self.fastboot_mode: + _add_filter('*.iso', _('CD Images')) + _add_filter('*.img', _('Disk Images')) + + folder = os.path.expanduser('~') + chooser.set_current_folder(folder) + response = chooser.run() + if response == Gtk.ResponseType.OK: + filename = chooser.get_filename() + chooser.destroy() + self.backend.add_image(filename) + elif response == Gtk.ResponseType.CANCEL: + chooser.destroy() + + def install(self, widget): + source = self.get_source() + target = self.get_target() + persist = self.get_persistence() + if self.fastboot_mode and not misc.check_eula(): + if self.show_eula() == Gtk.ResponseType.CANCEL: + return + # TODO evand 2009-07-31: Make these the default values in the + # GtkBuilder file. + starting_up = _('Starting up...') + self.progress_title.set_markup('' + starting_up + '') + self.progress_info.set_text('') + if source and target: + self.install_window.show() + self.window.hide() + self.unity.show_progress() + self.delete_timeout(self.update_loop) + try: + self.backend.install(source, target, persist, + allow_system_internal=self.allow_system_internal) + except: + self._fail() + + @thread_wrap + def progress(self, complete, remaining, speed): + if self.pulsing: + self.progress_info.set_text('') + return + # Ahem. + if complete > 100: + complete = 100 + self.progress_bar.set_fraction(complete / 100.0) + self.unity.set_progress(complete / 100.0) + if remaining and speed: + # TODO evand 2009-07-24: Could use a time formatting function + # like our human size function. + mins = int(remaining / 60) + secs = int(remaining % 60) + text = _('%d%% complete (%dm%ss remaining)') % \ + (complete, mins, secs) + self.progress_info.set_text(text) + else: + self.progress_info.set_text(_('%d%% complete') % complete) + + @thread_wrap + def progress_message(self, message): + self.progress_title.set_markup('' + message + '') + + @thread_wrap + def progress_pulse(self): + def pulse(): + self.progress_bar.pulse() + return True + self.pulsing = self.add_timeout(100, pulse) + + @thread_wrap + def progress_pulse_stop(self): + if self.pulsing: + self.delete_timeout(self.pulsing) + self.pulsing = False + + @thread_wrap + def retry(self, message): + retry_dialog = Gtk.MessageDialog(parent=self.window, flags=Gtk.DialogFlags.MODAL | + Gtk.DialogFlags.DESTROY_WITH_PARENT, + message_type=Gtk.MessageType.ERROR, buttons=Gtk.ButtonsType.YES_NO, + message_format=message) + response = retry_dialog.run() + retry_dialog.destroy() + return response == Gtk.ResponseType.YES + + def show_eula(self, unused=None): + response = self.eula_dialog.run() + if response == Gtk.ResponseType.OK: + misc.check_eula(True) + self.eula_dialog.hide() + return response + + def quit(self, *args): + self.backend.cancel_install() + if Gtk.main_level() > 0: + Gtk.main_quit() + + @thread_wrap + def failure(self, message=None): + self._fail(message) + + def _fail(self, message=None): + logging.exception('Installation failed.') + # FIXME: evand 2009-07-28: Do we need this? + self.warning_dialog.hide() + self.install_window.hide() + self.unity.show_progress(False) + if not message: + message = _('Installation failed.') + self.failed_dialog_label.set_text(message) + self.failed_dialog.run() + Gtk.main_quit() + + @thread_wrap + def success(self): + self.backend.unmount() + self.warning_dialog.hide() + self.install_window.hide() + self.unity.show_progress(False) + try: + import dbus + bus = dbus.SystemBus() + obj = bus.get_object('com.ubuntu.USBCreator', + '/com/ubuntu/USBCreator') + if obj.KVMOk(dbus_interface='com.ubuntu.USBCreator', + timeout=misc.MAX_DBUS_TIMEOUT): + self.kvm_test.show() + def go(*args): + obj.KVMTest(self.get_target(), os.environ, + dbus_interface='com.ubuntu.USBCreator') + self.kvm_test.connect('clicked', go) + except dbus.DBusException: + logging.exception('Error checking for kvm:') + + if self.fastboot_mode: + self.finished_dialog_label.set_text( + _('Installation is complete. Your device is rebooting into Ubuntu Core.')) + self.kvm_test.hide() + self.finished_dialog.run() + self.backend.shutdown() + Gtk.main_quit() + + def notify(self, message): + dialog = Gtk.MessageDialog(parent=self.window, flags=Gtk.DialogFlags.MODAL | + Gtk.DialogFlags.DESTROY_WITH_PARENT, + message_type=Gtk.MessageType.WARNING, buttons=Gtk.ButtonsType.CLOSE, + message_format=message) + dialog.run() + dialog.destroy() + + @thread_wrap + def format_failed(self, message): + # TODO sort through error types (message.get_dbus_name()) in backend, + # individual functions in frontend for each error type. + d = Gtk.MessageDialog(parent=self.window, flags=Gtk.DialogFlags.MODAL, + message_type=Gtk.MessageType.ERROR, + buttons=Gtk.ButtonsType.CLOSE) + d.set_markup(str(message)) + d.run() + d.destroy() + + def format_dest_clicked(self, *args): + model, iterator = self.dest_treeview.get_selection().get_selected() + if not iterator: + return + udi = model[iterator][0] + d = Gtk.MessageDialog(parent=self.window, flags=Gtk.DialogFlags.MODAL, + message_type=Gtk.MessageType.QUESTION, buttons=Gtk.ButtonsType.YES_NO) + # TODO information about the device we're about to format. + d.set_markup(_('Are you sure you want to erase the entire disk?')) + response = d.run() + d.destroy() + if response == Gtk.ResponseType.YES: + self.format_dest.set_sensitive(False) + self.format_dest_label.set_text(_('Erasing...')) + self.format_dest_spinner.show() + self.format_dest_spinner.start() + self.backend.format(udi) + + def open_dest_folder(self, *args): + model, iterator = self.dest_treeview.get_selection().get_selected() + if not iterator: + logging.error('Open button pressed but there was no selection.') + return + disk = model[iterator][0] + dir = self.backend.open(disk) + if dir: + subprocess.Popen(['gnome-open', dir]) + +def _append_to_list_and_select(treeview, new_row, force_selection): + model = treeview.get_model() + new_iter = model.append(new_row) + if force_selection or (treeview.get_selection().get_selected()[1] is None): + treeview.set_cursor(model.get_path(new_iter), None, False) + +# vim: set ai et sts=4 tabstop=4 sw=4: diff --git a/usbcreator/frontends/gtk/unitysupport.py b/usbcreator/frontends/gtk/unitysupport.py new file mode 100644 index 0000000..308a423 --- /dev/null +++ b/usbcreator/frontends/gtk/unitysupport.py @@ -0,0 +1,57 @@ +# UnitySupport.py +# +# Copyright (c) 2011 Canonical +# +# Author: Robert Roth +# Bilal Akhtar +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +# USA + +import logging + +HAVE_UNITY_SUPPORT=False +try: + from gi.repository import Unity + HAVE_UNITY_SUPPORT=True +except ImportError as e: + logging.warn("can not import unity GI %s" % e) + +class IUnitySupport(object): + """ interface for unity support """ + def __init__(self, parent): pass + def set_progress(self, progress): pass + def show_progress(self, show=True): pass + +class UnitySupportImpl(IUnitySupport): + """ implementation of unity support (if unity is available) """ + + def __init__(self, parent): + # create launcher and quicklist + usbcreator_launcher_entry = Unity.LauncherEntry.get_for_desktop_id( + "usb-creator-gtk.desktop") + self._unity = usbcreator_launcher_entry + + def set_progress(self, progress): + self._unity.set_property("progress", progress) + def show_progress(self, show=True): + self._unity.set_property("progress_visible", show) + +# check what to export to the clients +if HAVE_UNITY_SUPPORT: + UnitySupport = UnitySupportImpl +else: + # we just provide the empty interface + UnitySupport = IUnitySupport diff --git a/usbcreator/frontends/kde/__init__.py b/usbcreator/frontends/kde/__init__.py new file mode 100644 index 0000000..f165ffb --- /dev/null +++ b/usbcreator/frontends/kde/__init__.py @@ -0,0 +1 @@ +from usbcreator.frontends.kde.frontend import KdeFrontend diff --git a/usbcreator/frontends/kde/frontend.py b/usbcreator/frontends/kde/frontend.py new file mode 100644 index 0000000..750faba --- /dev/null +++ b/usbcreator/frontends/kde/frontend.py @@ -0,0 +1,533 @@ +#!/usr/bin/python + +# Copyright (C) 2009 Roderick B. Greening +# +# Based in part on work by: +# David Edmundson +# Canonical Ltd. USB Creator Team +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import os + +from PyQt4.QtCore import * +from PyQt4.QtGui import * +from PyQt4 import uic +from PyKDE4.kdeui import KIcon, KMessageBox, KGlobalSettings +from PyKDE4.kdecore import KProcess, KStandardDirs, KUrl, i18n +from PyKDE4.kio import KFileDialog + +from usbcreator.frontends.kde.translate import translate +uic.properties.Properties._string = translate +import gettext +import logging + +from usbcreator.frontends.base import Frontend +from usbcreator import misc +try: + from queue import Queue +except ImportError: + from Queue import Queue + +queue = Queue() +def thread_wrap(func): + '''Decorator for functions that will be called by another thread.''' + def wrap(*args): + queue.put(lambda: func(*args)) + return wrap + +class KdeFrontend(Frontend, QObject): + @classmethod + def startup_failure(cls, message): + KMessageBox.sorry(None, message, "", KMessageBox.Notify) + + @classmethod + def DBusMainLoop(cls): + from dbus.mainloop.qt import DBusQtMainLoop + DBusQtMainLoop(set_as_default=True) + + def __init__(self, backend, img=None, persistent=True, + allow_system_internal=False): + QObject.__init__(self) + + #our passed vars - keep them private + self.__persistent = persistent + self.__img = img + self.__allow_system_internal = allow_system_internal + + # Perform some initialization + self.__initPrivateVars() + self.__initUI() + + #enable the backend + self.__backend = backend + + # Connect to backend signals. + self.__backend.source_added_cb = self.add_source + self.__backend.target_added_cb = self.add_target + self.__backend.source_removed_cb = self.remove_source + self.__backend.target_removed_cb = self.remove_target + self.__backend.failure_cb = self.failure + self.__backend.success_cb = self.success + self.__backend.install_progress_cb = self.progress + self.__backend.install_progress_message_cb = self.progress_message + self.__backend.retry_cb = self.retry + self.__backend.target_changed_cb = self.update_target + self.__backend.format_ended_cb = self.format_ended + self.__backend.format_failed_cb = self.format_failed + + #add any file sources passed + if self.__img is not None: + self.__backend.add_image(misc.text_type(self.__img)) + + downloadsDir = QDir(KGlobalSettings.self().downloadPath()) + isoFilter = [] + isoFilter.append("*.iso") + for iso in downloadsDir.entryList(isoFilter, QDir.Files): + self.__backend.add_image(misc.text_type(downloadsDir.absoluteFilePath(iso))) + + def test_func(*a): + if not queue.empty(): + func = queue.get_nowait() + func() + queue.task_done() + return True + self.queue_processor = self.add_timeout(500, test_func, None) + + self.__backend.detect_devices() + + self.update_loop = self.add_timeout(2000, self.__backend.update_free) + + def __initPrivateVars(self): + """Initialize Private Variables""" + + # main window + self.__mainWindow = QDialog() + + # ui file + self.__mainWindow_ui = "usbcreator-kde.ui" + + # init Backend to None - easier to debug... + self.__backend = None + + def __initUI(self): + """Initialize the interface""" + + # Locate the ui for the main window and load it. + if 'USBCREATOR_LOCAL' in os.environ: + appdir = os.path.join(os.getcwd(), 'gui') + else: + file = KStandardDirs.locate("appdata", self.__mainWindow_ui) + appdir = file[:file.rfind("/")] + uic.loadUi(misc.text_type(appdir + "/" + self.__mainWindow_ui), self.__mainWindow) + + #set default persist size + self.__mainWindow.ui_persist_label.setText(misc.format_mb_size(128)) + + #set persistent ui elements state + if self.__persistent: + self.__mainWindow.ui_persist_enabled.setChecked(True) + self.__mainWindow.ui_persist_text.setEnabled(True) + self.__mainWindow.ui_persist_slider.setEnabled(True) + self.__mainWindow.ui_persist_label.setEnabled(True) + else: + self.__mainWindow.ui_persist_disabled.setChecked(True) + self.__mainWindow.ui_persist_frame.hide() + + #hide sources if an argument was provided + if self.__img is not None: + self.__mainWindow.ui_source_list.hide() + self.__mainWindow.ui_add_source.hide() + self.__mainWindow.insert_label.hide() + self.__mainWindow.source_label.hide() + + #disable the start button and persist frame by default + self.__mainWindow.ui_persist_frame.setEnabled(False) + self.__mainWindow.ui_start_button.setEnabled(False) + + #add some buttons + self.__mainWindow.ui_quit_button.setIcon(KIcon("application-exit")) + self.__mainWindow.ui_start_button.setIcon(KIcon("dialog-ok-apply")) + self.__mainWindow.ui_add_source.setIcon(KIcon("media-optical")) + self.__mainWindow.ui_format_dest.setIcon(KIcon("drive-removable-media-usb-pendrive")) + + #set up signals + self.connect(self.__mainWindow.ui_add_source,SIGNAL('clicked()'), + self.add_file_source_dialog) + self.connect(self.__mainWindow.ui_persist_slider,SIGNAL('valueChanged(int)'), + lambda value: self.__mainWindow.ui_persist_label.setText(misc.format_mb_size(value))) + self.connect(self.__mainWindow.ui_quit_button,SIGNAL('clicked()'), + self.quit) + self.connect(self.__mainWindow.ui_start_button,SIGNAL('clicked()'), + self.install) + self.connect(self.__mainWindow.ui_dest_list,SIGNAL( + 'currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)'), + self.dest_selection_changed) + self.connect(self.__mainWindow.ui_source_list,SIGNAL( + 'currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)'), + self.source_selection_changed) + self.connect(self.__mainWindow.ui_format_dest,SIGNAL('clicked()'), + self.format_dest_clicked) + + self.__mainWindow.ui_source_list.setSortingEnabled(True) + self.__mainWindow.ui_source_list.sortByColumn(0, Qt.AscendingOrder) + self.__mainWindow.ui_dest_list.setSortingEnabled(True) + self.__mainWindow.ui_dest_list.sortByColumn(0, Qt.AscendingOrder) + self.progress_bar = QProgressDialog("",i18n('Cancel'),0,100,self.__mainWindow) + #set title of progress window (same as gtk frontend) + self.progress_bar.setWindowTitle(_('Installing')) + #prevent progress bar from emitting reset on reaching max value (and auto closing) + self.progress_bar.setAutoReset(False) + #force immediate showing, rather than waiting... + self.progress_bar.setMinimumDuration(0) + #must disconnect the canceled() SIGNAL, otherwise the progress bar is actually destroyed + self.disconnect(self.progress_bar,SIGNAL('canceled()'),self.progress_bar.cancel) + #now we connect our own signal to display a warning dialog instead + self.connect(self.progress_bar,SIGNAL('canceled()'),self.warning_dialog) + + #show the window + self.__mainWindow.show() + + def __timeout_callback(self, func, *args): + '''Private callback wrapper used by add_timeout''' + + timer = self.sender() + active = func(*args) + if not active: + timer.stop() + + def __fail(self, message=None): + '''Handle Failed Install Gracefully''' + + logging.exception('Installation failed.') + self.__backend.unmount() + self.progress_bar.hide() + if not message: + message = _('Installation failed.') + KMessageBox.error(self.__mainWindow, message) + sys.exit(1) + + def add_timeout(self, interval, func, *args): + '''Add a new timer for function 'func' with optional arguments. Mirrors a + similar gobject call timeout_add.''' + + # FIXME: now that we are part of a Qt object, we may be able to alter for builtin timers + timer = QTimer() + QObject.connect(timer, + SIGNAL('timeout()'), + lambda: self.__timeout_callback(func, *args)) + timer.start(interval) + + return timer + + def delete_timeout(self, timer): + '''Remove the specified timer''' + + if timer.isActive(): + return False + timer.stop() + return True + + def add_target(self, target): + logging.debug('add_target: %s' % misc.text_type(target)) + new_item = QTreeWidgetItem(self.__mainWindow.ui_dest_list) + new_item.setData(0,Qt.UserRole,target) + # FIXME: + # the new_item lines should be auto triggered onChange to the + # TreeWidget when new_item is appended. + new_item.setText(0,target) + new_item.setIcon(0,KIcon("drive-removable-media-usb-pendrive")) + + item = self.__mainWindow.ui_dest_list.currentItem() + if not item: + item = self.__mainWindow.ui_dest_list.topLevelItem(0) + if item: + self.__mainWindow.ui_dest_list.setCurrentItem(item,True) + + # populate from device data + if self.__backend is not None: + dev = self.__backend.targets[target] + pretty_name = "%s %s (%s)" % (dev['vendor'], dev['model'], dev['device']) + new_item.setText(0,pretty_name) + new_item.setText(1,dev['label']) + new_item.setText(2,misc.format_size(dev['capacity'])) + free = dev['free'] + if free >= 0: + new_item.setText(3,misc.format_size(free)) + else: + new_item.setText(3,'') + + def remove_target(self, target): + for i in range(0,self.__mainWindow.ui_dest_list.topLevelItemCount()): + item = self.__mainWindow.ui_dest_list.topLevelItem(i) + if item.data(0,Qt.UserRole) == target: + self.__mainWindow.ui_dest_list.takeTopLevelItem(i) + break + + if not self.__mainWindow.ui_dest_list.currentItem(): + item = self.__mainWindow.ui_dest_list.topLevelItem(0) + if item: + self.__mainWindow.ui_dest_list.setCurrentItem(item,True) + + def add_source(self, source): + logging.debug('add_source: %s' % misc.text_type(source)) + new_item = QTreeWidgetItem(self.__mainWindow.ui_source_list) + new_item.setData(0,Qt.UserRole,source) + # FIXME: + # the new_item lines should be auto triggered onChange to the TreeWidget + # when new_item is appended. + new_item.setText(0,source) + new_item.setIcon(0,KIcon("media-optical")) + + item = self.__mainWindow.ui_source_list.currentItem() + if not item: + item = self.__mainWindow.ui_source_list.topLevelItem(0) + if item: + self.__mainWindow.ui_source_list.setCurrentItem(item,True) + + # how does this all get added? here or elsewhere... + # populate from device data + if self.__backend is not None: + new_item.setText(0,self.__backend.sources[source]['device']) + # Strip as some derivates like to have whitespaces/newlines (e.g. netrunner) + new_item.setText(1,self.__backend.sources[source]['label'].strip()) + new_item.setText(2,misc.format_size(self.__backend.sources[source]['size'])) + + def remove_source(self, source): + for i in range(0,self.__mainWindow.ui_source_list.topLevelItemCount()): + item = self.__mainWindow.ui_source_list.topLevelItem(i) + if item.data(0,Qt.UserRole) == source: + self.__mainWindow.ui_source_list.removeItemWidget(item,0) + break + + if not self.__mainWindow.ui_source_list.currentItem(): + item = self.__mainWindow.ui_source_list.topLevelItem(0) + if item: + self.__mainWindow.ui_source_list.setCurrentItem(item,True) + + def get_source(self): + '''Returns the UDI of the selected source image.''' + item = self.__mainWindow.ui_source_list.currentItem() + if item: + # Must deal in unicode and not QString for backend + source = misc.text_type(item.data(0,Qt.UserRole)) + return source + else: + logging.debug('No source selected.') + return '' + + def get_target(self): + '''Returns the UDI of the selected target disk or partition.''' + item = self.__mainWindow.ui_dest_list.currentItem() + if item: + # Must deal in unicode and not QString for backend + dest = misc.text_type(item.data(0,Qt.UserRole)) + return dest + else: + logging.debug('No target selected.') + return '' + + def get_persistence(self): + if (self.__mainWindow.ui_persist_enabled.isChecked() and + self.__mainWindow.ui_persist_frame.isEnabled()): + val = self.__mainWindow.ui_persist_slider.value() + return int(val) + else: + return 0 + + def update_target(self, udi): + for i in range(0,self.__mainWindow.ui_dest_list.topLevelItemCount()): + item = self.__mainWindow.ui_dest_list.topLevelItem(i) + if misc.text_type(item.data(0,Qt.UserRole)) == udi: + self.__mainWindow.ui_dest_list.emit( + SIGNAL('itemChanged(item,0)')) + break + # Update persistence maximum value. + self.__mainWindow.ui_persist_frame.setEnabled(False) + self.__mainWindow.ui_start_button.setEnabled(False) + target = self.__backend.targets[udi] + persist_mb = target['persist'] / 1024 / 1024 + if persist_mb > misc.MIN_PERSISTENCE: + self.__mainWindow.ui_persist_frame.setEnabled(True) + self.__mainWindow.ui_persist_slider.setRange( + misc.MIN_PERSISTENCE, persist_mb) + # Update install button state. + status = target['status'] + source = self.__backend.get_current_source() + if not source: + return + stype = self.__backend.sources[source]['type'] + if (status == misc.CAN_USE or + (self.__mainWindow.ui_start_button.isEnabled() and stype == misc.SOURCE_IMG)): + self.__mainWindow.ui_start_button.setEnabled(True) + else: + self.__mainWindow.ui_start_button.setEnabled(False) + status = misc.NEED_FORMAT + # Update the destination status message. + if status == misc.CANNOT_USE: + msg = _('The device is not large enough to hold this image.') + elif status == misc.NEED_SPACE: + msg = _('There is not enough free space for this image.') + # FIXME RBG: 04/01/10 - Need Open button for folder to device for removing files + elif status == misc.NEED_FORMAT: + msg = _('The device needs to be formatted for use.') + else: + msg = '' + self.__mainWindow.ui_dest_status.setText(msg) + + def source_selection_changed(self, current_item, prev_item): + '''The selected image has changed we need to refresh targets''' + if not self.__backend: + return + if current_item is not None: + udi = misc.text_type(current_item.data(0,Qt.UserRole)) + else: + udi = None + self.__backend.set_current_source(udi) + item = self.__mainWindow.ui_dest_list.currentItem() + self.dest_selection_changed(item, None) + + def dest_selection_changed(self, current_item, prev_item): + '''The selected partition has changed and the bounds on the persistence + slider need to be changed, or the slider needs to be disabled, to + reflect the amount of free space on the partition.''' + + if not self.__backend: + return + + if current_item is None: + return + + udi = misc.text_type(current_item.data(0,Qt.UserRole)) + self.update_target(udi) + + def add_file_source_dialog(self): + filename = '' + filter = '*.iso|' + _('CD Images') + '\n*.img|' + _('Disk Images') + # FIXME: should set the default path KUrl to users home dir... + # This is all screwy as its run as root under kdesudo... Home = root and not user.. blarg! + # Need to convert to plain string for backend to work + filename = misc.text_type(KFileDialog.getOpenFileName(KUrl(),filter)) + if not filename: + return + self.__backend.add_image(filename) + + def install(self): + source = self.get_source() + target = self.get_target() + persist = self.get_persistence() + if (source and target): + self.__mainWindow.hide() + self.delete_timeout(self.update_loop) + starting_up = _('Starting up') + self.progress_bar.setLabelText(starting_up) + self.progress_bar.show() + try: + self.__backend.install(source, target, persist, + allow_system_internal=self.__allow_system_internal) + except: + self.__fail() + else: + message = _('You must select both source image and target device first.') + self.notify(message) + + @thread_wrap + def progress(self, complete, remaining, speed): + # Updating value cause dialog to re-appear from hidden (dunno why) + if not self.progress_bar.isHidden(): + self.progress_bar.setValue(int(complete)) + + @thread_wrap + def progress_message(self, message): + self.progress_bar.setLabelText(message) + + def quit(self, *args): + self.__backend.cancel_install() + sys.exit(0) + + @thread_wrap + def failure(self, message=None): + '''Install failed''' + self.__fail(message) + + @thread_wrap + def success(self): + '''Install completed''' + self.__backend.unmount() + self.progress_bar.hide() + text = _('The installation is complete. You may now reboot your ' + 'computer with this device inserted to try or install ' + 'Ubuntu.') + + KMessageBox.information(self.__mainWindow, text) + sys.exit(0) + + @thread_wrap + def retry(self, message): + '''A retry dialog''' + + caption = _('Retry?') + + res = KMessageBox.warningYesNo(self.__mainWindow,message,caption) + + return res == KMessageBox.Yes + + def notify(self,title): + KMessageBox.sorry(self.__mainWindow,title) + + def warning_dialog(self): + '''A warning dialog to show when progress dialog cancel is pressed''' + + caption = _('Quit the installation?') + text = _('Do you really want to quit the installation now?') + + #hide the progress bar - install will still continue in bg + self.progress_bar.hide() + + res = KMessageBox.warningYesNo(self.__mainWindow,text,caption) + + if res == KMessageBox.Yes: + self.quit() + + #user chose not to quit, so re-show progress bar + self.progress_bar.show() + + def format_ended(self): + self.__mainWindow.unsetCursor() + self.__mainWindow.ui_format_dest.setEnabled(True) + + @thread_wrap + def format_failed(self, message): + self.__mainWindow.unsetCursor() + self.__mainWindow.ui_format_dest.setEnabled(True) + # TODO sort through error types (message.get_dbus_name()) in backend, + # individual functions in frontend for each error type. + KMessageBox.error(self.__mainWindow, str(message)) + + def format_dest_clicked(self): + item = self.__mainWindow.ui_dest_list.currentItem() + if not item: + return + udi = misc.text_type(item.data(0,Qt.UserRole)) + + text = _('Are you sure you want to erase the entire disk?') + + res = KMessageBox.warningYesNo(self.__mainWindow,text) + + if res == KMessageBox.Yes: + self.__mainWindow.setCursor(Qt.BusyCursor) + # Disable simultaneous format attempts.. let current finish first + self.__mainWindow.ui_format_dest.setEnabled(False) + self.__backend.format(udi) + diff --git a/usbcreator/frontends/kde/kde_about.py b/usbcreator/frontends/kde/kde_about.py new file mode 100644 index 0000000..1655183 --- /dev/null +++ b/usbcreator/frontends/kde/kde_about.py @@ -0,0 +1,68 @@ +############################################################################# +## +## Copyright 2009 Roderick B. Greening +## +## This program is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 3 of +## the License, or (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . +## +############################################################################# + +############################################################################# +# Name: kde_about.py +# +# Description: The class which builds the about information for the app +############################################################################# + +from PyQt4 import uic +from usbcreator.frontends.kde.translate import translate +uic.properties.Properties._string = translate +from usbcreator.misc import setup_gettext +setup_gettext() + +from PyKDE4.kdecore import KAboutData, KLocalizedString, ki18n + +############################################################################# + +class AboutData(KAboutData): + """Add KDE specific data for About""" + + def __init__(self): + + appName = "usb-creator-kde" + catalogue = "usbcreator" + programName = ki18n("Startup Disk Creator") + version = "0.2.23" + description = ki18n("Create a startup disk using a CD or disc image") + license = KAboutData.License_GPL_V3 + copyright = ki18n("Copyright 2009 Roderick B. Greening") + text = KLocalizedString() + homePage = "http://launchpad.net/usb-creator" + bugEmail = "ubuntu-installer@lists.ubuntu.com" + + KAboutData.__init__(self, + appName, + catalogue, + programName, + version, + description, + license, + copyright, + text, + homePage, + bugEmail) + + # Add any authors below + self.addAuthor(ki18n("Roderick B. Greening"), + ki18n("Author/Maintainer"), + "roderick.greening@gmail.com") + diff --git a/usbcreator/frontends/kde/translate.py b/usbcreator/frontends/kde/translate.py new file mode 100644 index 0000000..1bafc33 --- /dev/null +++ b/usbcreator/frontends/kde/translate.py @@ -0,0 +1,39 @@ +############################################################################# +## +## Copyright 2008 Roderick B. Greening +## +## This program is free software; you can redistribute it and/or +## modify it under the terms of the GNU General Public License as +## published by the Free Software Foundation; either version 3 of +## the License, or (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program. If not, see . +## +############################################################################# + +############################################################################# +# Name: translate.py +# +# Description: Re-usable include which re-implements the translate method +# from uic, and changes it to use gettext. +############################################################################# + +from PyQt4 import uic +from PyKDE4.kdecore import i18n + +# Re-implement it +def translate(self, prop): + """Re-implement method from uic and change it to use gettext""" + if prop.get("notr", None) == "true": + return self._cstring(prop) + else: + if prop.text is None: + return "" + text = prop.text.encode("UTF-8") + return i18n(text) diff --git a/usbcreator/frontends/winui/__init__.py b/usbcreator/frontends/winui/__init__.py new file mode 100644 index 0000000..b92708e --- /dev/null +++ b/usbcreator/frontends/winui/__init__.py @@ -0,0 +1 @@ +from usbcreator.frontends.winui.frontend import WinuiFrontend diff --git a/usbcreator/frontends/winui/frontend.py b/usbcreator/frontends/winui/frontend.py new file mode 100644 index 0000000..0de2bae --- /dev/null +++ b/usbcreator/frontends/winui/frontend.py @@ -0,0 +1,205 @@ +# Copyright (C) 2009 Canonical Ltd. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import logging + +from usbcreator.frontends.base import Frontend +from usbcreator.frontends.winui.winui import ui +from usbcreator.frontends.winui.main_dialog import MainDialog +from usbcreator.frontends.winui.install_window import InstallWindow +from usbcreator import misc + +class WinuiFrontend(Frontend, ui.Frontend): + _main_window_class_ = ui.MainWindow + + def __init__(self, backend): + #Frontend.__init__(self) + ui.Frontend.__init__(self) + self.current_page = None + + self.maindialog = MainDialog(self.main_window) + self.installwindow = InstallWindow(self.main_window) + + # Connect signals. + self.maindialog.quit_button.on_click = self.quit + self.maindialog.sources.on_selection_changed = \ + self.selection_changed_source + self.maindialog.targets.on_selection_changed = \ + self.selection_changed_target + self.maindialog.no_persist_radio.on_click = \ + self.maindialog.persist_slider.disable + self.maindialog.persist_radio.on_click = \ + self.maindialog.persist_slider.enable + self.maindialog.persist_slider.on_wm_hscroll = \ + self.persist_value_changed + self.maindialog.make_button.on_click = \ + self.install + self.maindialog.other_button.on_click = \ + self.other + # TODO evand 2009-07-24: This really needs a confirmation MessageBox. + self.installwindow.cancel_button.on_click = \ + self.quit + + # Set initial state. + self.maindialog.make_button.disable() + + # Connect to backend signals. + self.backend = backend + self.backend.source_added_cb = self.add_source + self.backend.target_added_cb = self.add_target + self.backend.failure_cb = self.failure + self.backend.success_cb = self.success + self.backend.install_progress_cb = self.progress + self.backend.install_progress_message_cb = self.progress_message + self.backend.retry_cb = self.retry + + # Scan for devices and bring up the window. + self.backend.detect_devices() + self.show_page(self.maindialog) + + def success(self): + self.installwindow.hide() + self.show_info_message(_('The installation is complete. You may now ' + 'reboot your computer with this device ' + 'inserted to try or install Ubuntu.'), + _('Installation complete')) + ui.Frontend.stop(self) + + def failure(self, message=None): + logging.critical('Installation failed.') + self.installwindow.hide() + fail_title = _('Installation failed') + if message: + self.show_error_message(message, fail_title) + else: + # TODO evand 2009-07-28: Better error message. + self.show_error_message(_('Installation failed.'), fail_title) + ui.Frontend.stop(self) + + def retry(self, message): + return self.ask_to_retry(message) + + # Frontend functions. + def add_source(self, source): + # FIXME evand 2009-07-21: Don't expose backend data structures like + # this. + source = self.backend.sources[source] + i = self.maindialog.sources.insert_item(source['device'], -1) + self.maindialog.sources.set_item(i, 1, source['label']) + self.maindialog.sources.set_item( + i, 2, misc.format_size(source['size'])) + + def add_target(self, target): + t = self.maindialog.targets + t.clear() + target = self.backend.targets[target] + i = t.insert_item(target['device'], -1) + t.set_item(i, 1, target['label']) + t.set_item(i, 2, misc.format_size(target['capacity'])) + t.set_item(i, 3, misc.format_size(target['free'])) + + # Callback functions. + def selection_changed_target(self, item): + sel = self.maindialog.targets.get_selection() + target = self.backend.targets[sel] + maximum = target['free'] / 1024 / 1024 + if maximum < misc.MIN_PERSISTENCE: + # disable persistence. + self.maindialog.persist_slider.disable() + else: + self.maindialog.persist_slider.enable() + self.maindialog.persist_slider.set_range( + misc.MIN_PERSISTENCE, maximum) + self.selection_changed(item) + + def selection_changed_source(self, item): + self.backend.set_current_source(self.maindialog.sources.get_selection()) + self.selection_changed(item) + + def selection_changed(self, item): + # TODO evand 2009-07-29: Doesn't belong here. Should go in the + # target_changed callback. + s = self.maindialog.sources + t = self.maindialog.targets + if s.get_selection() and t.get_selection(): + self.maindialog.make_button.enable() + else: + self.maindialog.make_button.disable() + + def persist_value_changed(self, event): + pos = self.maindialog.persist_slider.get_pos() + self.maindialog.persist_label.set_text('%d MB' % pos) + + def quit(self): + self.backend.cancel_install() + ui.Frontend.quit(self) + + def progress(self, complete, remaining, speed): + self.installwindow.progress_bar.set_position(complete) + if remaining and speed: + # TODO evand 2009-07-24: Could use a time formatting function like + # our human size function. + mins = int(remaining / 60) + secs = int(remaining % 60) + text = _('%d%% complete (%dm%ss remaining)') % \ + (complete, mins, secs) + self.installwindow.progress_subtitle.set_text(text) + else: + self.installwindow.progress_subtitle.set_text(_('%d%% complete') % + complete) + + def progress_message(self, message): + self.installwindow.progress_title.set_text(message) + + def install(self): + source = misc.text_type(self.maindialog.sources.get_selection()) + target = misc.text_type(self.maindialog.targets.get_selection()) + if self.maindialog.persist_radio.is_checked(): + persist = self.maindialog.persist_slider.get_pos() + else: + persist = 0 + if source and target: + self.installwindow.show() + self.main_window.hide() + self.backend.install(source, target, persist) + + def other(self): + # TODO evand 2009-07-28: The list itself needs to be moved into the + # base frontend. + # To be displayed as a list of file type filters. + filters = [ _('CD Images'), '*.ISO', + _('Disk Images'), '*.IMG', + _('All'), '*.*' + ] + f = '\0'.join(filters) + '\0' + filename = ui.open_dialog(self.main_window._hwnd, file_filter=f) + if filename != '': + self.backend.add_image(filename) + + # Everything else. + + def on_init(self): + self.main_window.set_text(_('Make Startup Disk')) + self.main_window.resize(375,425) + + def show_page(self, page): + if self.current_page is page: + self.current_page.show() + return + if self.current_page: + self.current_page.hide() + self.current_page = page + page.show() + self.main_window.show() + self.run() diff --git a/usbcreator/frontends/winui/install_window.py b/usbcreator/frontends/winui/install_window.py new file mode 100644 index 0000000..4bb73c2 --- /dev/null +++ b/usbcreator/frontends/winui/install_window.py @@ -0,0 +1,32 @@ +# Copyright (C) 2009 Canonical Ltd. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from usbcreator.frontends.winui.winui import ui + +# FIXME evand 2009-07-24: Need to handle the user hitting the close button and +# making the window visible in the pager. +class InstallWindow(ui.MainWindow): + def __init__(self, main_window): + self.width = 450 + ui.MainWindow.__init__(self, main_window, 0, 0, self.width, 115, + _('Installing')) + + def on_init(self): + right_edge = self.width - 30 + self.progress_title = ui.Label(self, 10, 5, right_edge, 20, + _('Starting up...')) + self.progress_bar = ui.ProgressBar(self, 10, 25, right_edge, 25) + self.progress_subtitle = ui.Label(self, 10, 60, 350, 20, '') + self.cancel_button = ui.Button(self, right_edge - 50, 60, 60, 20, + _('&Cancel')) diff --git a/usbcreator/frontends/winui/main_dialog.py b/usbcreator/frontends/winui/main_dialog.py new file mode 100644 index 0000000..1f82a35 --- /dev/null +++ b/usbcreator/frontends/winui/main_dialog.py @@ -0,0 +1,58 @@ +# Copyright (C) 2009 Canonical Ltd. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +from usbcreator.frontends.winui.winui import ui + +class MainDialog(ui.Page): + '''Main window of usb-creator.''' + def on_init(self): + self.heading = ui.Label(self.parent, 10, 4, 365, 25, + _('To try or install Ubuntu from a removable disk, ' + 'it needs to be set up as a startup disk.')) + self.source_heading = ui.Label(self.parent, 10, 30, 365, 25, + _('Source disc image (.iso) or CD:')) + listview_width = 350 + self.sources = ui.ListView(self.parent, 10, 50, listview_width, 100) + self.sources.insert_column(_('Image'), listview_width / 3, idx=0) + self.sources.insert_column(_('OS Version'), listview_width / 3, idx=1) + self.sources.insert_column(_('Size'), listview_width / 3, idx=2) + + self.other_button = ui.Button(self.parent, 310, 155, 50, 25, + _('Other...')) + self.target_heading = ui.Label(self.parent, 10, 170, 365, 25, + _('Removable disk to use:')) + self.targets = ui.ListView(self.parent, 10, 185, listview_width, 100) + self.targets.insert_column(_('Device'), listview_width / 4, idx=0) + self.targets.insert_column(_('Label'), listview_width / 4, idx=1) + self.targets.insert_column(_('Capacity'), listview_width / 4, idx=2) + self.targets.insert_column(_('Free Space'), listview_width / 4, idx=3) + + self.persistent_heading = ui.Label(self.parent, 10, 285, 365, 25, + _('When starting up from this disk, ' + 'documents and settings will be:')) + self.persist_radio = ui.RadioButton(self.parent, 10, 295, 365, 25, + _('Stored in reserved space')) + self.how_much = ui.Label(self.parent, 30, 320, 75, 25, _('How much:')) + self.persist_label = ui.Label(self.parent, 0, 0, 50, 25, '') + self.persist_slider = ui.Trackbar(self.parent, 90, 315, 225, 25) + self.persist_slider.set_buddy(self.persist_label._hwnd, left=False) + self.persist_radio.set_check(True) + self.no_persist_radio = ui.RadioButton(self.parent, 10, 335, 365, 25, + _('Discarded on shutdown, unless' + ' you save them elsewhere')) + + self.quit_button = ui.DefaultButton(self.parent, 200, 365, 50, 25, + _('Quit')) + self.make_button = ui.Button(self.parent, 255, 365, 100, 25, + _('Make startup disk')) diff --git a/usbcreator/frontends/winui/winui/__init__.py b/usbcreator/frontends/winui/winui/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/usbcreator/frontends/winui/winui/defs.py b/usbcreator/frontends/winui/winui/defs.py new file mode 100644 index 0000000..0728e88 --- /dev/null +++ b/usbcreator/frontends/winui/winui/defs.py @@ -0,0 +1,5326 @@ +# +# Copyright (c) 2007, 2008 Agostino Russo +# +# Written by Agostino Russo +# Mostly copied from win32con.py +# +# winui is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# winui is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +''' +win32 constants, structures and functions +''' + +from ctypes import * +from ctypes.wintypes import * + +INT = c_int +WINVER = 1280 +WM_USER = 1024 +PY_0U = 0 +OFN_READONLY = 1 +OFN_OVERWRITEPROMPT = 2 +OFN_HIDEREADONLY = 4 +OFN_NOCHANGEDIR = 8 +OFN_SHOWHELP = 16 +OFN_ENABLEHOOK = 32 +OFN_ENABLETEMPLATE = 64 +OFN_ENABLETEMPLATEHANDLE = 128 +OFN_NOVALIDATE = 256 +OFN_ALLOWMULTISELECT = 512 +OFN_EXTENSIONDIFFERENT = 1024 +OFN_PATHMUSTEXIST = 2048 +OFN_FILEMUSTEXIST = 4096 +OFN_CREATEPROMPT = 8192 +OFN_SHAREAWARE = 16384 +OFN_NOREADONLYRETURN = 32768 +OFN_NOTESTFILECREATE = 65536 +OFN_NONETWORKBUTTON = 131072 +OFN_NOLONGNAMES = 262144 +OFN_EXPLORER = 524288 # new look commdlg +OFN_NODEREFERENCELINKS = 1048576 +OFN_LONGNAMES = 2097152 # force long names for 3.x modules +OFN_ENABLEINCLUDENOTIFY = 4194304 # send include message to callback +OFN_ENABLESIZING = 8388608 +OFN_DONTADDTORECENT = 33554432 +OFN_FORCESHOWHIDDEN = 268435456 # Show All files including System and hidden files +OFN_EX_NOPLACESBAR = 1 +OFN_SHAREFALLTHROUGH = 2 +OFN_SHARENOWARN = 1 +OFN_SHAREWARN = 0 +CDN_FIRST = (PY_0U-601) +CDN_LAST = (PY_0U-699) +CDN_INITDONE = (CDN_FIRST - 0) +CDN_SELCHANGE = (CDN_FIRST - 1) +CDN_FOLDERCHANGE = (CDN_FIRST - 2) +CDN_SHAREVIOLATION = (CDN_FIRST - 3) +CDN_HELP = (CDN_FIRST - 4) +CDN_FILEOK = (CDN_FIRST - 5) +CDN_TYPECHANGE = (CDN_FIRST - 6) +CDN_INCLUDEITEM = (CDN_FIRST - 7) +CDM_FIRST = (WM_USER + 100) +CDM_LAST = (WM_USER + 200) +CDM_GETSPEC = (CDM_FIRST + 0) +CDM_GETFILEPATH = (CDM_FIRST + 1) +CDM_GETFOLDERPATH = (CDM_FIRST + 2) +CDM_GETFOLDERIDLIST = (CDM_FIRST + 3) +CDM_SETCONTROLTEXT = (CDM_FIRST + 4) +CDM_HIDECONTROL = (CDM_FIRST + 5) +CDM_SETDEFEXT = (CDM_FIRST + 6) +CC_RGBINIT = 1 +CC_FULLOPEN = 2 +CC_PREVENTFULLOPEN = 4 +CC_SHOWHELP = 8 +CC_ENABLEHOOK = 16 +CC_ENABLETEMPLATE = 32 +CC_ENABLETEMPLATEHANDLE = 64 +CC_SOLIDCOLOR = 128 +CC_ANYCOLOR = 256 +FR_DOWN = 1 +FR_WHOLEWORD = 2 +FR_MATCHCASE = 4 +FR_FINDNEXT = 8 +FR_REPLACE = 16 +FR_REPLACEALL = 32 +FR_DIALOGTERM = 64 +FR_SHOWHELP = 128 +FR_ENABLEHOOK = 256 +FR_ENABLETEMPLATE = 512 +FR_NOUPDOWN = 1024 +FR_NOMATCHCASE = 2048 +FR_NOWHOLEWORD = 4096 +FR_ENABLETEMPLATEHANDLE = 8192 +FR_HIDEUPDOWN = 16384 +FR_HIDEMATCHCASE = 32768 +FR_HIDEWHOLEWORD = 65536 +CF_SCREENFONTS = 1 +CF_PRINTERFONTS = 2 +CF_BOTH = (CF_SCREENFONTS | CF_PRINTERFONTS) +CF_SHOWHELP = 4 +CF_ENABLEHOOK = 8 +CF_ENABLETEMPLATE = 16 +CF_ENABLETEMPLATEHANDLE = 32 +CF_INITTOLOGFONTSTRUCT = 64 +CF_USESTYLE = 128 +CF_EFFECTS = 256 +CF_APPLY = 512 +CF_ANSIONLY = 1024 +CF_SCRIPTSONLY = CF_ANSIONLY +CF_NOVECTORFONTS = 2048 +CF_NOOEMFONTS = CF_NOVECTORFONTS +CF_NOSIMULATIONS = 4096 +CF_LIMITSIZE = 8192 +CF_FIXEDPITCHONLY = 16384 +CF_WYSIWYG = 32768 # must also have CF_SCREENFONTS & CF_PRINTERFONTS +CF_FORCEFONTEXIST = 65536 +CF_SCALABLEONLY = 131072 +CF_TTONLY = 262144 +CF_NOFACESEL = 524288 +CF_NOSTYLESEL = 1048576 +CF_NOSIZESEL = 2097152 +CF_SELECTSCRIPT = 4194304 +CF_NOSCRIPTSEL = 8388608 +CF_NOVERTFONTS = 16777216 +SIMULATED_FONTTYPE = 32768 +PRINTER_FONTTYPE = 16384 +SCREEN_FONTTYPE = 8192 +BOLD_FONTTYPE = 256 +ITALIC_FONTTYPE = 512 +REGULAR_FONTTYPE = 1024 +OPENTYPE_FONTTYPE = 65536 +TYPE1_FONTTYPE = 131072 +DSIG_FONTTYPE = 262144 +WM_CHOOSEFONT_GETLOGFONT = (WM_USER + 1) +WM_CHOOSEFONT_SETLOGFONT = (WM_USER + 101) +WM_CHOOSEFONT_SETFLAGS = (WM_USER + 102) +LBSELCHSTRINGA = "commdlg_LBSelChangedNotify" +SHAREVISTRINGA = "commdlg_ShareViolation" +FILEOKSTRINGA = "commdlg_FileNameOK" +COLOROKSTRINGA = "commdlg_ColorOK" +SETRGBSTRINGA = "commdlg_SetRGBColor" +HELPMSGSTRINGA = "commdlg_help" +FINDMSGSTRINGA = "commdlg_FindReplace" +LBSELCHSTRING = LBSELCHSTRINGA +SHAREVISTRING = SHAREVISTRINGA +FILEOKSTRING = FILEOKSTRINGA +COLOROKSTRING = COLOROKSTRINGA +SETRGBSTRING = SETRGBSTRINGA +HELPMSGSTRING = HELPMSGSTRINGA +FINDMSGSTRING = FINDMSGSTRINGA +CD_LBSELNOITEMS = -1 +CD_LBSELCHANGE = 0 +CD_LBSELSUB = 1 +CD_LBSELADD = 2 +PD_ALLPAGES = 0 +PD_SELECTION = 1 +PD_PAGENUMS = 2 +PD_NOSELECTION = 4 +PD_NOPAGENUMS = 8 +PD_COLLATE = 16 +PD_PRINTTOFILE = 32 +PD_PRINTSETUP = 64 +PD_NOWARNING = 128 +PD_RETURNDC = 256 +PD_RETURNIC = 512 +PD_RETURNDEFAULT = 1024 +PD_SHOWHELP = 2048 +PD_ENABLEPRINTHOOK = 4096 +PD_ENABLESETUPHOOK = 8192 +PD_ENABLEPRINTTEMPLATE = 16384 +PD_ENABLESETUPTEMPLATE = 32768 +PD_ENABLEPRINTTEMPLATEHANDLE = 65536 +PD_ENABLESETUPTEMPLATEHANDLE = 131072 +PD_USEDEVMODECOPIES = 262144 +PD_DISABLEPRINTTOFILE = 524288 +PD_HIDEPRINTTOFILE = 1048576 +PD_NONETWORKBUTTON = 2097152 +DN_DEFAULTPRN = 1 +WM_PSD_PAGESETUPDLG = (WM_USER ) +WM_PSD_FULLPAGERECT = (WM_USER+1) +WM_PSD_MINMARGINRECT = (WM_USER+2) +WM_PSD_MARGINRECT = (WM_USER+3) +WM_PSD_GREEKTEXTRECT = (WM_USER+4) +WM_PSD_ENVSTAMPRECT = (WM_USER+5) +WM_PSD_YAFULLPAGERECT = (WM_USER+6) +PSD_DEFAULTMINMARGINS = 0 # default (printer's) +PSD_INWININIINTLMEASURE = 0 # 1st of 4 possible +PSD_MINMARGINS = 1 # use caller's +PSD_MARGINS = 2 # use caller's +PSD_INTHOUSANDTHSOFINCHES = 4 # 2nd of 4 possible +PSD_INHUNDREDTHSOFMILLIMETERS = 8 # 3rd of 4 possible +PSD_DISABLEMARGINS = 16 +PSD_DISABLEPRINTER = 32 +PSD_NOWARNING = 128 # must be same as PD_* +PSD_DISABLEORIENTATION = 256 +PSD_RETURNDEFAULT = 1024 # must be same as PD_* +PSD_DISABLEPAPER = 512 +PSD_SHOWHELP = 2048 # must be same as PD_* +PSD_ENABLEPAGESETUPHOOK = 8192 # must be same as PD_* +PSD_ENABLEPAGESETUPTEMPLATE = 32768 # must be same as PD_* +PSD_ENABLEPAGESETUPTEMPLATEHANDLE = 131072 # must be same as PD_* +PSD_ENABLEPAGEPAINTHOOK = 262144 +PSD_DISABLEPAGEPAINTING = 524288 +PSD_NONETWORKBUTTON = 2097152 # must be same as PD_* + +# Generated by h2py from winreg.h +HKEY_CLASSES_ROOT = -2147483648 +HKEY_CURRENT_USER = -2147483647 +HKEY_LOCAL_MACHINE = -2147483646 +HKEY_USERS = -2147483645 +HKEY_PERFORMANCE_DATA = -2147483644 +HKEY_CURRENT_CONFIG = -2147483643 +HKEY_DYN_DATA = -2147483642 +HKEY_PERFORMANCE_TEXT = -2147483568 # ?? 4Jan98 +HKEY_PERFORMANCE_NLSTEXT = -2147483552 # ?? 4Jan98 + +# Generated by h2py from winuser.h +HWND_BROADCAST = 65535 +HWND_DESKTOP = 0 +HWND_TOP = 0 +HWND_BOTTOM = 1 +HWND_TOPMOST = -1 +HWND_NOTOPMOST = -2 +HWND_MESSAGE = -3 + +# winuser.h line 4601 +SM_CXSCREEN = 0 +SM_CYSCREEN = 1 +SM_CXVSCROLL = 2 +SM_CYHSCROLL = 3 +SM_CYCAPTION = 4 +SM_CXBORDER = 5 +SM_CYBORDER = 6 +SM_CXDLGFRAME = 7 +SM_CYDLGFRAME = 8 +SM_CYVTHUMB = 9 +SM_CXHTHUMB = 10 +SM_CXICON = 11 +SM_CYICON = 12 +SM_CXCURSOR = 13 +SM_CYCURSOR = 14 +SM_CYMENU = 15 +SM_CXFULLSCREEN = 16 +SM_CYFULLSCREEN = 17 +SM_CYKANJIWINDOW = 18 +SM_MOUSEPRESENT = 19 +SM_CYVSCROLL = 20 +SM_CXHSCROLL = 21 +SM_DEBUG = 22 +SM_SWAPBUTTON = 23 +SM_RESERVED1 = 24 +SM_RESERVED2 = 25 +SM_RESERVED3 = 26 +SM_RESERVED4 = 27 +SM_CXMIN = 28 +SM_CYMIN = 29 +SM_CXSIZE = 30 +SM_CYSIZE = 31 +SM_CXFRAME = 32 +SM_CYFRAME = 33 +SM_CXMINTRACK = 34 +SM_CYMINTRACK = 35 +SM_CXDOUBLECLK = 36 +SM_CYDOUBLECLK = 37 +SM_CXICONSPACING = 38 +SM_CYICONSPACING = 39 +SM_MENUDROPALIGNMENT = 40 +SM_PENWINDOWS = 41 +SM_DBCSENABLED = 42 +SM_CMOUSEBUTTONS = 43 +SM_CXFIXEDFRAME = SM_CXDLGFRAME +SM_CYFIXEDFRAME = SM_CYDLGFRAME +SM_CXSIZEFRAME = SM_CXFRAME +SM_CYSIZEFRAME = SM_CYFRAME +SM_SECURE = 44 +SM_CXEDGE = 45 +SM_CYEDGE = 46 +SM_CXMINSPACING = 47 +SM_CYMINSPACING = 48 +SM_CXSMICON = 49 +SM_CYSMICON = 50 +SM_CYSMCAPTION = 51 +SM_CXSMSIZE = 52 +SM_CYSMSIZE = 53 +SM_CXMENUSIZE = 54 +SM_CYMENUSIZE = 55 +SM_ARRANGE = 56 +SM_CXMINIMIZED = 57 +SM_CYMINIMIZED = 58 +SM_CXMAXTRACK = 59 +SM_CYMAXTRACK = 60 +SM_CXMAXIMIZED = 61 +SM_CYMAXIMIZED = 62 +SM_NETWORK = 63 +SM_CLEANBOOT = 67 +SM_CXDRAG = 68 +SM_CYDRAG = 69 +SM_SHOWSOUNDS = 70 +SM_CXMENUCHECK = 71 +SM_CYMENUCHECK = 72 +SM_SLOWMACHINE = 73 +SM_MIDEASTENABLED = 74 +SM_MOUSEWHEELPRESENT = 75 +SM_XVIRTUALSCREEN = 76 +SM_YVIRTUALSCREEN = 77 +SM_CXVIRTUALSCREEN = 78 +SM_CYVIRTUALSCREEN = 79 +SM_CMONITORS = 80 +SM_SAMEDISPLAYFORMAT = 81 +SM_CMETRICS = 83 +MNC_IGNORE = 0 +MNC_CLOSE = 1 +MNC_EXECUTE = 2 +MNC_SELECT = 3 +MNS_NOCHECK = -2147483648 +MNS_MODELESS = 1073741824 +MNS_DRAGDROP = 536870912 +MNS_AUTODISMISS = 268435456 +MNS_NOTIFYBYPOS = 134217728 +MNS_CHECKORBMP = 67108864 +MIM_MAXHEIGHT = 1 +MIM_BACKGROUND = 2 +MIM_HELPID = 4 +MIM_MENUDATA = 8 +MIM_STYLE = 16 +MIM_APPLYTOSUBMENUS = -2147483648 +MND_CONTINUE = 0 +MND_ENDMENU = 1 +MNGOF_GAP = 3 +MNGO_NOINTERFACE = 0 +MNGO_NOERROR = 1 +MIIM_STATE = 1 +MIIM_ID = 2 +MIIM_SUBMENU = 4 +MIIM_CHECKMARKS = 8 +MIIM_TYPE = 16 +MIIM_DATA = 32 +MIIM_STRING = 64 +MIIM_BITMAP = 128 +MIIM_FTYPE = 256 +HBMMENU_CALLBACK = -1 +HBMMENU_SYSTEM = 1 +HBMMENU_MBAR_RESTORE = 2 +HBMMENU_MBAR_MINIMIZE = 3 +HBMMENU_MBAR_CLOSE = 5 +HBMMENU_MBAR_CLOSE_D = 6 +HBMMENU_MBAR_MINIMIZE_D = 7 +HBMMENU_POPUP_CLOSE = 8 +HBMMENU_POPUP_RESTORE = 9 +HBMMENU_POPUP_MAXIMIZE = 10 +HBMMENU_POPUP_MINIMIZE = 11 +GMDI_USEDISABLED = 1 +GMDI_GOINTOPOPUPS = 2 +TPM_LEFTBUTTON = 0 +TPM_RIGHTBUTTON = 2 +TPM_LEFTALIGN = 0 +TPM_CENTERALIGN = 4 +TPM_RIGHTALIGN = 8 +TPM_TOPALIGN = 0 +TPM_VCENTERALIGN = 16 +TPM_BOTTOMALIGN = 32 +TPM_HORIZONTAL = 0 +TPM_VERTICAL = 64 +TPM_NONOTIFY = 128 +TPM_RETURNCMD = 256 +TPM_RECURSE = 1 +DOF_EXECUTABLE = 32769 +DOF_DOCUMENT = 32770 +DOF_DIRECTORY = 32771 +DOF_MULTIPLE = 32772 +DOF_PROGMAN = 1 +DOF_SHELLDATA = 2 +DO_DROPFILE = 1162627398 +DO_PRINTFILE = 1414419024 +DT_TOP = 0 +DT_LEFT = 0 +DT_CENTER = 1 +DT_RIGHT = 2 +DT_VCENTER = 4 +DT_BOTTOM = 8 +DT_WORDBREAK = 16 +DT_SINGLELINE = 32 +DT_EXPANDTABS = 64 +DT_TABSTOP = 128 +DT_NOCLIP = 256 +DT_EXTERNALLEADING = 512 +DT_CALCRECT = 1024 +DT_NOPREFIX = 2048 +DT_INTERNAL = 4096 +DT_EDITCONTROL = 8192 +DT_PATH_ELLIPSIS = 16384 +DT_END_ELLIPSIS = 32768 +DT_MODIFYSTRING = 65536 +DT_RTLREADING = 131072 +DT_WORD_ELLIPSIS = 262144 +DST_COMPLEX = 0 +DST_TEXT = 1 +DST_PREFIXTEXT = 2 +DST_ICON = 3 +DST_BITMAP = 4 +DSS_NORMAL = 0 +DSS_UNION = 16 +DSS_DISABLED = 32 +DSS_MONO = 128 +DSS_RIGHT = 32768 +DCX_WINDOW = 1 +DCX_CACHE = 2 +DCX_NORESETATTRS = 4 +DCX_CLIPCHILDREN = 8 +DCX_CLIPSIBLINGS = 16 +DCX_PARENTCLIP = 32 +DCX_EXCLUDERGN = 64 +DCX_INTERSECTRGN = 128 +DCX_EXCLUDEUPDATE = 256 +DCX_INTERSECTUPDATE = 512 +DCX_LOCKWINDOWUPDATE = 1024 +DCX_VALIDATE = 2097152 +CUDR_NORMAL = 0 +CUDR_NOSNAPTOGRID = 1 +CUDR_NORESOLVEPOSITIONS = 2 +CUDR_NOCLOSEGAPS = 4 +CUDR_NEGATIVECOORDS = 8 +CUDR_NOPRIMARY = 16 +RDW_INVALIDATE = 1 +RDW_INTERNALPAINT = 2 +RDW_ERASE = 4 +RDW_VALIDATE = 8 +RDW_NOINTERNALPAINT = 16 +RDW_NOERASE = 32 +RDW_NOCHILDREN = 64 +RDW_ALLCHILDREN = 128 +RDW_UPDATENOW = 256 +RDW_ERASENOW = 512 +RDW_FRAME = 1024 +RDW_NOFRAME = 2048 +SW_SCROLLCHILDREN = 1 +SW_INVALIDATE = 2 +SW_ERASE = 4 +SW_SMOOTHSCROLL = 16 # Use smooth scrolling +ESB_ENABLE_BOTH = 0 +ESB_DISABLE_BOTH = 3 +ESB_DISABLE_LEFT = 1 +ESB_DISABLE_RIGHT = 2 +ESB_DISABLE_UP = 1 +ESB_DISABLE_DOWN = 2 +ESB_DISABLE_LTUP = ESB_DISABLE_LEFT +ESB_DISABLE_RTDN = ESB_DISABLE_RIGHT +HELPINFO_WINDOW = 1 +HELPINFO_MENUITEM = 2 +MB_OK = 0 +MB_OKCANCEL = 1 +MB_ABORTRETRYIGNORE = 2 +MB_YESNOCANCEL = 3 +MB_YESNO = 4 +MB_RETRYCANCEL = 5 +MB_ICONHAND = 16 +MB_ICONQUESTION = 32 +MB_ICONEXCLAMATION = 48 +MB_ICONASTERISK = 64 +MB_ICONWARNING = MB_ICONEXCLAMATION +MB_ICONERROR = MB_ICONHAND +MB_ICONINFORMATION = MB_ICONASTERISK +MB_ICONSTOP = MB_ICONHAND +MB_DEFBUTTON1 = 0 +MB_DEFBUTTON2 = 256 +MB_DEFBUTTON3 = 512 +MB_DEFBUTTON4 = 768 +MB_APPLMODAL = 0 +MB_SYSTEMMODAL = 4096 +MB_TASKMODAL = 8192 +MB_HELP = 16384 +MB_NOFOCUS = 32768 +MB_SETFOREGROUND = 65536 +MB_DEFAULT_DESKTOP_ONLY = 131072 +MB_TOPMOST = 262144L +MB_RIGHT = 524288 +MB_RTLREADING = 1048576 +MB_SERVICE_NOTIFICATION = 2097152 +MB_TYPEMASK = 15 +MB_USERICON = 128 +MB_ICONMASK = 240 +MB_DEFMASK = 3840 +MB_MODEMASK = 12288 +MB_MISCMASK = 49152 +# winuser.h line 6373 +CWP_ALL = 0 +CWP_SKIPINVISIBLE = 1 +CWP_SKIPDISABLED = 2 +CWP_SKIPTRANSPARENT = 4 +CTLCOLOR_MSGBOX = 0 +CTLCOLOR_EDIT = 1 +CTLCOLOR_LISTBOX = 2 +CTLCOLOR_BTN = 3 +CTLCOLOR_DLG = 4 +CTLCOLOR_SCROLLBAR = 5 +CTLCOLOR_STATIC = 6 +CTLCOLOR_MAX = 7 +COLOR_SCROLLBAR = 0 +COLOR_BACKGROUND = 1 +COLOR_ACTIVECAPTION = 2 +COLOR_INACTIVECAPTION = 3 +COLOR_MENU = 4 +COLOR_WINDOW = 5 +COLOR_WINDOWFRAME = 6 +COLOR_MENUTEXT = 7 +COLOR_WINDOWTEXT = 8 +COLOR_CAPTIONTEXT = 9 +COLOR_ACTIVEBORDER = 10 +COLOR_INACTIVEBORDER = 11 +COLOR_APPWORKSPACE = 12 +COLOR_HIGHLIGHT = 13 +COLOR_HIGHLIGHTTEXT = 14 +COLOR_BTNFACE = 15 +COLOR_BTNSHADOW = 16 +COLOR_GRAYTEXT = 17 +COLOR_BTNTEXT = 18 +COLOR_INACTIVECAPTIONTEXT = 19 +COLOR_BTNHIGHLIGHT = 20 +COLOR_3DDKSHADOW = 21 +COLOR_3DLIGHT = 22 +COLOR_INFOTEXT = 23 +COLOR_INFOBK = 24 +COLOR_HOTLIGHT = 26 +COLOR_GRADIENTACTIVECAPTION = 27 +COLOR_GRADIENTINACTIVECAPTION = 28 +COLOR_DESKTOP = COLOR_BACKGROUND +COLOR_3DFACE = COLOR_BTNFACE +COLOR_3DSHADOW = COLOR_BTNSHADOW +COLOR_3DHIGHLIGHT = COLOR_BTNHIGHLIGHT +COLOR_3DHILIGHT = COLOR_BTNHIGHLIGHT +COLOR_BTNHILIGHT = COLOR_BTNHIGHLIGHT +GW_HWNDFIRST = 0 +GW_HWNDLAST = 1 +GW_HWNDNEXT = 2 +GW_HWNDPREV = 3 +GW_OWNER = 4 +GW_CHILD = 5 +GW_ENABLEDPOPUP = 6 +GW_MAX = 6 +MF_INSERT = 0 +MF_CHANGE = 128 +MF_APPEND = 256 +MF_DELETE = 512 +MF_REMOVE = 4096 +MF_BYCOMMAND = 0 +MF_BYPOSITION = 1024 +MF_SEPARATOR = 2048 +MF_ENABLED = 0 +MF_GRAYED = 1 +MF_DISABLED = 2 +MF_UNCHECKED = 0 +MF_CHECKED = 8 +MF_USECHECKBITMAPS = 512 +MF_STRING = 0 +MF_BITMAP = 4 +MF_OWNERDRAW = 256 +MF_POPUP = 16 +MF_MENUBARBREAK = 32 +MF_MENUBREAK = 64 +MF_UNHILITE = 0 +MF_HILITE = 128 +MF_DEFAULT = 4096 +MF_SYSMENU = 8192 +MF_HELP = 16384 +MF_RIGHTJUSTIFY = 16384 +MF_MOUSESELECT = 32768 +MF_END = 128 +MFT_STRING = MF_STRING +MFT_BITMAP = MF_BITMAP +MFT_MENUBARBREAK = MF_MENUBARBREAK +MFT_MENUBREAK = MF_MENUBREAK +MFT_OWNERDRAW = MF_OWNERDRAW +MFT_RADIOCHECK = 512 +MFT_SEPARATOR = MF_SEPARATOR +MFT_RIGHTORDER = 8192 +MFT_RIGHTJUSTIFY = MF_RIGHTJUSTIFY +MFS_GRAYED = 3 +MFS_DISABLED = MFS_GRAYED +MFS_CHECKED = MF_CHECKED +MFS_HILITE = MF_HILITE +MFS_ENABLED = MF_ENABLED +MFS_UNCHECKED = MF_UNCHECKED +MFS_UNHILITE = MF_UNHILITE +MFS_DEFAULT = MF_DEFAULT +MFS_MASK = 4235L +MFS_HOTTRACKDRAWN = 268435456 +MFS_CACHEDBMP = 536870912 +MFS_BOTTOMGAPDROP = 1073741824 +MFS_TOPGAPDROP = -2147483648 +MFS_GAPDROP = -1073741824 +SC_SIZE = 61440 +SC_MOVE = 61456 +SC_MINIMIZE = 61472 +SC_MAXIMIZE = 61488 +SC_NEXTWINDOW = 61504 +SC_PREVWINDOW = 61520 +SC_CLOSE = 61536 +SC_VSCROLL = 61552 +SC_HSCROLL = 61568 +SC_MOUSEMENU = 61584 +SC_KEYMENU = 61696 +SC_ARRANGE = 61712 +SC_RESTORE = 61728 +SC_TASKLIST = 61744 +SC_SCREENSAVE = 61760 +SC_HOTKEY = 61776 +SC_DEFAULT = 61792 +SC_MONITORPOWER = 61808 +SC_CONTEXTHELP = 61824 +SC_SEPARATOR = 61455 +SC_ICON = SC_MINIMIZE +SC_ZOOM = SC_MAXIMIZE +IDC_ARROW = 32512 +IDC_IBEAM = 32513 +IDC_WAIT = 32514 +IDC_CROSS = 32515 +IDC_UPARROW = 32516 +IDC_SIZE = 32640 # OBSOLETE: use IDC_SIZEALL +IDC_ICON = 32641 # OBSOLETE: use IDC_ARROW +IDC_SIZENWSE = 32642 +IDC_SIZENESW = 32643 +IDC_SIZEWE = 32644 +IDC_SIZENS = 32645 +IDC_SIZEALL = 32646 +IDC_NO = 32648 +IDC_HAND = 32649 +IDC_APPSTARTING = 32650 +IDC_HELP = 32651 +IMAGE_BITMAP = 0 +IMAGE_ICON = 1 +IMAGE_CURSOR = 2 +IMAGE_ENHMETAFILE = 3 +LR_DEFAULTCOLOR = 0 +LR_MONOCHROME = 1 +LR_COLOR = 2 +LR_COPYRETURNORG = 4 +LR_COPYDELETEORG = 8 +LR_LOADFROMFILE = 16 +LR_LOADTRANSPARENT = 32 +LR_DEFAULTSIZE = 64 +LR_LOADREALSIZE = 128 +LR_LOADMAP3DCOLORS = 4096 +LR_CREATEDIBSECTION = 8192 +LR_COPYFROMRESOURCE = 16384 +LR_SHARED = 32768 +DI_MASK = 1 +DI_IMAGE = 2 +DI_NORMAL = 3 +DI_COMPAT = 4 +DI_DEFAULTSIZE = 8 +RES_ICON = 1 +RES_CURSOR = 2 +OBM_CLOSE = 32754 +OBM_UPARROW = 32753 +OBM_DNARROW = 32752 +OBM_RGARROW = 32751 +OBM_LFARROW = 32750 +OBM_REDUCE = 32749 +OBM_ZOOM = 32748 +OBM_RESTORE = 32747 +OBM_REDUCED = 32746 +OBM_ZOOMD = 32745 +OBM_RESTORED = 32744 +OBM_UPARROWD = 32743 +OBM_DNARROWD = 32742 +OBM_RGARROWD = 32741 +OBM_LFARROWD = 32740 +OBM_MNARROW = 32739 +OBM_COMBO = 32738 +OBM_UPARROWI = 32737 +OBM_DNARROWI = 32736 +OBM_RGARROWI = 32735 +OBM_LFARROWI = 32734 +OBM_OLD_CLOSE = 32767 +OBM_SIZE = 32766 +OBM_OLD_UPARROW = 32765 +OBM_OLD_DNARROW = 32764 +OBM_OLD_RGARROW = 32763 +OBM_OLD_LFARROW = 32762 +OBM_BTSIZE = 32761 +OBM_CHECK = 32760 +OBM_CHECKBOXES = 32759 +OBM_BTNCORNERS = 32758 +OBM_OLD_REDUCE = 32757 +OBM_OLD_ZOOM = 32756 +OBM_OLD_RESTORE = 32755 +OCR_NORMAL = 32512 +OCR_IBEAM = 32513 +OCR_WAIT = 32514 +OCR_CROSS = 32515 +OCR_UP = 32516 +OCR_SIZE = 32640 +OCR_ICON = 32641 +OCR_SIZENWSE = 32642 +OCR_SIZENESW = 32643 +OCR_SIZEWE = 32644 +OCR_SIZENS = 32645 +OCR_SIZEALL = 32646 +OCR_ICOCUR = 32647 +OCR_NO = 32648 +OCR_HAND = 32649 +OCR_APPSTARTING = 32650 +# winuser.h line 7455 +OIC_SAMPLE = 32512 +OIC_HAND = 32513 +OIC_QUES = 32514 +OIC_BANG = 32515 +OIC_NOTE = 32516 +OIC_WINLOGO = 32517 +OIC_WARNING = OIC_BANG +OIC_ERROR = OIC_HAND +OIC_INFORMATION = OIC_NOTE +ORD_LANGDRIVER = 1 +IDI_APPLICATION = 32512 +IDI_HAND = 32513 +IDI_QUESTION = 32514 +IDI_EXCLAMATION = 32515 +IDI_ASTERISK = 32516 +IDI_WINLOGO = 32517 +IDI_WARNING = IDI_EXCLAMATION +IDI_ERROR = IDI_HAND +IDI_INFORMATION = IDI_ASTERISK +IDOK = 1 +IDCANCEL = 2 +IDABORT = 3 +IDRETRY = 4 +IDIGNORE = 5 +IDYES = 6 +IDNO = 7 +IDCLOSE = 8 +IDHELP = 9 +ES_LEFT = 0 +ES_CENTER = 1 +ES_RIGHT = 2 +ES_MULTILINE = 4 +ES_UPPERCASE = 8 +ES_LOWERCASE = 16 +ES_PASSWORD = 32 +ES_AUTOVSCROLL = 64 +ES_AUTOHSCROLL = 128 +ES_NOHIDESEL = 256 +ES_OEMCONVERT = 1024 +ES_READONLY = 2048 +ES_WANTRETURN = 4096 +ES_NUMBER = 8192 +EN_SETFOCUS = 256 +EN_KILLFOCUS = 512 +EN_CHANGE = 768 +EN_UPDATE = 1024 +EN_ERRSPACE = 1280 +EN_MAXTEXT = 1281 +EN_HSCROLL = 1537 +EN_VSCROLL = 1538 +EC_LEFTMARGIN = 1 +EC_RIGHTMARGIN = 2 +EC_USEFONTINFO = 65535 +EMSIS_COMPOSITIONSTRING = 1 +EIMES_GETCOMPSTRATONCE = 1 +EIMES_CANCELCOMPSTRINFOCUS = 2 +EIMES_COMPLETECOMPSTRKILLFOCUS = 4 +EM_GETSEL = 176 +EM_SETSEL = 177 +EM_GETRECT = 178 +EM_SETRECT = 179 +EM_SETRECTNP = 180 +EM_SCROLL = 181 +EM_LINESCROLL = 182 +EM_SCROLLCARET = 183 +EM_GETMODIFY = 184 +EM_SETMODIFY = 185 +EM_GETLINECOUNT = 186 +EM_LINEINDEX = 187 +EM_SETHANDLE = 188 +EM_GETHANDLE = 189 +EM_GETTHUMB = 190 +EM_LINELENGTH = 193 +EM_REPLACESEL = 194 +EM_GETLINE = 196 +EM_LIMITTEXT = 197 +EM_CANUNDO = 198 +EM_UNDO = 199 +EM_FMTLINES = 200 +EM_LINEFROMCHAR = 201 +EM_SETTABSTOPS = 203 +EM_SETPASSWORDCHAR = 204 +EM_EMPTYUNDOBUFFER = 205 +EM_GETFIRSTVISIBLELINE = 206 +EM_SETREADONLY = 207 +EM_SETWORDBREAKPROC = 208 +EM_GETWORDBREAKPROC = 209 +EM_GETPASSWORDCHAR = 210 +EM_SETMARGINS = 211 +EM_GETMARGINS = 212 +EM_SETLIMITTEXT = EM_LIMITTEXT +EM_GETLIMITTEXT = 213 +EM_POSFROMCHAR = 214 +EM_CHARFROMPOS = 215 +EM_SETIMESTATUS = 216 +EM_GETIMESTATUS = 217 +WB_LEFT = 0 +WB_RIGHT = 1 +WB_ISDELIMITER = 2 +BS_PUSHBUTTON = 0 +BS_DEFPUSHBUTTON = 1 +BS_CHECKBOX = 2 +BS_AUTOCHECKBOX = 3 +BS_RADIOBUTTON = 4 +BS_3STATE = 5 +BS_AUTO3STATE = 6 +BS_GROUPBOX = 7 +BS_USERBUTTON = 8 +BS_AUTORADIOBUTTON = 9 +BS_OWNERDRAW = 11L +BS_LEFTTEXT = 32 +BS_TEXT = 0 +BS_ICON = 64 +BS_BITMAP = 128 +BS_LEFT = 256 +BS_RIGHT = 512 +BS_CENTER = 768 +BS_TOP = 1024 +BS_BOTTOM = 2048 +BS_VCENTER = 3072 +BS_PUSHLIKE = 4096 +BS_MULTILINE = 8192 +BS_NOTIFY = 16384 +BS_FLAT = 32768 +BS_RIGHTBUTTON = BS_LEFTTEXT +BN_CLICKED = 0 +BN_PAINT = 1 +BN_HILITE = 2 +BN_UNHILITE = 3 +BN_DISABLE = 4 +BN_DOUBLECLICKED = 5 +BN_PUSHED = BN_HILITE +BN_UNPUSHED = BN_UNHILITE +BN_DBLCLK = BN_DOUBLECLICKED +BN_SETFOCUS = 6 +BN_KILLFOCUS = 7 +BM_GETCHECK = 240 +BM_SETCHECK = 241 +BM_GETSTATE = 242 +BM_SETSTATE = 243 +BM_SETSTYLE = 244 +BM_CLICK = 245 +BM_GETIMAGE = 246 +BM_SETIMAGE = 247 +BST_UNCHECKED = 0 +BST_CHECKED = 1 +BST_INDETERMINATE = 2 +BST_PUSHED = 4 +BST_FOCUS = 8 +SS_LEFT = 0 +SS_CENTER = 1 +SS_RIGHT = 2 +SS_ICON = 3 +SS_BLACKRECT = 4 +SS_GRAYRECT = 5 +SS_WHITERECT = 6 +SS_BLACKFRAME = 7 +SS_GRAYFRAME = 8 +SS_WHITEFRAME = 9 +SS_USERITEM = 10 +SS_SIMPLE = 11 +SS_LEFTNOWORDWRAP = 12 +SS_BITMAP = 14 +SS_OWNERDRAW = 13 +SS_ENHMETAFILE = 15 +SS_ETCHEDHORZ = 16 +SS_ETCHEDVERT = 17 +SS_ETCHEDFRAME = 18 +SS_TYPEMASK = 31 +SS_NOPREFIX = 128 +SS_NOTIFY = 256 +SS_CENTERIMAGE = 512 +SS_RIGHTJUST = 1024 +SS_REALSIZEIMAGE = 2048 +SS_SUNKEN = 4096 +SS_ENDELLIPSIS = 16384 +SS_PATHELLIPSIS = 32768 +SS_WORDELLIPSIS = 49152 +SS_ELLIPSISMASK = 49152 +STM_SETICON = 368 +STM_GETICON = 369 +STM_SETIMAGE = 370 +STM_GETIMAGE = 371 +STN_CLICKED = 0 +STN_DBLCLK = 1 +STN_ENABLE = 2 +STN_DISABLE = 3 +STM_MSGMAX = 372 +DWL_MSGRESULT = 0 +DWL_DLGPROC = 4 +DWL_USER = 8 +DDL_READWRITE = 0 +DDL_READONLY = 1 +DDL_HIDDEN = 2 +DDL_SYSTEM = 4 +DDL_DIRECTORY = 16 +DDL_ARCHIVE = 32 +DDL_POSTMSGS = 8192 +DDL_DRIVES = 16384 +DDL_EXCLUSIVE = 32768 + +#from winuser.h line 153 +RT_CURSOR = 1 +RT_BITMAP = 2 +RT_ICON = 3 +RT_MENU = 4 +RT_DIALOG = 5 +RT_STRING = 6 +RT_FONTDIR = 7 +RT_FONT = 8 +RT_ACCELERATOR = 9 +RT_RCDATA = 10 +RT_MESSAGETABLE = 11 +DIFFERENCE = 11 +RT_GROUP_CURSOR = (RT_CURSOR + DIFFERENCE) +RT_GROUP_ICON = (RT_ICON + DIFFERENCE) +RT_VERSION = 16 +RT_DLGINCLUDE = 17 +RT_PLUGPLAY = 19 +RT_VXD = 20 +RT_ANICURSOR = 21 +RT_ANIICON = 22 +RT_HTML = 23 +# from winuser.h line 218 +SB_HORZ = 0 +SB_VERT = 1 +SB_CTL = 2 +SB_BOTH = 3 +SB_LINEUP = 0 +SB_LINELEFT = 0 +SB_LINEDOWN = 1 +SB_LINERIGHT = 1 +SB_PAGEUP = 2 +SB_PAGELEFT = 2 +SB_PAGEDOWN = 3 +SB_PAGERIGHT = 3 +SB_THUMBPOSITION = 4 +SB_THUMBTRACK = 5 +SB_TOP = 6 +SB_LEFT = 6 +SB_BOTTOM = 7 +SB_RIGHT = 7 +SB_ENDSCROLL = 8 +SW_HIDE = 0 +SW_SHOWNORMAL = 1 +SW_NORMAL = 1 +SW_SHOWMINIMIZED = 2 +SW_SHOWMAXIMIZED = 3 +SW_MAXIMIZE = 3 +SW_SHOWNOACTIVATE = 4 +SW_SHOW = 5 +SW_MINIMIZE = 6 +SW_SHOWMINNOACTIVE = 7 +SW_SHOWNA = 8 +SW_RESTORE = 9 +SW_SHOWDEFAULT = 10 +SW_FORCEMINIMIZE = 11 +SW_MAX = 11 +HIDE_WINDOW = 0 +SHOW_OPENWINDOW = 1 +SHOW_ICONWINDOW = 2 +SHOW_FULLSCREEN = 3 +SHOW_OPENNOACTIVATE = 4 +SW_PARENTCLOSING = 1 +SW_OTHERZOOM = 2 +SW_PARENTOPENING = 3 +SW_OTHERUNZOOM = 4 +AW_HOR_POSITIVE = 1 +AW_HOR_NEGATIVE = 2 +AW_VER_POSITIVE = 4 +AW_VER_NEGATIVE = 8 +AW_CENTER = 16 +AW_HIDE = 65536 +AW_ACTIVATE = 131072 +AW_SLIDE = 262144 +AW_BLEND = 524288 +KF_EXTENDED = 256 +KF_DLGMODE = 2048 +KF_MENUMODE = 4096 +KF_ALTDOWN = 8192 +KF_REPEAT = 16384 +KF_UP = 32768 +VK_LBUTTON = 1 +VK_RBUTTON = 2 +VK_CANCEL = 3 +VK_MBUTTON = 4 +VK_BACK = 8 +VK_TAB = 9 +VK_CLEAR = 12 +VK_RETURN = 13 +VK_SHIFT = 16 +VK_CONTROL = 17 +VK_MENU = 18 +VK_PAUSE = 19 +VK_CAPITAL = 20 +VK_KANA = 21 +VK_HANGEUL = 21 # old name - should be here for compatibility +VK_HANGUL = 21 +VK_JUNJA = 23 +VK_FINAL = 24 +VK_HANJA = 25 +VK_KANJI = 25 +VK_ESCAPE = 27 +VK_CONVERT = 28 +VK_NONCONVERT = 29 +VK_ACCEPT = 30 +VK_MODECHANGE = 31 +VK_SPACE = 32 +VK_PRIOR = 33 +VK_NEXT = 34 +VK_END = 35 +VK_HOME = 36 +VK_LEFT = 37 +VK_UP = 38 +VK_RIGHT = 39 +VK_DOWN = 40 +VK_SELECT = 41 +VK_PRINT = 42 +VK_EXECUTE = 43 +VK_SNAPSHOT = 44 +VK_INSERT = 45 +VK_DELETE = 46 +VK_HELP = 47 +VK_LWIN = 91 +VK_RWIN = 92 +VK_APPS = 93 +VK_NUMPAD0 = 96 +VK_NUMPAD1 = 97 +VK_NUMPAD2 = 98 +VK_NUMPAD3 = 99 +VK_NUMPAD4 = 100 +VK_NUMPAD5 = 101 +VK_NUMPAD6 = 102 +VK_NUMPAD7 = 103 +VK_NUMPAD8 = 104 +VK_NUMPAD9 = 105 +VK_MULTIPLY = 106 +VK_ADD = 107 +VK_SEPARATOR = 108 +VK_SUBTRACT = 109 +VK_DECIMAL = 110 +VK_DIVIDE = 111 +VK_F1 = 112 +VK_F2 = 113 +VK_F3 = 114 +VK_F4 = 115 +VK_F5 = 116 +VK_F6 = 117 +VK_F7 = 118 +VK_F8 = 119 +VK_F9 = 120 +VK_F10 = 121 +VK_F11 = 122 +VK_F12 = 123 +VK_F13 = 124 +VK_F14 = 125 +VK_F15 = 126 +VK_F16 = 127 +VK_F17 = 128 +VK_F18 = 129 +VK_F19 = 130 +VK_F20 = 131 +VK_F21 = 132 +VK_F22 = 133 +VK_F23 = 134 +VK_F24 = 135 +VK_NUMLOCK = 144 +VK_SCROLL = 145 +VK_LSHIFT = 160 +VK_RSHIFT = 161 +VK_LCONTROL = 162 +VK_RCONTROL = 163 +VK_LMENU = 164 +VK_RMENU = 165 +VK_PROCESSKEY = 229 +VK_ATTN = 246 +VK_CRSEL = 247 +VK_EXSEL = 248 +VK_EREOF = 249 +VK_PLAY = 250 +VK_ZOOM = 251 +VK_NONAME = 252 +VK_PA1 = 253 +VK_OEM_CLEAR = 254 +# multi-media related "keys" +MOUSEEVENTF_XDOWN = 0x0080 +MOUSEEVENTF_XUP = 0x0100 +MOUSEEVENTF_WHEEL = 0x0800 +VK_XBUTTON1 = 0x05 +VK_XBUTTON2 = 0x06 +VK_VOLUME_MUTE = 0xAD +VK_VOLUME_DOWN = 0xAE +VK_VOLUME_UP = 0xAF +VK_MEDIA_NEXT_TRACK = 0xB0 +VK_MEDIA_PREV_TRACK = 0xB1 +VK_MEDIA_PLAY_PAUSE = 0xB3 +VK_BROWSER_BACK = 0xA6 +VK_BROWSER_FORWARD = 0xA7 +WH_MIN = (-1) +WH_MSGFILTER = (-1) +WH_JOURNALRECORD = 0 +WH_JOURNALPLAYBACK = 1 +WH_KEYBOARD = 2 +WH_GETMESSAGE = 3 +WH_CALLWNDPROC = 4 +WH_CBT = 5 +WH_SYSMSGFILTER = 6 +WH_MOUSE = 7 +WH_HARDWARE = 8 +WH_DEBUG = 9 +WH_SHELL = 10 +WH_FOREGROUNDIDLE = 11 +WH_CALLWNDPROCRET = 12 +WH_KEYBOARD_LL = 13 +WH_MOUSE_LL = 14 +WH_MAX = 14 +WH_MINHOOK = WH_MIN +WH_MAXHOOK = WH_MAX +HC_ACTION = 0 +HC_GETNEXT = 1 +HC_SKIP = 2 +HC_NOREMOVE = 3 +HC_NOREM = HC_NOREMOVE +HC_SYSMODALON = 4 +HC_SYSMODALOFF = 5 +HCBT_MOVESIZE = 0 +HCBT_MINMAX = 1 +HCBT_QS = 2 +HCBT_CREATEWND = 3 +HCBT_DESTROYWND = 4 +HCBT_ACTIVATE = 5 +HCBT_CLICKSKIPPED = 6 +HCBT_KEYSKIPPED = 7 +HCBT_SYSCOMMAND = 8 +HCBT_SETFOCUS = 9 +MSGF_DIALOGBOX = 0 +MSGF_MESSAGEBOX = 1 +MSGF_MENU = 2 +#MSGF_MOVE = 3 +#MSGF_SIZE = 4 +MSGF_SCROLLBAR = 5 +MSGF_NEXTWINDOW = 6 +#MSGF_MAINLOOP = 8 +MSGF_MAX = 8 +MSGF_USER = 4096 +HSHELL_WINDOWCREATED = 1 +HSHELL_WINDOWDESTROYED = 2 +HSHELL_ACTIVATESHELLWINDOW = 3 +HSHELL_WINDOWACTIVATED = 4 +HSHELL_GETMINRECT = 5 +HSHELL_REDRAW = 6 +HSHELL_TASKMAN = 7 +HSHELL_LANGUAGE = 8 +HSHELL_ACCESSIBILITYSTATE = 11 +ACCESS_STICKYKEYS = 1 +ACCESS_FILTERKEYS = 2 +ACCESS_MOUSEKEYS = 3 +# winuser.h line 624 +LLKHF_EXTENDED = 1 +LLKHF_INJECTED = 16 +LLKHF_ALTDOWN = 32 +LLKHF_UP = 128 +LLMHF_INJECTED = 1 +# line 692 +HKL_PREV = 0 +HKL_NEXT = 1 +KLF_ACTIVATE = 1 +KLF_SUBSTITUTE_OK = 2 +KLF_UNLOADPREVIOUS = 4 +KLF_REORDER = 8 +KLF_REPLACELANG = 16 +KLF_NOTELLSHELL = 128 +KLF_SETFORPROCESS = 256 +KL_NAMELENGTH = 9 +DESKTOP_READOBJECTS = 1 +DESKTOP_CREATEWINDOW = 2 +DESKTOP_CREATEMENU = 4 +DESKTOP_HOOKCONTROL = 8 +DESKTOP_JOURNALRECORD = 16 +DESKTOP_JOURNALPLAYBACK = 32 +DESKTOP_ENUMERATE = 64 +DESKTOP_WRITEOBJECTS = 128 +DESKTOP_SWITCHDESKTOP = 256 +DF_ALLOWOTHERACCOUNTHOOK = 1 +WINSTA_ENUMDESKTOPS = 1 +WINSTA_READATTRIBUTES = 2 +WINSTA_ACCESSCLIPBOARD = 4 +WINSTA_CREATEDESKTOP = 8 +WINSTA_WRITEATTRIBUTES = 16 +WINSTA_ACCESSGLOBALATOMS = 32 +WINSTA_EXITWINDOWS = 64 +WINSTA_ENUMERATE = 256 +WINSTA_READSCREEN = 512 +WSF_VISIBLE = 1 +UOI_FLAGS = 1 +UOI_NAME = 2 +UOI_TYPE = 3 +UOI_USER_SID = 4 +GWL_WNDPROC = (-4) +GWL_HINSTANCE = (-6) +GWL_HWNDPARENT = (-8) +GWL_STYLE = (-16) +GWL_EXSTYLE = (-20) +GWL_USERDATA = (-21) +GWL_ID = (-12) +GCL_MENUNAME = (-8) +GCL_HBRBACKGROUND = (-10) +GCL_HCURSOR = (-12) +GCL_HICON = (-14) +GCL_HMODULE = (-16) +GCL_CBWNDEXTRA = (-18) +GCL_CBCLSEXTRA = (-20) +GCL_WNDPROC = (-24) +GCL_STYLE = (-26) +GCW_ATOM = (-32) +GCL_HICONSM = (-34) +# line 1291 +WM_NULL = 0 +WM_CREATE = 1 +WM_DESTROY = 2 +WM_MOVE = 3 +WM_SIZE = 5 +WM_ACTIVATE = 6 +WA_INACTIVE = 0 +WA_ACTIVE = 1 +WA_CLICKACTIVE = 2 +WM_SETFOCUS = 7 +WM_KILLFOCUS = 8 +WM_ENABLE = 10 +WM_SETREDRAW = 11 +WM_SETTEXT = 12 +WM_GETTEXT = 13 +WM_GETTEXTLENGTH = 14 +WM_PAINT = 15 +WM_CLOSE = 16 +WM_QUERYENDSESSION = 17 +WM_QUIT = 18 +WM_QUERYOPEN = 19 +WM_ERASEBKGND = 20 +WM_SYSCOLORCHANGE = 21 +WM_ENDSESSION = 22 +WM_SHOWWINDOW = 24 +WM_WININICHANGE = 26 +WM_SETTINGCHANGE = WM_WININICHANGE +WM_DEVMODECHANGE = 27 +WM_ACTIVATEAPP = 28 +WM_FONTCHANGE = 29 +WM_TIMECHANGE = 30 +WM_CANCELMODE = 31 +WM_SETCURSOR = 32 +WM_MOUSEACTIVATE = 33 +WM_CHILDACTIVATE = 34 +WM_QUEUESYNC = 35 +WM_GETMINMAXINFO = 36 +WM_PAINTICON = 38 +WM_ICONERASEBKGND = 39 +WM_NEXTDLGCTL = 40 +WM_SPOOLERSTATUS = 42 +WM_DRAWITEM = 43 +WM_MEASUREITEM = 44 +WM_DELETEITEM = 45 +WM_VKEYTOITEM = 46 +WM_CHARTOITEM = 47 +WM_SETFONT = 48 +WM_GETFONT = 49 +WM_SETHOTKEY = 50 +WM_GETHOTKEY = 51 +WM_QUERYDRAGICON = 55 +WM_COMPAREITEM = 57 +WM_GETOBJECT = 61 +WM_COMPACTING = 65 +WM_COMMNOTIFY = 68 +WM_WINDOWPOSCHANGING = 70 +WM_WINDOWPOSCHANGED = 71 +WM_POWER = 72 +PWR_OK = 1 +PWR_FAIL = (-1) +PWR_SUSPENDREQUEST = 1 +PWR_SUSPENDRESUME = 2 +PWR_CRITICALRESUME = 3 +WM_COPYDATA = 74 +WM_CANCELJOURNAL = 75 +WM_NOTIFY = 78 +WM_INPUTLANGCHANGEREQUEST = 80 +WM_INPUTLANGCHANGE = 81 +WM_TCARD = 82 +WM_HELP = 83 +WM_USERCHANGED = 84 +WM_NOTIFYFORMAT = 85 +NFR_ANSI = 1 +NFR_UNICODE = 2 +NF_QUERY = 3 +NF_REQUERY = 4 +WM_CONTEXTMENU = 123 +WM_STYLECHANGING = 124 +WM_STYLECHANGED = 125 +WM_DISPLAYCHANGE = 126 +WM_GETICON = 127 +WM_SETICON = 128 +WM_NCCREATE = 129 +WM_NCDESTROY = 130 +WM_NCCALCSIZE = 131 +WM_NCHITTEST = 132 +WM_NCPAINT = 133 +WM_NCACTIVATE = 134 +WM_GETDLGCODE = 135 +WM_SYNCPAINT = 136 +WM_NCMOUSEMOVE = 160 +WM_NCLBUTTONDOWN = 161 +WM_NCLBUTTONUP = 162 +WM_NCLBUTTONDBLCLK = 163 +WM_NCRBUTTONDOWN = 164 +WM_NCRBUTTONUP = 165 +WM_NCRBUTTONDBLCLK = 166 +WM_NCMBUTTONDOWN = 167 +WM_NCMBUTTONUP = 168 +WM_NCMBUTTONDBLCLK = 169 +WM_KEYFIRST = 256 +WM_KEYDOWN = 256 +WM_KEYUP = 257 +WM_CHAR = 258 +WM_DEADCHAR = 259 +WM_SYSKEYDOWN = 260 +WM_SYSKEYUP = 261 +WM_SYSCHAR = 262 +WM_SYSDEADCHAR = 263 +WM_KEYLAST = 264 +WM_IME_STARTCOMPOSITION = 269 +WM_IME_ENDCOMPOSITION = 270 +WM_IME_COMPOSITION = 271 +WM_IME_KEYLAST = 271 +WM_INITDIALOG = 272 +WM_COMMAND = 273 +WM_SYSCOMMAND = 274 +WM_TIMER = 275 +WM_HSCROLL = 276 +WM_VSCROLL = 277 +WM_INITMENU = 278 +WM_INITMENUPOPUP = 279 +WM_MENUSELECT = 287 +WM_MENUCHAR = 288 +WM_ENTERIDLE = 289 +WM_MENURBUTTONUP = 290 +WM_MENUDRAG = 291 +WM_MENUGETOBJECT = 292 +WM_UNINITMENUPOPUP = 293 +WM_MENUCOMMAND = 294 +WM_CTLCOLORMSGBOX = 306 +WM_CTLCOLOREDIT = 307 +WM_CTLCOLORLISTBOX = 308 +WM_CTLCOLORBTN = 309 +WM_CTLCOLORDLG = 310 +WM_CTLCOLORSCROLLBAR = 311 +WM_CTLCOLORSTATIC = 312 +WM_MOUSEFIRST = 512 +WM_MOUSEMOVE = 512 +WM_LBUTTONDOWN = 513 +WM_LBUTTONUP = 514 +WM_LBUTTONDBLCLK = 515 +WM_RBUTTONDOWN = 516 +WM_RBUTTONUP = 517 +WM_RBUTTONDBLCLK = 518 +WM_MBUTTONDOWN = 519 +WM_MBUTTONUP = 520 +WM_MBUTTONDBLCLK = 521 +WM_MOUSEWHEEL = 522 +WM_MOUSELAST = 522 +WHEEL_DELTA = 120 # Value for rolling one detent +WHEEL_PAGESCROLL = -1 # Scroll one page +WM_PARENTNOTIFY = 528 +MENULOOP_WINDOW = 0 +MENULOOP_POPUP = 1 +WM_ENTERMENULOOP = 529 +WM_EXITMENULOOP = 530 +WM_NEXTMENU = 531 +WM_SIZING = 532 +WM_CAPTURECHANGED = 533 +WM_MOVING = 534 +WM_POWERBROADCAST = 536 +PBT_APMQUERYSUSPEND = 0 +PBT_APMQUERYSTANDBY = 1 +PBT_APMQUERYSUSPENDFAILED = 2 +PBT_APMQUERYSTANDBYFAILED = 3 +PBT_APMSUSPEND = 4 +PBT_APMSTANDBY = 5 +PBT_APMRESUMECRITICAL = 6 +PBT_APMRESUMESUSPEND = 7 +PBT_APMRESUMESTANDBY = 8 +PBTF_APMRESUMEFROMFAILURE = 1 +PBT_APMBATTERYLOW = 9 +PBT_APMPOWERSTATUSCHANGE = 10 +PBT_APMOEMEVENT = 11 +PBT_APMRESUMEAUTOMATIC = 18 +WM_DEVICECHANGE = 537 +WM_MDICREATE = 544 +WM_MDIDESTROY = 545 +WM_MDIACTIVATE = 546 +WM_MDIRESTORE = 547 +WM_MDINEXT = 548 +WM_MDIMAXIMIZE = 549 +WM_MDITILE = 550 +WM_MDICASCADE = 551 +WM_MDIICONARRANGE = 552 +WM_MDIGETACTIVE = 553 +WM_MDISETMENU = 560 +WM_ENTERSIZEMOVE = 561 +WM_EXITSIZEMOVE = 562 +WM_DROPFILES = 563 +WM_MDIREFRESHMENU = 564 +WM_IME_SETCONTEXT = 641 +WM_IME_NOTIFY = 642 +WM_IME_CONTROL = 643 +WM_IME_COMPOSITIONFULL = 644 +WM_IME_SELECT = 645 +WM_IME_CHAR = 646 +WM_IME_REQUEST = 648 +WM_IME_KEYDOWN = 656 +WM_IME_KEYUP = 657 +WM_MOUSEHOVER = 673 +WM_MOUSELEAVE = 675 +WM_CUT = 768 +WM_COPY = 769 +WM_PASTE = 770 +WM_CLEAR = 771 +WM_UNDO = 772 +WM_RENDERFORMAT = 773 +WM_RENDERALLFORMATS = 774 +WM_DESTROYCLIPBOARD = 775 +WM_DRAWCLIPBOARD = 776 +WM_PAINTCLIPBOARD = 777 +WM_VSCROLLCLIPBOARD = 778 +WM_SIZECLIPBOARD = 779 +WM_ASKCBFORMATNAME = 780 +WM_CHANGECBCHAIN = 781 +WM_HSCROLLCLIPBOARD = 782 +WM_QUERYNEWPALETTE = 783 +WM_PALETTEISCHANGING = 784 +WM_PALETTECHANGED = 785 +WM_HOTKEY = 786 +WM_PRINT = 791 +WM_PRINTCLIENT = 792 +WM_HANDHELDFIRST = 856 +WM_HANDHELDLAST = 863 +WM_AFXFIRST = 864 +WM_AFXLAST = 895 +WM_PENWINFIRST = 896 +WM_PENWINLAST = 911 +WM_APP = 32768 +WMSZ_LEFT = 1 +WMSZ_RIGHT = 2 +WMSZ_TOP = 3 +WMSZ_TOPLEFT = 4 +WMSZ_TOPRIGHT = 5 +WMSZ_BOTTOM = 6 +WMSZ_BOTTOMLEFT = 7 +WMSZ_BOTTOMRIGHT = 8 +#ST_BEGINSWP = 0 +#ST_ENDSWP = 1 +HTERROR = (-2) +HTTRANSPARENT = (-1) +HTNOWHERE = 0 +HTCLIENT = 1 +HTCAPTION = 2 +HTSYSMENU = 3 +HTGROWBOX = 4 +HTSIZE = HTGROWBOX +HTMENU = 5 +HTHSCROLL = 6 +HTVSCROLL = 7 +HTMINBUTTON = 8 +HTMAXBUTTON = 9 +HTLEFT = 10 +HTRIGHT = 11 +HTTOP = 12 +HTTOPLEFT = 13 +HTTOPRIGHT = 14 +HTBOTTOM = 15 +HTBOTTOMLEFT = 16 +HTBOTTOMRIGHT = 17 +HTBORDER = 18 +HTREDUCE = HTMINBUTTON +HTZOOM = HTMAXBUTTON +HTSIZEFIRST = HTLEFT +HTSIZELAST = HTBOTTOMRIGHT +HTOBJECT = 19 +HTCLOSE = 20 +HTHELP = 21 +SMTO_NORMAL = 0 +SMTO_BLOCK = 1 +SMTO_ABORTIFHUNG = 2 +SMTO_NOTIMEOUTIFNOTHUNG = 8 +MA_ACTIVATE = 1 +MA_ACTIVATEANDEAT = 2 +MA_NOACTIVATE = 3 +MA_NOACTIVATEANDEAT = 4 +ICON_SMALL = 0 +ICON_BIG = 1 +SIZE_RESTORED = 0 +SIZE_MINIMIZED = 1 +SIZE_MAXIMIZED = 2 +SIZE_MAXSHOW = 3 +SIZE_MAXHIDE = 4 +SIZENORMAL = SIZE_RESTORED +SIZEICONIC = SIZE_MINIMIZED +SIZEFULLSCREEN = SIZE_MAXIMIZED +SIZEZOOMSHOW = SIZE_MAXSHOW +SIZEZOOMHIDE = SIZE_MAXHIDE +WVR_ALIGNTOP = 16 +WVR_ALIGNLEFT = 32 +WVR_ALIGNBOTTOM = 64 +WVR_ALIGNRIGHT = 128 +WVR_HREDRAW = 256 +WVR_VREDRAW = 512 +WVR_REDRAW = (WVR_HREDRAW | WVR_VREDRAW) +WVR_VALIDRECTS = 1024 +MK_LBUTTON = 1 +MK_RBUTTON = 2 +MK_SHIFT = 4 +MK_CONTROL = 8 +MK_MBUTTON = 16 +TME_HOVER = 1 +TME_LEAVE = 2 +TME_QUERY = 1073741824 +TME_CANCEL = -2147483648 +HOVER_DEFAULT = -1 +WS_OVERLAPPED = 0 +WS_POPUP = -2147483648 +WS_CHILD = 1073741824 +WS_MINIMIZE = 536870912 +WS_VISIBLE = 268435456 +WS_DISABLED = 134217728 +WS_CLIPSIBLINGS = 67108864 +WS_CLIPCHILDREN = 33554432 +WS_MAXIMIZE = 16777216 +WS_CAPTION = 12582912 +WS_BORDER = 8388608 +WS_DLGFRAME = 4194304 +WS_VSCROLL = 2097152 +WS_HSCROLL = 1048576 +WS_SYSMENU = 524288 +WS_THICKFRAME = 262144 +WS_GROUP = 131072 +WS_TABSTOP = 65536 +WS_MINIMIZEBOX = 131072 +WS_MAXIMIZEBOX = 65536 +WS_TILED = WS_OVERLAPPED +WS_ICONIC = WS_MINIMIZE +WS_SIZEBOX = WS_THICKFRAME +WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED | \ + WS_CAPTION | \ + WS_SYSMENU | \ + WS_THICKFRAME | \ + WS_MINIMIZEBOX | \ + WS_MAXIMIZEBOX) +WS_POPUPWINDOW = (WS_POPUP | \ + WS_BORDER | \ + WS_SYSMENU) +WS_CHILDWINDOW = (WS_CHILD) +WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW +WS_EX_DLGMODALFRAME = 1 +WS_EX_NOPARENTNOTIFY = 4 +WS_EX_TOPMOST = 8 +WS_EX_ACCEPTFILES = 16 +WS_EX_TRANSPARENT = 32 +WS_EX_MDICHILD = 64 +WS_EX_TOOLWINDOW = 128 +WS_EX_WINDOWEDGE = 256 +WS_EX_CLIENTEDGE = 512 +WS_EX_CONTEXTHELP = 1024 +WS_EX_RIGHT = 4096 +WS_EX_LEFT = 0 +WS_EX_RTLREADING = 8192 +WS_EX_LTRREADING = 0 +WS_EX_LEFTSCROLLBAR = 16384 +WS_EX_RIGHTSCROLLBAR = 0 +WS_EX_CONTROLPARENT = 65536 +WS_EX_STATICEDGE = 131072 +WS_EX_APPWINDOW = 262144 +WS_EX_OVERLAPPEDWINDOW = (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE) +WS_EX_PALETTEWINDOW = (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST) +WS_EX_LAYERED = 0x00080000 +WS_EX_NOINHERITLAYOUT = 0x00100000 +WS_EX_LAYOUTRTL = 0x00400000 +WS_EX_COMPOSITED = 0x02000000 +WS_EX_NOACTIVATE = 0x08000000 + +CS_VREDRAW = 1 +CS_HREDRAW = 2 +#CS_KEYCVTWINDOW = 0x0004 +CS_DBLCLKS = 8 +CS_OWNDC = 32 +CS_CLASSDC = 64 +CS_PARENTDC = 128 +#CS_NOKEYCVT = 0x0100 +CS_NOCLOSE = 512 +CS_SAVEBITS = 2048 +CS_BYTEALIGNCLIENT = 4096 +CS_BYTEALIGNWINDOW = 8192 +CS_GLOBALCLASS = 16384 +CS_IME = 65536 +PRF_CHECKVISIBLE = 1 +PRF_NONCLIENT = 2 +PRF_CLIENT = 4 +PRF_ERASEBKGND = 8 +PRF_CHILDREN = 16 +PRF_OWNED = 32 +BDR_RAISEDOUTER = 1 +BDR_SUNKENOUTER = 2 +BDR_RAISEDINNER = 4 +BDR_SUNKENINNER = 8 +BDR_OUTER = 3 +BDR_INNER = 12 +#BDR_RAISED = 0x0005 +#BDR_SUNKEN = 0x000a +EDGE_RAISED = (BDR_RAISEDOUTER | BDR_RAISEDINNER) +EDGE_SUNKEN = (BDR_SUNKENOUTER | BDR_SUNKENINNER) +EDGE_ETCHED = (BDR_SUNKENOUTER | BDR_RAISEDINNER) +EDGE_BUMP = (BDR_RAISEDOUTER | BDR_SUNKENINNER) + +# winuser.h line 2879 +ISMEX_NOSEND = 0 +ISMEX_SEND = 1 +ISMEX_NOTIFY = 2 +ISMEX_CALLBACK = 4 +ISMEX_REPLIED = 8 +CW_USEDEFAULT = -2147483648 +FLASHW_STOP = 0 +FLASHW_CAPTION = 1 +FLASHW_TRAY = 2 +FLASHW_ALL = (FLASHW_CAPTION | FLASHW_TRAY) +FLASHW_TIMER = 4 +FLASHW_TIMERNOFG = 12 + +# winuser.h line 7963 +DS_ABSALIGN = 1 +DS_SYSMODAL = 2 +DS_LOCALEDIT = 32 +DS_SETFONT = 64 +DS_MODALFRAME = 128 +DS_NOIDLEMSG = 256 +DS_SETFOREGROUND = 512 +DS_3DLOOK = 4 +DS_FIXEDSYS = 8 +DS_NOFAILCREATE = 16 +DS_CONTROL = 1024 +DS_CENTER = 2048 +DS_CENTERMOUSE = 4096 +DS_CONTEXTHELP = 8192 +DM_GETDEFID = (WM_USER+0) +DM_SETDEFID = (WM_USER+1) +DM_REPOSITION = (WM_USER+2) +#PSM_PAGEINFO = (WM_USER+100) +#PSM_SHEETINFO = (WM_USER+101) +#PSI_SETACTIVE = 0x0001 +#PSI_KILLACTIVE = 0x0002 +#PSI_APPLY = 0x0003 +#PSI_RESET = 0x0004 +#PSI_HASHELP = 0x0005 +#PSI_HELP = 0x0006 +#PSI_CHANGED = 0x0001 +#PSI_GUISTART = 0x0002 +#PSI_REBOOT = 0x0003 +#PSI_GETSIBLINGS = 0x0004 +DC_HASDEFID = 21323 +DLGC_WANTARROWS = 1 +DLGC_WANTTAB = 2 +DLGC_WANTALLKEYS = 4 +DLGC_WANTMESSAGE = 4 +DLGC_HASSETSEL = 8 +DLGC_DEFPUSHBUTTON = 16 +DLGC_UNDEFPUSHBUTTON = 32 +DLGC_RADIOBUTTON = 64 +DLGC_WANTCHARS = 128 +DLGC_STATIC = 256 +DLGC_BUTTON = 8192 +LB_CTLCODE = 0 +LB_OKAY = 0 +LB_ERR = (-1) +LB_ERRSPACE = (-2) +LBN_ERRSPACE = (-2) +LBN_SELCHANGE = 1 +LBN_DBLCLK = 2 +LBN_SELCANCEL = 3 +LBN_SETFOCUS = 4 +LBN_KILLFOCUS = 5 +LB_ADDSTRING = 384 +LB_INSERTSTRING = 385 +LB_DELETESTRING = 386 +LB_SELITEMRANGEEX = 387 +LB_RESETCONTENT = 388 +LB_SETSEL = 389 +LB_SETCURSEL = 390 +LB_GETSEL = 391 +LB_GETCURSEL = 392 +LB_GETTEXT = 393 +LB_GETTEXTLEN = 394 +LB_GETCOUNT = 395 +LB_SELECTSTRING = 396 +LB_DIR = 397 +LB_GETTOPINDEX = 398 +LB_FINDSTRING = 399 +LB_GETSELCOUNT = 400 +LB_GETSELITEMS = 401 +LB_SETTABSTOPS = 402 +LB_GETHORIZONTALEXTENT = 403 +LB_SETHORIZONTALEXTENT = 404 +LB_SETCOLUMNWIDTH = 405 +LB_ADDFILE = 406 +LB_SETTOPINDEX = 407 +LB_GETITEMRECT = 408 +LB_GETITEMDATA = 409 +LB_SETITEMDATA = 410 +LB_SELITEMRANGE = 411 +LB_SETANCHORINDEX = 412 +LB_GETANCHORINDEX = 413 +LB_SETCARETINDEX = 414 +LB_GETCARETINDEX = 415 +LB_SETITEMHEIGHT = 416 +LB_GETITEMHEIGHT = 417 +LB_FINDSTRINGEXACT = 418 +LB_SETLOCALE = 421 +LB_GETLOCALE = 422 +LB_SETCOUNT = 423 +LB_INITSTORAGE = 424 +LB_ITEMFROMPOINT = 425 +LB_MSGMAX = 432 +LBS_NOTIFY = 1 +LBS_SORT = 2 +LBS_NOREDRAW = 4 +LBS_MULTIPLESEL = 8 +LBS_OWNERDRAWFIXED = 16 +LBS_OWNERDRAWVARIABLE = 32 +LBS_HASSTRINGS = 64 +LBS_USETABSTOPS = 128 +LBS_NOINTEGRALHEIGHT = 256 +LBS_MULTICOLUMN = 512 +LBS_WANTKEYBOARDINPUT = 1024 +LBS_EXTENDEDSEL = 2048 +LBS_DISABLENOSCROLL = 4096 +LBS_NODATA = 8192 +LBS_NOSEL = 16384 +LBS_STANDARD = (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER) +LVS_REPORT = 1 +LVS_SINGLESEL = 4 +LVM_INSERTCOLUMN = 4193 +LVM_INSERTITEM = 4173 +LVM_DELETEITEM = 4104 +LVM_DELETEALLITEMS = 4105 +LVM_GETITEMCOUNT = 4100 +LVM_GETITEM = 4171 +LVM_SETITEM = 4172 +LVCF_WIDTH = 2 +LVCF_TEXT = 4 +LVCF_SUBITEM = 8 +LVIF_TEXT = 1 +LVIF_PARAM = 4 +LVN_ITEMCHANGED = 4294967195 +LVM_GETNEXTITEM = 4108 +LVNI_SELECTED = 2 +LVIS_SELECTED = 2 +TBS_TOOLTIPS = 256 +TBM_SETRANGE = 1030 +TBM_SETRANGEMAX = 1032 +TBM_SETRANGEMIN = 1031 +TBM_GETPOS = 1024 +TBM_SETBUDDY = 1056 +CB_OKAY = 0 +CB_ERR = (-1) +CB_ERRSPACE = (-2) +CBN_ERRSPACE = (-1) +CBN_SELCHANGE = 1 +CBN_DBLCLK = 2 +CBN_SETFOCUS = 3 +CBN_KILLFOCUS = 4 +CBN_EDITCHANGE = 5 +CBN_EDITUPDATE = 6 +CBN_DROPDOWN = 7 +CBN_CLOSEUP = 8 +CBN_SELENDOK = 9 +CBN_SELENDCANCEL = 10 +CBS_SIMPLE = 1 +CBS_DROPDOWN = 2 +CBS_DROPDOWNLIST = 3 +CBS_OWNERDRAWFIXED = 16 +CBS_OWNERDRAWVARIABLE = 32 +CBS_AUTOHSCROLL = 64 +CBS_OEMCONVERT = 128 +CBS_SORT = 256 +CBS_HASSTRINGS = 512 +CBS_NOINTEGRALHEIGHT = 1024 +CBS_DISABLENOSCROLL = 2048 +CBS_UPPERCASE = 8192 +CBS_LOWERCASE = 16384 +CB_GETEDITSEL = 320 +CB_LIMITTEXT = 321 +CB_SETEDITSEL = 322 +CB_ADDSTRING = 323 +CB_DELETESTRING = 324 +CB_DIR = 325 +CB_GETCOUNT = 326 +CB_GETCURSEL = 327 +CB_GETLBTEXT = 328 +CB_GETLBTEXTLEN = 329 +CB_INSERTSTRING = 330 +CB_RESETCONTENT = 331 +CB_FINDSTRING = 332 +CB_SELECTSTRING = 333 +CB_SETCURSEL = 334 +CB_SHOWDROPDOWN = 335 +CB_GETITEMDATA = 336 +CB_SETITEMDATA = 337 +CB_GETDROPPEDCONTROLRECT = 338 +CB_SETITEMHEIGHT = 339 +CB_GETITEMHEIGHT = 340 +CB_SETEXTENDEDUI = 341 +CB_GETEXTENDEDUI = 342 +CB_GETDROPPEDSTATE = 343 +CB_FINDSTRINGEXACT = 344 +CB_SETLOCALE = 345 +CB_GETLOCALE = 346 +CB_GETTOPINDEX = 347 +CB_SETTOPINDEX = 348 +CB_GETHORIZONTALEXTENT = 349 +CB_SETHORIZONTALEXTENT = 350 +CB_GETDROPPEDWIDTH = 351 +CB_SETDROPPEDWIDTH = 352 +CB_INITSTORAGE = 353 +CB_MSGMAX = 354 +SBS_HORZ = 0 +SBS_VERT = 1 +SBS_TOPALIGN = 2 +SBS_LEFTALIGN = 2 +SBS_BOTTOMALIGN = 4 +SBS_RIGHTALIGN = 4 +SBS_SIZEBOXTOPLEFTALIGN = 2 +SBS_SIZEBOXBOTTOMRIGHTALIGN = 4 +SBS_SIZEBOX = 8 +SBS_SIZEGRIP = 16 +SBM_SETPOS = 224 +SBM_GETPOS = 225 +SBM_SETRANGE = 226 +SBM_SETRANGEREDRAW = 230 +SBM_GETRANGE = 227 +SBM_ENABLE_ARROWS = 228 +SBM_SETSCROLLINFO = 233 +SBM_GETSCROLLINFO = 234 +SIF_RANGE = 1 +SIF_PAGE = 2 +SIF_POS = 4 +SIF_DISABLENOSCROLL = 8 +SIF_TRACKPOS = 16 +SIF_ALL = (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS) +MDIS_ALLCHILDSTYLES = 1 +MDITILE_VERTICAL = 0 +MDITILE_HORIZONTAL = 1 +MDITILE_SKIPDISABLED = 2 + +IMC_GETCANDIDATEPOS = 7 +IMC_SETCANDIDATEPOS = 8 +IMC_GETCOMPOSITIONFONT = 9 +IMC_SETCOMPOSITIONFONT = 10 +IMC_GETCOMPOSITIONWINDOW = 11 +IMC_SETCOMPOSITIONWINDOW = 12 +IMC_GETSTATUSWINDOWPOS = 15 +IMC_SETSTATUSWINDOWPOS = 16 +IMC_CLOSESTATUSWINDOW = 33 +IMC_OPENSTATUSWINDOW = 34 +# Generated by h2py from \msvc20\include\winnt.h +# hacked and split by mhammond. +DELETE = (65536) +READ_CONTROL = (131072) +WRITE_DAC = (262144) +WRITE_OWNER = (524288) +SYNCHRONIZE = (1048576) +STANDARD_RIGHTS_REQUIRED = (983040) +STANDARD_RIGHTS_READ = (READ_CONTROL) +STANDARD_RIGHTS_WRITE = (READ_CONTROL) +STANDARD_RIGHTS_EXECUTE = (READ_CONTROL) +STANDARD_RIGHTS_ALL = (2031616) +SPECIFIC_RIGHTS_ALL = (65535) +ACCESS_SYSTEM_SECURITY = (16777216) +MAXIMUM_ALLOWED = (33554432) +GENERIC_READ = (-2147483648) +GENERIC_WRITE = (1073741824) +GENERIC_EXECUTE = (536870912) +GENERIC_ALL = (268435456) + +SERVICE_KERNEL_DRIVER = 1 +SERVICE_FILE_SYSTEM_DRIVER = 2 +SERVICE_ADAPTER = 4 +SERVICE_RECOGNIZER_DRIVER = 8 +SERVICE_DRIVER = (SERVICE_KERNEL_DRIVER | \ + SERVICE_FILE_SYSTEM_DRIVER | \ + SERVICE_RECOGNIZER_DRIVER) +SERVICE_WIN32_OWN_PROCESS = 16 +SERVICE_WIN32_SHARE_PROCESS = 32 +SERVICE_WIN32 = (SERVICE_WIN32_OWN_PROCESS | \ + SERVICE_WIN32_SHARE_PROCESS) +SERVICE_INTERACTIVE_PROCESS = 256 +SERVICE_TYPE_ALL = (SERVICE_WIN32 | \ + SERVICE_ADAPTER | \ + SERVICE_DRIVER | \ + SERVICE_INTERACTIVE_PROCESS) +SERVICE_BOOT_START = 0 +SERVICE_SYSTEM_START = 1 +SERVICE_AUTO_START = 2 +SERVICE_DEMAND_START = 3 +SERVICE_DISABLED = 4 +SERVICE_ERROR_IGNORE = 0 +SERVICE_ERROR_NORMAL = 1 +SERVICE_ERROR_SEVERE = 2 +SERVICE_ERROR_CRITICAL = 3 +TAPE_ERASE_SHORT = 0 +TAPE_ERASE_LONG = 1 +TAPE_LOAD = 0 +TAPE_UNLOAD = 1 +TAPE_TENSION = 2 +TAPE_LOCK = 3 +TAPE_UNLOCK = 4 +TAPE_FORMAT = 5 +TAPE_SETMARKS = 0 +TAPE_FILEMARKS = 1 +TAPE_SHORT_FILEMARKS = 2 +TAPE_LONG_FILEMARKS = 3 +TAPE_ABSOLUTE_POSITION = 0 +TAPE_LOGICAL_POSITION = 1 +TAPE_PSEUDO_LOGICAL_POSITION = 2 +TAPE_REWIND = 0 +TAPE_ABSOLUTE_BLOCK = 1 +TAPE_LOGICAL_BLOCK = 2 +TAPE_PSEUDO_LOGICAL_BLOCK = 3 +TAPE_SPACE_END_OF_DATA = 4 +TAPE_SPACE_RELATIVE_BLOCKS = 5 +TAPE_SPACE_FILEMARKS = 6 +TAPE_SPACE_SEQUENTIAL_FMKS = 7 +TAPE_SPACE_SETMARKS = 8 +TAPE_SPACE_SEQUENTIAL_SMKS = 9 +TAPE_DRIVE_FIXED = 1 +TAPE_DRIVE_SELECT = 2 +TAPE_DRIVE_INITIATOR = 4 +TAPE_DRIVE_ERASE_SHORT = 16 +TAPE_DRIVE_ERASE_LONG = 32 +TAPE_DRIVE_ERASE_BOP_ONLY = 64 +TAPE_DRIVE_ERASE_IMMEDIATE = 128 +TAPE_DRIVE_TAPE_CAPACITY = 256 +TAPE_DRIVE_TAPE_REMAINING = 512 +TAPE_DRIVE_FIXED_BLOCK = 1024 +TAPE_DRIVE_VARIABLE_BLOCK = 2048 +TAPE_DRIVE_WRITE_PROTECT = 4096 +TAPE_DRIVE_EOT_WZ_SIZE = 8192 +TAPE_DRIVE_ECC = 65536 +TAPE_DRIVE_COMPRESSION = 131072 +TAPE_DRIVE_PADDING = 262144 +TAPE_DRIVE_REPORT_SMKS = 524288 +TAPE_DRIVE_GET_ABSOLUTE_BLK = 1048576 +TAPE_DRIVE_GET_LOGICAL_BLK = 2097152 +TAPE_DRIVE_SET_EOT_WZ_SIZE = 4194304 +TAPE_DRIVE_LOAD_UNLOAD = -2147483647 +TAPE_DRIVE_TENSION = -2147483646 +TAPE_DRIVE_LOCK_UNLOCK = -2147483644 +TAPE_DRIVE_REWIND_IMMEDIATE = -2147483640 +TAPE_DRIVE_SET_BLOCK_SIZE = -2147483632 +TAPE_DRIVE_LOAD_UNLD_IMMED = -2147483616 +TAPE_DRIVE_TENSION_IMMED = -2147483584 +TAPE_DRIVE_LOCK_UNLK_IMMED = -2147483520 +TAPE_DRIVE_SET_ECC = -2147483392 +TAPE_DRIVE_SET_COMPRESSION = -2147483136 +TAPE_DRIVE_SET_PADDING = -2147482624 +TAPE_DRIVE_SET_REPORT_SMKS = -2147481600 +TAPE_DRIVE_ABSOLUTE_BLK = -2147479552 +TAPE_DRIVE_ABS_BLK_IMMED = -2147475456 +TAPE_DRIVE_LOGICAL_BLK = -2147467264 +TAPE_DRIVE_LOG_BLK_IMMED = -2147450880 +TAPE_DRIVE_END_OF_DATA = -2147418112 +TAPE_DRIVE_RELATIVE_BLKS = -2147352576 +TAPE_DRIVE_FILEMARKS = -2147221504 +TAPE_DRIVE_SEQUENTIAL_FMKS = -2146959360 +TAPE_DRIVE_SETMARKS = -2146435072 +TAPE_DRIVE_SEQUENTIAL_SMKS = -2145386496 +TAPE_DRIVE_REVERSE_POSITION = -2143289344 +TAPE_DRIVE_SPACE_IMMEDIATE = -2139095040 +TAPE_DRIVE_WRITE_SETMARKS = -2130706432 +TAPE_DRIVE_WRITE_FILEMARKS = -2113929216 +TAPE_DRIVE_WRITE_SHORT_FMKS = -2080374784 +TAPE_DRIVE_WRITE_LONG_FMKS = -2013265920 +TAPE_DRIVE_WRITE_MARK_IMMED = -1879048192 +TAPE_DRIVE_FORMAT = -1610612736 +TAPE_DRIVE_FORMAT_IMMEDIATE = -1073741824 +TAPE_FIXED_PARTITIONS = 0 +TAPE_SELECT_PARTITIONS = 1 +TAPE_INITIATOR_PARTITIONS = 2 +# Generated by h2py from \msvc20\include\winnt.h +# hacked and split by mhammond. + +APPLICATION_ERROR_MASK = 536870912 +ERROR_SEVERITY_SUCCESS = 0 +ERROR_SEVERITY_INFORMATIONAL = 1073741824 +ERROR_SEVERITY_WARNING = -2147483648 +ERROR_SEVERITY_ERROR = -1073741824 +MINCHAR = 128 +MAXCHAR = 127 +MINSHORT = 32768 +MAXSHORT = 32767 +MINLONG = -2147483648 +MAXLONG = 2147483647 +MAXBYTE = 255 +MAXWORD = 65535 +MAXDWORD = -1 +LANG_NEUTRAL = 0 +LANG_BULGARIAN = 2 +LANG_CHINESE = 4 +LANG_CROATIAN = 26 +LANG_CZECH = 5 +LANG_DANISH = 6 +LANG_DUTCH = 19 +LANG_ENGLISH = 9 +LANG_FINNISH = 11 +LANG_FRENCH = 12 +LANG_GERMAN = 7 +LANG_GREEK = 8 +LANG_HUNGARIAN = 14 +LANG_ICELANDIC = 15 +LANG_ITALIAN = 16 +LANG_JAPANESE = 17 +LANG_KOREAN = 18 +LANG_NORWEGIAN = 20 +LANG_POLISH = 21 +LANG_PORTUGUESE = 22 +LANG_ROMANIAN = 24 +LANG_RUSSIAN = 25 +LANG_SLOVAK = 27 +LANG_SLOVENIAN = 36 +LANG_SPANISH = 10 +LANG_SWEDISH = 29 +LANG_TURKISH = 31 +SUBLANG_NEUTRAL = 0 +SUBLANG_DEFAULT = 1 +SUBLANG_SYS_DEFAULT = 2 +SUBLANG_CHINESE_TRADITIONAL = 1 +SUBLANG_CHINESE_SIMPLIFIED = 2 +SUBLANG_CHINESE_HONGKONG = 3 +SUBLANG_CHINESE_SINGAPORE = 4 +SUBLANG_DUTCH = 1 +SUBLANG_DUTCH_BELGIAN = 2 +SUBLANG_ENGLISH_US = 1 +SUBLANG_ENGLISH_UK = 2 +SUBLANG_ENGLISH_AUS = 3 +SUBLANG_ENGLISH_CAN = 4 +SUBLANG_ENGLISH_NZ = 5 +SUBLANG_ENGLISH_EIRE = 6 +SUBLANG_FRENCH = 1 +SUBLANG_FRENCH_BELGIAN = 2 +SUBLANG_FRENCH_CANADIAN = 3 +SUBLANG_FRENCH_SWISS = 4 +SUBLANG_GERMAN = 1 +SUBLANG_GERMAN_SWISS = 2 +SUBLANG_GERMAN_AUSTRIAN = 3 +SUBLANG_ITALIAN = 1 +SUBLANG_ITALIAN_SWISS = 2 +SUBLANG_NORWEGIAN_BOKMAL = 1 +SUBLANG_NORWEGIAN_NYNORSK = 2 +SUBLANG_PORTUGUESE = 2 +SUBLANG_PORTUGUESE_BRAZILIAN = 1 +SUBLANG_SPANISH = 1 +SUBLANG_SPANISH_MEXICAN = 2 +SUBLANG_SPANISH_MODERN = 3 +SORT_DEFAULT = 0 +SORT_JAPANESE_XJIS = 0 +SORT_JAPANESE_UNICODE = 1 +SORT_CHINESE_BIG5 = 0 +SORT_CHINESE_UNICODE = 1 +SORT_KOREAN_KSC = 0 +SORT_KOREAN_UNICODE = 1 +def PRIMARYLANGID(lgid): return ((lgid) & 1023) + +def SUBLANGID(lgid): return ((lgid) >> 10) + +NLS_VALID_LOCALE_MASK = 1048575 +CONTEXT_PORTABLE_32BIT = 1048576 +CONTEXT_ALPHA = 131072 +CONTEXT_CONTROL = (CONTEXT_ALPHA | 1) +CONTEXT_FLOATING_POINT = (CONTEXT_ALPHA | 2) +CONTEXT_INTEGER = (CONTEXT_ALPHA | 4) +CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER) +SIZE_OF_80387_REGISTERS = 80 +CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER) +CONTEXT_CONTROL = 1 +CONTEXT_FLOATING_POINT = 2 +CONTEXT_INTEGER = 4 +CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER) +PROCESS_TERMINATE = (1) +PROCESS_CREATE_THREAD = (2) +PROCESS_VM_OPERATION = (8) +PROCESS_VM_READ = (16) +PROCESS_VM_WRITE = (32) +PROCESS_DUP_HANDLE = (64) +PROCESS_CREATE_PROCESS = (128) +PROCESS_SET_QUOTA = (256) +PROCESS_SET_INFORMATION = (512) +PROCESS_QUERY_INFORMATION = (1024) +PROCESS_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 4095) +THREAD_TERMINATE = (1) +THREAD_SUSPEND_RESUME = (2) +THREAD_GET_CONTEXT = (8) +THREAD_SET_CONTEXT = (16) +THREAD_SET_INFORMATION = (32) +THREAD_QUERY_INFORMATION = (64) +THREAD_SET_THREAD_TOKEN = (128) +THREAD_IMPERSONATE = (256) +THREAD_DIRECT_IMPERSONATION = (512) +TLS_MINIMUM_AVAILABLE = 64 +EVENT_MODIFY_STATE = 2 +MUTANT_QUERY_STATE = 1 +SEMAPHORE_MODIFY_STATE = 2 +TIME_ZONE_ID_UNKNOWN = 0 +TIME_ZONE_ID_STANDARD = 1 +TIME_ZONE_ID_DAYLIGHT = 2 +PROCESSOR_INTEL_386 = 386 +PROCESSOR_INTEL_486 = 486 +PROCESSOR_INTEL_PENTIUM = 586 +PROCESSOR_INTEL_860 = 860 +PROCESSOR_MIPS_R2000 = 2000 +PROCESSOR_MIPS_R3000 = 3000 +PROCESSOR_MIPS_R4000 = 4000 +PROCESSOR_ALPHA_21064 = 21064 +PROCESSOR_PPC_601 = 601 +PROCESSOR_PPC_603 = 603 +PROCESSOR_PPC_604 = 604 +PROCESSOR_PPC_620 = 620 +SECTION_QUERY = 1 +SECTION_MAP_WRITE = 2 +SECTION_MAP_READ = 4 +SECTION_MAP_EXECUTE = 8 +SECTION_EXTEND_SIZE = 16 +PAGE_NOACCESS = 1 +PAGE_READONLY = 2 +PAGE_READWRITE = 4 +PAGE_WRITECOPY = 8 +PAGE_EXECUTE = 16 +PAGE_EXECUTE_READ = 32 +PAGE_EXECUTE_READWRITE = 64 +PAGE_EXECUTE_WRITECOPY = 128 +PAGE_GUARD = 256 +PAGE_NOCACHE = 512 +MEM_COMMIT = 4096 +MEM_RESERVE = 8192 +MEM_DECOMMIT = 16384 +MEM_RELEASE = 32768 +MEM_FREE = 65536 +MEM_PRIVATE = 131072 +MEM_MAPPED = 262144 +MEM_TOP_DOWN = 1048576 + +# Generated by h2py from \msvc20\include\winnt.h +# hacked and split by mhammond. +INVALID_HANDLE_VALUE = 4294967295L +SEC_FILE = 8388608 +SEC_IMAGE = 16777216 +SEC_RESERVE = 67108864 +SEC_COMMIT = 134217728 +SEC_NOCACHE = 268435456 +MEM_IMAGE = SEC_IMAGE +FILE_SHARE_READ = 1 +FILE_SHARE_WRITE = 2 +FILE_SHARE_DELETE = 4 +FILE_ATTRIBUTE_READONLY = 1 +FILE_ATTRIBUTE_HIDDEN = 2 +FILE_ATTRIBUTE_SYSTEM = 4 +FILE_ATTRIBUTE_DIRECTORY = 16 +FILE_ATTRIBUTE_ARCHIVE = 32 +FILE_ATTRIBUTE_NORMAL = 128 +FILE_ATTRIBUTE_TEMPORARY = 256 +FILE_ATTRIBUTE_ATOMIC_WRITE = 512 +FILE_ATTRIBUTE_XACTION_WRITE = 1024 +FILE_ATTRIBUTE_COMPRESSED = 2048 +FILE_NOTIFY_CHANGE_FILE_NAME = 1 +FILE_NOTIFY_CHANGE_DIR_NAME = 2 +FILE_NOTIFY_CHANGE_ATTRIBUTES = 4 +FILE_NOTIFY_CHANGE_SIZE = 8 +FILE_NOTIFY_CHANGE_LAST_WRITE = 16 +FILE_NOTIFY_CHANGE_SECURITY = 256 +FILE_CASE_SENSITIVE_SEARCH = 1 +FILE_CASE_PRESERVED_NAMES = 2 +FILE_UNICODE_ON_DISK = 4 +FILE_PERSISTENT_ACLS = 8 +FILE_FILE_COMPRESSION = 16 +FILE_VOLUME_IS_COMPRESSED = 32768 +IO_COMPLETION_MODIFY_STATE = 2 +DUPLICATE_CLOSE_SOURCE = 1 +DUPLICATE_SAME_ACCESS = 2 +SID_MAX_SUB_AUTHORITIES = (15) +SECURITY_NULL_RID = (0) +SECURITY_WORLD_RID = (0) +SECURITY_LOCAL_RID = (0X00000000) +SECURITY_CREATOR_OWNER_RID = (0) +SECURITY_CREATOR_GROUP_RID = (1) +SECURITY_DIALUP_RID = (1) +SECURITY_NETWORK_RID = (2) +SECURITY_BATCH_RID = (3) +SECURITY_INTERACTIVE_RID = (4) +SECURITY_SERVICE_RID = (6) +SECURITY_ANONYMOUS_LOGON_RID = (7) +SECURITY_LOGON_IDS_RID = (5) +SECURITY_LOGON_IDS_RID_COUNT = (3) +SECURITY_LOCAL_SYSTEM_RID = (18) +SECURITY_NT_NON_UNIQUE = (21) +SECURITY_BUILTIN_DOMAIN_RID = (32) +DOMAIN_USER_RID_ADMIN = (500) +DOMAIN_USER_RID_GUEST = (501) +DOMAIN_GROUP_RID_ADMINS = (512) +DOMAIN_GROUP_RID_USERS = (513) +DOMAIN_GROUP_RID_GUESTS = (514) +DOMAIN_ALIAS_RID_ADMINS = (544) +DOMAIN_ALIAS_RID_USERS = (545) +DOMAIN_ALIAS_RID_GUESTS = (546) +DOMAIN_ALIAS_RID_POWER_USERS = (547) +DOMAIN_ALIAS_RID_ACCOUNT_OPS = (548) +DOMAIN_ALIAS_RID_SYSTEM_OPS = (549) +DOMAIN_ALIAS_RID_PRINT_OPS = (550) +DOMAIN_ALIAS_RID_BACKUP_OPS = (551) +DOMAIN_ALIAS_RID_REPLICATOR = (552) +SE_GROUP_MANDATORY = (1) +SE_GROUP_ENABLED_BY_DEFAULT = (2) +SE_GROUP_ENABLED = (4) +SE_GROUP_OWNER = (8) +SE_GROUP_LOGON_ID = (-1073741824) +ACL_REVISION = (2) +ACL_REVISION1 = (1) +ACL_REVISION2 = (2) +ACCESS_ALLOWED_ACE_TYPE = (0) +ACCESS_DENIED_ACE_TYPE = (1) +SYSTEM_AUDIT_ACE_TYPE = (2) +SYSTEM_ALARM_ACE_TYPE = (3) +OBJECT_INHERIT_ACE = (1) +CONTAINER_INHERIT_ACE = (2) +NO_PROPAGATE_INHERIT_ACE = (4) +INHERIT_ONLY_ACE = (8) +VALID_INHERIT_FLAGS = (15) +SUCCESSFUL_ACCESS_ACE_FLAG = (64) +FAILED_ACCESS_ACE_FLAG = (128) +SECURITY_DESCRIPTOR_REVISION = (1) +SECURITY_DESCRIPTOR_REVISION1 = (1) +SECURITY_DESCRIPTOR_MIN_LENGTH = (20) +SE_OWNER_DEFAULTED = (1) +SE_GROUP_DEFAULTED = (2) +SE_DACL_PRESENT = (4) +SE_DACL_DEFAULTED = (8) +SE_SACL_PRESENT = (16) +SE_SACL_DEFAULTED = (32) +SE_SELF_RELATIVE = (32768) +SE_PRIVILEGE_ENABLED_BY_DEFAULT = (1) +SE_PRIVILEGE_ENABLED = (2) +SE_PRIVILEGE_USED_FOR_ACCESS = (-2147483648) +PRIVILEGE_SET_ALL_NECESSARY = (1) +SE_CREATE_TOKEN_NAME = "SeCreateTokenPrivilege" +SE_ASSIGNPRIMARYTOKEN_NAME = "SeAssignPrimaryTokenPrivilege" +SE_LOCK_MEMORY_NAME = "SeLockMemoryPrivilege" +SE_INCREASE_QUOTA_NAME = "SeIncreaseQuotaPrivilege" +SE_UNSOLICITED_INPUT_NAME = "SeUnsolicitedInputPrivilege" +SE_MACHINE_ACCOUNT_NAME = "SeMachineAccountPrivilege" +SE_TCB_NAME = "SeTcbPrivilege" +SE_SECURITY_NAME = "SeSecurityPrivilege" +SE_TAKE_OWNERSHIP_NAME = "SeTakeOwnershipPrivilege" +SE_LOAD_DRIVER_NAME = "SeLoadDriverPrivilege" +SE_SYSTEM_PROFILE_NAME = "SeSystemProfilePrivilege" +SE_SYSTEMTIME_NAME = "SeSystemtimePrivilege" +SE_PROF_SINGLE_PROCESS_NAME = "SeProfileSingleProcessPrivilege" +SE_INC_BASE_PRIORITY_NAME = "SeIncreaseBasePriorityPrivilege" +SE_CREATE_PAGEFILE_NAME = "SeCreatePagefilePrivilege" +SE_CREATE_PERMANENT_NAME = "SeCreatePermanentPrivilege" +SE_BACKUP_NAME = "SeBackupPrivilege" +SE_RESTORE_NAME = "SeRestorePrivilege" +SE_SHUTDOWN_NAME = "SeShutdownPrivilege" +SE_DEBUG_NAME = "SeDebugPrivilege" +SE_AUDIT_NAME = "SeAuditPrivilege" +SE_SYSTEM_ENVIRONMENT_NAME = "SeSystemEnvironmentPrivilege" +SE_CHANGE_NOTIFY_NAME = "SeChangeNotifyPrivilege" +SE_REMOTE_SHUTDOWN_NAME = "SeRemoteShutdownPrivilege" + +TOKEN_ASSIGN_PRIMARY = (1) +TOKEN_DUPLICATE = (2) +TOKEN_IMPERSONATE = (4) +TOKEN_QUERY = (8) +TOKEN_QUERY_SOURCE = (16) +TOKEN_ADJUST_PRIVILEGES = (32) +TOKEN_ADJUST_GROUPS = (64) +TOKEN_ADJUST_DEFAULT = (128) +TOKEN_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED |\ + TOKEN_ASSIGN_PRIMARY |\ + TOKEN_DUPLICATE |\ + TOKEN_IMPERSONATE |\ + TOKEN_QUERY |\ + TOKEN_QUERY_SOURCE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) +TOKEN_READ = (STANDARD_RIGHTS_READ |\ + TOKEN_QUERY) +TOKEN_WRITE = (STANDARD_RIGHTS_WRITE |\ + TOKEN_ADJUST_PRIVILEGES |\ + TOKEN_ADJUST_GROUPS |\ + TOKEN_ADJUST_DEFAULT) +TOKEN_EXECUTE = (STANDARD_RIGHTS_EXECUTE) +TOKEN_SOURCE_LENGTH = 8 + +KEY_QUERY_VALUE = (1) +KEY_SET_VALUE = (2) +KEY_CREATE_SUB_KEY = (4) +KEY_ENUMERATE_SUB_KEYS = (8) +KEY_NOTIFY = (16) +KEY_CREATE_LINK = (32) +KEY_WOW64_32KEY = 512 +KEY_WOW64_64KEY = 256 +KEY_WOW64_RES = 768 +KEY_READ = ((STANDARD_RIGHTS_READ |\ + KEY_QUERY_VALUE |\ + KEY_ENUMERATE_SUB_KEYS |\ + KEY_NOTIFY) \ + & \ + (~SYNCHRONIZE)) +KEY_WRITE = ((STANDARD_RIGHTS_WRITE |\ + KEY_SET_VALUE |\ + KEY_CREATE_SUB_KEY) \ + & \ + (~SYNCHRONIZE)) +KEY_EXECUTE = ((KEY_READ) \ + & \ + (~SYNCHRONIZE)) +KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL |\ + KEY_QUERY_VALUE |\ + KEY_SET_VALUE |\ + KEY_CREATE_SUB_KEY |\ + KEY_ENUMERATE_SUB_KEYS |\ + KEY_NOTIFY |\ + KEY_CREATE_LINK) \ + & \ + (~SYNCHRONIZE)) +REG_NOTIFY_CHANGE_ATTRIBUTES = (2) +REG_NOTIFY_CHANGE_SECURITY = (8) +REG_RESOURCE_REQUIREMENTS_LIST = ( 10 ) +REG_NONE = ( 0 ) # No value type +REG_SZ = ( 1 ) # Unicode nul terminated string +REG_EXPAND_SZ = ( 2 ) # Unicode nul terminated string + # (with environment variable references) +REG_BINARY = ( 3 ) # Free form binary +REG_DWORD = ( 4 ) # 32-bit number +REG_DWORD_LITTLE_ENDIAN = ( 4 ) # 32-bit number (same as REG_DWORD) +REG_DWORD_BIG_ENDIAN = ( 5 ) # 32-bit number +REG_LINK = ( 6 ) # Symbolic Link (unicode) +REG_MULTI_SZ = ( 7 ) # Multiple Unicode strings +REG_RESOURCE_LIST = ( 8 ) # Resource list in the resource map +REG_FULL_RESOURCE_DESCRIPTOR =( 9 ) # Resource list in the hardware description +REG_RESOURCE_REQUIREMENTS_LIST = ( 10 ) +REG_QWORD = ( 11 ) # 64-bit number +REG_QWORD_LITTLE_ENDIAN = ( 11 ) # 64-bit number (same as REG_QWORD) + + +# Generated by h2py from \msvc20\include\winnt.h +# hacked and split by mhammond. +# Included from string.h +_NLSCMPERROR = 2147483647 +NULL = 0 +HEAP_NO_SERIALIZE = 1 +HEAP_GROWABLE = 2 +HEAP_GENERATE_EXCEPTIONS = 4 +HEAP_ZERO_MEMORY = 8 +HEAP_REALLOC_IN_PLACE_ONLY = 16 +HEAP_TAIL_CHECKING_ENABLED = 32 +HEAP_FREE_CHECKING_ENABLED = 64 +HEAP_DISABLE_COALESCE_ON_FREE = 128 +IS_TEXT_UNICODE_ASCII16 = 1 +IS_TEXT_UNICODE_REVERSE_ASCII16 = 16 +IS_TEXT_UNICODE_STATISTICS = 2 +IS_TEXT_UNICODE_REVERSE_STATISTICS = 32 +IS_TEXT_UNICODE_CONTROLS = 4 +IS_TEXT_UNICODE_REVERSE_CONTROLS = 64 +IS_TEXT_UNICODE_SIGNATURE = 8 +IS_TEXT_UNICODE_REVERSE_SIGNATURE = 128 +IS_TEXT_UNICODE_ILLEGAL_CHARS = 256 +IS_TEXT_UNICODE_ODD_LENGTH = 512 +IS_TEXT_UNICODE_DBCS_LEADBYTE = 1024 +IS_TEXT_UNICODE_NULL_BYTES = 4096 +IS_TEXT_UNICODE_UNICODE_MASK = 15 +IS_TEXT_UNICODE_REVERSE_MASK = 240 +IS_TEXT_UNICODE_NOT_UNICODE_MASK = 3840 +IS_TEXT_UNICODE_NOT_ASCII_MASK = 61440 +COMPRESSION_FORMAT_NONE = (0) +COMPRESSION_FORMAT_DEFAULT = (1) +COMPRESSION_FORMAT_LZNT1 = (2) +COMPRESSION_ENGINE_STANDARD = (0) +COMPRESSION_ENGINE_MAXIMUM = (256) +MESSAGE_RESOURCE_UNICODE = 1 +RTL_CRITSECT_TYPE = 0 +RTL_RESOURCE_TYPE = 1 +DLL_PROCESS_ATTACH = 1 +DLL_THREAD_ATTACH = 2 +DLL_THREAD_DETACH = 3 +DLL_PROCESS_DETACH = 0 +EVENTLOG_SEQUENTIAL_READ = 0X0001 +EVENTLOG_SEEK_READ = 0X0002 +EVENTLOG_FORWARDS_READ = 0X0004 +EVENTLOG_BACKWARDS_READ = 0X0008 +EVENTLOG_SUCCESS = 0X0000 +EVENTLOG_ERROR_TYPE = 1 +EVENTLOG_WARNING_TYPE = 2 +EVENTLOG_INFORMATION_TYPE = 4 +EVENTLOG_AUDIT_SUCCESS = 8 +EVENTLOG_AUDIT_FAILURE = 16 +EVENTLOG_START_PAIRED_EVENT = 1 +EVENTLOG_END_PAIRED_EVENT = 2 +EVENTLOG_END_ALL_PAIRED_EVENTS = 4 +EVENTLOG_PAIRED_EVENT_ACTIVE = 8 +EVENTLOG_PAIRED_EVENT_INACTIVE = 16 +# Generated by h2py from \msvc20\include\winnt.h +# hacked and split by mhammond. +OWNER_SECURITY_INFORMATION = (0X00000001) +GROUP_SECURITY_INFORMATION = (0X00000002) +DACL_SECURITY_INFORMATION = (0X00000004) +SACL_SECURITY_INFORMATION = (0X00000008) +IMAGE_SIZEOF_FILE_HEADER = 20 +IMAGE_FILE_MACHINE_UNKNOWN = 0 +IMAGE_NUMBEROF_DIRECTORY_ENTRIES = 16 +IMAGE_SIZEOF_ROM_OPTIONAL_HEADER = 56 +IMAGE_SIZEOF_STD_OPTIONAL_HEADER = 28 +IMAGE_SIZEOF_NT_OPTIONAL_HEADER = 224 +IMAGE_NT_OPTIONAL_HDR_MAGIC = 267 +IMAGE_ROM_OPTIONAL_HDR_MAGIC = 263 +IMAGE_SIZEOF_SHORT_NAME = 8 +IMAGE_SIZEOF_SECTION_HEADER = 40 +IMAGE_SIZEOF_SYMBOL = 18 +IMAGE_SYM_CLASS_NULL = 0 +IMAGE_SYM_CLASS_AUTOMATIC = 1 +IMAGE_SYM_CLASS_EXTERNAL = 2 +IMAGE_SYM_CLASS_STATIC = 3 +IMAGE_SYM_CLASS_REGISTER = 4 +IMAGE_SYM_CLASS_EXTERNAL_DEF = 5 +IMAGE_SYM_CLASS_LABEL = 6 +IMAGE_SYM_CLASS_UNDEFINED_LABEL = 7 +IMAGE_SYM_CLASS_MEMBER_OF_STRUCT = 8 +IMAGE_SYM_CLASS_ARGUMENT = 9 +IMAGE_SYM_CLASS_STRUCT_TAG = 10 +IMAGE_SYM_CLASS_MEMBER_OF_UNION = 11 +IMAGE_SYM_CLASS_UNION_TAG = 12 +IMAGE_SYM_CLASS_TYPE_DEFINITION = 13 +IMAGE_SYM_CLASS_UNDEFINED_STATIC = 14 +IMAGE_SYM_CLASS_ENUM_TAG = 15 +IMAGE_SYM_CLASS_MEMBER_OF_ENUM = 16 +IMAGE_SYM_CLASS_REGISTER_PARAM = 17 +IMAGE_SYM_CLASS_BIT_FIELD = 18 +IMAGE_SYM_CLASS_BLOCK = 100 +IMAGE_SYM_CLASS_FUNCTION = 101 +IMAGE_SYM_CLASS_END_OF_STRUCT = 102 +IMAGE_SYM_CLASS_FILE = 103 +IMAGE_SYM_CLASS_SECTION = 104 +IMAGE_SYM_CLASS_WEAK_EXTERNAL = 105 +N_BTMASK = 017 +N_TMASK = 060 +N_TMASK1 = 0300 +N_TMASK2 = 0360 +N_BTSHFT = 4 +N_TSHIFT = 2 +IMAGE_SIZEOF_AUX_SYMBOL = 18 +IMAGE_COMDAT_SELECT_NODUPLICATES = 1 +IMAGE_COMDAT_SELECT_ANY = 2 +IMAGE_COMDAT_SELECT_SAME_SIZE = 3 +IMAGE_COMDAT_SELECT_EXACT_MATCH = 4 +IMAGE_COMDAT_SELECT_ASSOCIATIVE = 5 +IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY = 1 +IMAGE_WEAK_EXTERN_SEARCH_LIBRARY = 2 +IMAGE_WEAK_EXTERN_SEARCH_ALIAS = 3 +IMAGE_SIZEOF_RELOCATION = 10 +IMAGE_REL_I386_SECTION = 012 +IMAGE_REL_I386_SECREL = 013 +IMAGE_REL_MIPS_REFHALF = 01 +IMAGE_REL_MIPS_REFWORD = 02 +IMAGE_REL_MIPS_JMPADDR = 03 +IMAGE_REL_MIPS_REFHI = 04 +IMAGE_REL_MIPS_REFLO = 05 +IMAGE_REL_MIPS_GPREL = 06 +IMAGE_REL_MIPS_LITERAL = 07 +IMAGE_REL_MIPS_SECTION = 012 +IMAGE_REL_MIPS_SECREL = 013 +IMAGE_REL_MIPS_REFWORDNB = 042 +IMAGE_REL_MIPS_PAIR = 045 +IMAGE_REL_ALPHA_ABSOLUTE = 0 +IMAGE_REL_ALPHA_REFLONG = 1 +IMAGE_REL_ALPHA_REFQUAD = 2 +IMAGE_REL_ALPHA_GPREL32 = 3 +IMAGE_REL_ALPHA_LITERAL = 4 +IMAGE_REL_ALPHA_LITUSE = 5 +IMAGE_REL_ALPHA_GPDISP = 6 +IMAGE_REL_ALPHA_BRADDR = 7 +IMAGE_REL_ALPHA_HINT = 8 +IMAGE_REL_ALPHA_INLINE_REFLONG = 9 +IMAGE_REL_ALPHA_REFHI = 10 +IMAGE_REL_ALPHA_REFLO = 11 +IMAGE_REL_ALPHA_PAIR = 12 +IMAGE_REL_ALPHA_MATCH = 13 +IMAGE_REL_ALPHA_SECTION = 14 +IMAGE_REL_ALPHA_SECREL = 15 +IMAGE_REL_ALPHA_REFLONGNB = 16 +IMAGE_SIZEOF_BASE_RELOCATION = 8 +IMAGE_REL_BASED_ABSOLUTE = 0 +IMAGE_REL_BASED_HIGH = 1 +IMAGE_REL_BASED_LOW = 2 +IMAGE_REL_BASED_HIGHLOW = 3 +IMAGE_REL_BASED_HIGHADJ = 4 +IMAGE_REL_BASED_MIPS_JMPADDR = 5 +IMAGE_SIZEOF_LINENUMBER = 6 +IMAGE_ARCHIVE_START_SIZE = 8 +IMAGE_ARCHIVE_START = "!\n" +IMAGE_ARCHIVE_END = "`\n" +IMAGE_ARCHIVE_PAD = "\n" +IMAGE_ARCHIVE_LINKER_MEMBER = "/ " +IMAGE_ARCHIVE_LONGNAMES_MEMBER = "// " +IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR = 60 +IMAGE_ORDINAL_FLAG = -2147483648 +def IMAGE_SNAP_BY_ORDINAL(Ordinal): return ((Ordinal & IMAGE_ORDINAL_FLAG) != 0) + +def IMAGE_ORDINAL(Ordinal): return (Ordinal & 65535) + +IMAGE_RESOURCE_NAME_IS_STRING = -2147483648 +IMAGE_RESOURCE_DATA_IS_DIRECTORY = -2147483648 +IMAGE_DEBUG_TYPE_UNKNOWN = 0 +IMAGE_DEBUG_TYPE_COFF = 1 +IMAGE_DEBUG_TYPE_CODEVIEW = 2 +IMAGE_DEBUG_TYPE_FPO = 3 +IMAGE_DEBUG_TYPE_MISC = 4 +IMAGE_DEBUG_TYPE_EXCEPTION = 5 +IMAGE_DEBUG_TYPE_FIXUP = 6 +IMAGE_DEBUG_TYPE_OMAP_TO_SRC = 7 +IMAGE_DEBUG_TYPE_OMAP_FROM_SRC = 8 +FRAME_FPO = 0 +FRAME_TRAP = 1 +FRAME_TSS = 2 +SIZEOF_RFPO_DATA = 16 +IMAGE_DEBUG_MISC_EXENAME = 1 +IMAGE_SEPARATE_DEBUG_SIGNATURE = 18756 +# Generated by h2py from \msvcnt\include\wingdi.h +# hacked and split manually by mhammond. +NEWFRAME = 1 +ABORTDOC = 2 +NEXTBAND = 3 +SETCOLORTABLE = 4 +GETCOLORTABLE = 5 +FLUSHOUTPUT = 6 +DRAFTMODE = 7 +QUERYESCSUPPORT = 8 +SETABORTPROC = 9 +STARTDOC = 10 +ENDDOC = 11 +GETPHYSPAGESIZE = 12 +GETPRINTINGOFFSET = 13 +GETSCALINGFACTOR = 14 +MFCOMMENT = 15 +GETPENWIDTH = 16 +SETCOPYCOUNT = 17 +SELECTPAPERSOURCE = 18 +DEVICEDATA = 19 +PASSTHROUGH = 19 +GETTECHNOLGY = 20 +GETTECHNOLOGY = 20 +SETLINECAP = 21 +SETLINEJOIN = 22 +SETMITERLIMIT = 23 +BANDINFO = 24 +DRAWPATTERNRECT = 25 +GETVECTORPENSIZE = 26 +GETVECTORBRUSHSIZE = 27 +ENABLEDUPLEX = 28 +GETSETPAPERBINS = 29 +GETSETPRINTORIENT = 30 +ENUMPAPERBINS = 31 +SETDIBSCALING = 32 +EPSPRINTING = 33 +ENUMPAPERMETRICS = 34 +GETSETPAPERMETRICS = 35 +POSTSCRIPT_DATA = 37 +POSTSCRIPT_IGNORE = 38 +MOUSETRAILS = 39 +GETDEVICEUNITS = 42 +GETEXTENDEDTEXTMETRICS = 256 +GETEXTENTTABLE = 257 +GETPAIRKERNTABLE = 258 +GETTRACKKERNTABLE = 259 +EXTTEXTOUT = 512 +GETFACENAME = 513 +DOWNLOADFACE = 514 +ENABLERELATIVEWIDTHS = 768 +ENABLEPAIRKERNING = 769 +SETKERNTRACK = 770 +SETALLJUSTVALUES = 771 +SETCHARSET = 772 +STRETCHBLT = 2048 +GETSETSCREENPARAMS = 3072 +BEGIN_PATH = 4096 +CLIP_TO_PATH = 4097 +END_PATH = 4098 +EXT_DEVICE_CAPS = 4099 +RESTORE_CTM = 4100 +SAVE_CTM = 4101 +SET_ARC_DIRECTION = 4102 +SET_BACKGROUND_COLOR = 4103 +SET_POLY_MODE = 4104 +SET_SCREEN_ANGLE = 4105 +SET_SPREAD = 4106 +TRANSFORM_CTM = 4107 +SET_CLIP_BOX = 4108 +SET_BOUNDS = 4109 +SET_MIRROR_MODE = 4110 +OPENCHANNEL = 4110 +DOWNLOADHEADER = 4111 +CLOSECHANNEL = 4112 +POSTSCRIPT_PASSTHROUGH = 4115 +ENCAPSULATED_POSTSCRIPT = 4116 +SP_NOTREPORTED = 16384 +SP_ERROR = (-1) +SP_APPABORT = (-2) +SP_USERABORT = (-3) +SP_OUTOFDISK = (-4) +SP_OUTOFMEMORY = (-5) +PR_JOBSTATUS = 0 + +## GDI object types +OBJ_PEN = 1 +OBJ_BRUSH = 2 +OBJ_DC = 3 +OBJ_METADC = 4 +OBJ_PAL = 5 +OBJ_FONT = 6 +OBJ_BITMAP = 7 +OBJ_REGION = 8 +OBJ_METAFILE = 9 +OBJ_MEMDC = 10 +OBJ_EXTPEN = 11 +OBJ_ENHMETADC = 12 +OBJ_ENHMETAFILE = 13 +OBJ_COLORSPACE = 14 + +MWT_IDENTITY = 1 +MWT_LEFTMULTIPLY = 2 +MWT_RIGHTMULTIPLY = 3 +MWT_MIN = MWT_IDENTITY +MWT_MAX = MWT_RIGHTMULTIPLY +BI_RGB = 0 +BI_RLE8 = 1 +BI_RLE4 = 2 +BI_BITFIELDS = 3 +TMPF_FIXED_PITCH = 1 +TMPF_VECTOR = 2 +TMPF_DEVICE = 8 +TMPF_TRUETYPE = 4 +NTM_REGULAR = 64 +NTM_BOLD = 32 +NTM_ITALIC = 1 +LF_FACESIZE = 32 +LF_FULLFACESIZE = 64 +OUT_DEFAULT_PRECIS = 0 +OUT_STRING_PRECIS = 1 +OUT_CHARACTER_PRECIS = 2 +OUT_STROKE_PRECIS = 3 +OUT_TT_PRECIS = 4 +OUT_DEVICE_PRECIS = 5 +OUT_RASTER_PRECIS = 6 +OUT_TT_ONLY_PRECIS = 7 +OUT_OUTLINE_PRECIS = 8 +CLIP_DEFAULT_PRECIS = 0 +CLIP_CHARACTER_PRECIS = 1 +CLIP_STROKE_PRECIS = 2 +CLIP_MASK = 15 +CLIP_LH_ANGLES = (1<<4) +CLIP_TT_ALWAYS = (2<<4) +CLIP_EMBEDDED = (8<<4) +DEFAULT_QUALITY = 0 +DRAFT_QUALITY = 1 +PROOF_QUALITY = 2 +NONANTIALIASED_QUALITY = 3 +ANTIALIASED_QUALITY = 4 +CLEARTYPE_QUALITY = 5 +CLEARTYPE_NATURAL_QUALITY = 6 +DEFAULT_PITCH = 0 +FIXED_PITCH = 1 +VARIABLE_PITCH = 2 +ANSI_CHARSET = 0 +DEFAULT_CHARSET = 1 +SYMBOL_CHARSET = 2 +SHIFTJIS_CHARSET = 128 +HANGEUL_CHARSET = 129 +CHINESEBIG5_CHARSET = 136 +OEM_CHARSET = 255 +JOHAB_CHARSET = 130 +HEBREW_CHARSET = 177 +ARABIC_CHARSET = 178 +GREEK_CHARSET = 161 +TURKISH_CHARSET = 162 +VIETNAMESE_CHARSET = 163 +THAI_CHARSET = 222 +EASTEUROPE_CHARSET = 238 +RUSSIAN_CHARSET = 204 +MAC_CHARSET = 77 +BALTIC_CHARSET = 186 +FF_DONTCARE = (0<<4) +FF_ROMAN = (1<<4) +FF_SWISS = (2<<4) +FF_MODERN = (3<<4) +FF_SCRIPT = (4<<4) +FF_DECORATIVE = (5<<4) +FW_DONTCARE = 0 +FW_THIN = 100 +FW_EXTRALIGHT = 200 +FW_LIGHT = 300 +FW_NORMAL = 400 +FW_MEDIUM = 500 +FW_SEMIBOLD = 600 +FW_BOLD = 700 +FW_EXTRABOLD = 800 +FW_HEAVY = 900 +FW_ULTRALIGHT = FW_EXTRALIGHT +FW_REGULAR = FW_NORMAL +FW_DEMIBOLD = FW_SEMIBOLD +FW_ULTRABOLD = FW_EXTRABOLD +FW_BLACK = FW_HEAVY +# Generated by h2py from \msvcnt\include\wingdi.h +# hacked and split manually by mhammond. +BS_SOLID = 0 +BS_NULL = 1 +BS_HOLLOW = BS_NULL +BS_HATCHED = 2 +BS_PATTERN = 3 +BS_INDEXED = 4 +BS_DIBPATTERN = 5 +BS_DIBPATTERNPT = 6 +BS_PATTERN8X8 = 7 +BS_DIBPATTERN8X8 = 8 +HS_HORIZONTAL = 0 +HS_VERTICAL = 1 +HS_FDIAGONAL = 2 +HS_BDIAGONAL = 3 +HS_CROSS = 4 +HS_DIAGCROSS = 5 +HS_FDIAGONAL1 = 6 +HS_BDIAGONAL1 = 7 +HS_SOLID = 8 +HS_DENSE1 = 9 +HS_DENSE2 = 10 +HS_DENSE3 = 11 +HS_DENSE4 = 12 +HS_DENSE5 = 13 +HS_DENSE6 = 14 +HS_DENSE7 = 15 +HS_DENSE8 = 16 +HS_NOSHADE = 17 +HS_HALFTONE = 18 +HS_SOLIDCLR = 19 +HS_DITHEREDCLR = 20 +HS_SOLIDTEXTCLR = 21 +HS_DITHEREDTEXTCLR = 22 +HS_SOLIDBKCLR = 23 +HS_DITHEREDBKCLR = 24 +HS_API_MAX = 25 +PS_SOLID = 0 +PS_DASH = 1 +PS_DOT = 2 +PS_DASHDOT = 3 +PS_DASHDOTDOT = 4 +PS_NULL = 5 +PS_INSIDEFRAME = 6 +PS_USERSTYLE = 7 +PS_ALTERNATE = 8 +PS_STYLE_MASK = 15 +PS_ENDCAP_ROUND = 0 +PS_ENDCAP_SQUARE = 256 +PS_ENDCAP_FLAT = 512 +PS_ENDCAP_MASK = 3840 +PS_JOIN_ROUND = 0 +PS_JOIN_BEVEL = 4096 +PS_JOIN_MITER = 8192 +PS_JOIN_MASK = 61440 +PS_COSMETIC = 0 +PS_GEOMETRIC = 65536 +PS_TYPE_MASK = 983040 +AD_COUNTERCLOCKWISE = 1 +AD_CLOCKWISE = 2 +DRIVERVERSION = 0 +TECHNOLOGY = 2 +HORZSIZE = 4 +VERTSIZE = 6 +HORZRES = 8 +VERTRES = 10 +BITSPIXEL = 12 +PLANES = 14 +NUMBRUSHES = 16 +NUMPENS = 18 +NUMMARKERS = 20 +NUMFONTS = 22 +NUMCOLORS = 24 +PDEVICESIZE = 26 +CURVECAPS = 28 +LINECAPS = 30 +POLYGONALCAPS = 32 +TEXTCAPS = 34 +CLIPCAPS = 36 +RASTERCAPS = 38 +ASPECTX = 40 +ASPECTY = 42 +ASPECTXY = 44 +LOGPIXELSX = 88 +LOGPIXELSY = 90 +SIZEPALETTE = 104 +NUMRESERVED = 106 +COLORRES = 108 + +PHYSICALWIDTH = 110 +PHYSICALHEIGHT = 111 +PHYSICALOFFSETX = 112 +PHYSICALOFFSETY = 113 +SCALINGFACTORX = 114 +SCALINGFACTORY = 115 +VREFRESH = 116 +DESKTOPVERTRES = 117 +DESKTOPHORZRES = 118 +BLTALIGNMENT = 119 +SHADEBLENDCAPS = 120 +COLORMGMTCAPS = 121 + +DT_PLOTTER = 0 +DT_RASDISPLAY = 1 +DT_RASPRINTER = 2 +DT_RASCAMERA = 3 +DT_CHARSTREAM = 4 +DT_METAFILE = 5 +DT_DISPFILE = 6 +CC_NONE = 0 +CC_CIRCLES = 1 +CC_PIE = 2 +CC_CHORD = 4 +CC_ELLIPSES = 8 +CC_WIDE = 16 +CC_STYLED = 32 +CC_WIDESTYLED = 64 +CC_INTERIORS = 128 +CC_ROUNDRECT = 256 +LC_NONE = 0 +LC_POLYLINE = 2 +LC_MARKER = 4 +LC_POLYMARKER = 8 +LC_WIDE = 16 +LC_STYLED = 32 +LC_WIDESTYLED = 64 +LC_INTERIORS = 128 +PC_NONE = 0 +PC_POLYGON = 1 +PC_RECTANGLE = 2 +PC_WINDPOLYGON = 4 +PC_TRAPEZOID = 4 +PC_SCANLINE = 8 +PC_WIDE = 16 +PC_STYLED = 32 +PC_WIDESTYLED = 64 +PC_INTERIORS = 128 +CP_NONE = 0 +CP_RECTANGLE = 1 +CP_REGION = 2 +TC_OP_CHARACTER = 1 +TC_OP_STROKE = 2 +TC_CP_STROKE = 4 +TC_CR_90 = 8 +TC_CR_ANY = 16 +TC_SF_X_YINDEP = 32 +TC_SA_DOUBLE = 64 +TC_SA_INTEGER = 128 +TC_SA_CONTIN = 256 +TC_EA_DOUBLE = 512 +TC_IA_ABLE = 1024 +TC_UA_ABLE = 2048 +TC_SO_ABLE = 4096 +TC_RA_ABLE = 8192 +TC_VA_ABLE = 16384 +TC_RESERVED = 32768 +TC_SCROLLBLT = 65536 +RC_BITBLT = 1 +RC_BANDING = 2 +RC_SCALING = 4 +RC_BITMAP64 = 8 +RC_GDI20_OUTPUT = 16 +RC_GDI20_STATE = 32 +RC_SAVEBITMAP = 64 +RC_DI_BITMAP = 128 +RC_PALETTE = 256 +RC_DIBTODEV = 512 +RC_BIGFONT = 1024 +RC_STRETCHBLT = 2048 +RC_FLOODFILL = 4096 +RC_STRETCHDIB = 8192 +RC_OP_DX_OUTPUT = 16384 +RC_DEVBITS = 32768 +DIB_RGB_COLORS = 0 +DIB_PAL_COLORS = 1 +DIB_PAL_INDICES = 2 +DIB_PAL_PHYSINDICES = 2 +DIB_PAL_LOGINDICES = 4 +SYSPAL_ERROR = 0 +SYSPAL_STATIC = 1 +SYSPAL_NOSTATIC = 2 +CBM_CREATEDIB = 2 +CBM_INIT = 4 +FLOODFILLBORDER = 0 +FLOODFILLSURFACE = 1 +CCHDEVICENAME = 32 +CCHFORMNAME = 32 +# Generated by h2py from \msvcnt\include\wingdi.h +# hacked and split manually by mhammond. + +# DEVMODE.dmFields +DM_SPECVERSION = 800 +DM_ORIENTATION = 1 +DM_PAPERSIZE = 2 +DM_PAPERLENGTH = 4 +DM_PAPERWIDTH = 8 +DM_SCALE = 16 +DM_POSITION = 32 +DM_NUP = 64 +DM_DISPLAYORIENTATION = 128 +DM_COPIES = 256 +DM_DEFAULTSOURCE = 512 +DM_PRINTQUALITY = 1024 +DM_COLOR = 2048 +DM_DUPLEX = 4096 +DM_YRESOLUTION = 8192 +DM_TTOPTION = 16384 +DM_COLLATE = 32768 +DM_FORMNAME = 65536 +DM_LOGPIXELS = 131072 +DM_BITSPERPEL = 262144 +DM_PELSWIDTH = 524288 +DM_PELSHEIGHT = 1048576 +DM_DISPLAYFLAGS = 2097152 +DM_DISPLAYFREQUENCY = 4194304 +DM_ICMMETHOD = 8388608 +DM_ICMINTENT = 16777216 +DM_MEDIATYPE = 33554432 +DM_DITHERTYPE = 67108864 +DM_PANNINGWIDTH = 134217728 +DM_PANNINGHEIGHT = 268435456 +DM_DISPLAYFIXEDOUTPUT = 536870912 + +# DEVMODE.dmOrientation +DMORIENT_PORTRAIT = 1 +DMORIENT_LANDSCAPE = 2 + +# DEVMODE.dmDisplayOrientation +DMDO_DEFAULT = 0 +DMDO_90 = 1 +DMDO_180 = 2 +DMDO_270 = 3 + +# DEVMODE.dmDisplayFixedOutput +DMDFO_DEFAULT = 0 +DMDFO_STRETCH = 1 +DMDFO_CENTER = 2 + +# DEVMODE.dmPaperSize +DMPAPER_LETTER = 1 +DMPAPER_LETTERSMALL = 2 +DMPAPER_TABLOID = 3 +DMPAPER_LEDGER = 4 +DMPAPER_LEGAL = 5 +DMPAPER_STATEMENT = 6 +DMPAPER_EXECUTIVE = 7 +DMPAPER_A3 = 8 +DMPAPER_A4 = 9 +DMPAPER_A4SMALL = 10 +DMPAPER_A5 = 11 +DMPAPER_B4 = 12 +DMPAPER_B5 = 13 +DMPAPER_FOLIO = 14 +DMPAPER_QUARTO = 15 +DMPAPER_10X14 = 16 +DMPAPER_11X17 = 17 +DMPAPER_NOTE = 18 +DMPAPER_ENV_9 = 19 +DMPAPER_ENV_10 = 20 +DMPAPER_ENV_11 = 21 +DMPAPER_ENV_12 = 22 +DMPAPER_ENV_14 = 23 +DMPAPER_CSHEET = 24 +DMPAPER_DSHEET = 25 +DMPAPER_ESHEET = 26 +DMPAPER_ENV_DL = 27 +DMPAPER_ENV_C5 = 28 +DMPAPER_ENV_C3 = 29 +DMPAPER_ENV_C4 = 30 +DMPAPER_ENV_C6 = 31 +DMPAPER_ENV_C65 = 32 +DMPAPER_ENV_B4 = 33 +DMPAPER_ENV_B5 = 34 +DMPAPER_ENV_B6 = 35 +DMPAPER_ENV_ITALY = 36 +DMPAPER_ENV_MONARCH = 37 +DMPAPER_ENV_PERSONAL = 38 +DMPAPER_FANFOLD_US = 39 +DMPAPER_FANFOLD_STD_GERMAN = 40 +DMPAPER_FANFOLD_LGL_GERMAN = 41 +DMPAPER_ISO_B4 = 42 +DMPAPER_JAPANESE_POSTCARD = 43 +DMPAPER_9X11 = 44 +DMPAPER_10X11 = 45 +DMPAPER_15X11 = 46 +DMPAPER_ENV_INVITE = 47 +DMPAPER_RESERVED_48 = 48 +DMPAPER_RESERVED_49 = 49 +DMPAPER_LETTER_EXTRA = 50 +DMPAPER_LEGAL_EXTRA = 51 +DMPAPER_TABLOID_EXTRA = 52 +DMPAPER_A4_EXTRA = 53 +DMPAPER_LETTER_TRANSVERSE = 54 +DMPAPER_A4_TRANSVERSE = 55 +DMPAPER_LETTER_EXTRA_TRANSVERSE = 56 +DMPAPER_A_PLUS = 57 +DMPAPER_B_PLUS = 58 +DMPAPER_LETTER_PLUS = 59 +DMPAPER_A4_PLUS = 60 +DMPAPER_A5_TRANSVERSE = 61 +DMPAPER_B5_TRANSVERSE = 62 +DMPAPER_A3_EXTRA = 63 +DMPAPER_A5_EXTRA = 64 +DMPAPER_B5_EXTRA = 65 +DMPAPER_A2 = 66 +DMPAPER_A3_TRANSVERSE = 67 +DMPAPER_A3_EXTRA_TRANSVERSE = 68 +DMPAPER_DBL_JAPANESE_POSTCARD = 69 +DMPAPER_A6 = 70 +DMPAPER_JENV_KAKU2 = 71 +DMPAPER_JENV_KAKU3 = 72 +DMPAPER_JENV_CHOU3 = 73 +DMPAPER_JENV_CHOU4 = 74 +DMPAPER_LETTER_ROTATED = 75 +DMPAPER_A3_ROTATED = 76 +DMPAPER_A4_ROTATED = 77 +DMPAPER_A5_ROTATED = 78 +DMPAPER_B4_JIS_ROTATED = 79 +DMPAPER_B5_JIS_ROTATED = 80 +DMPAPER_JAPANESE_POSTCARD_ROTATED = 81 +DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED = 82 +DMPAPER_A6_ROTATED = 83 +DMPAPER_JENV_KAKU2_ROTATED = 84 +DMPAPER_JENV_KAKU3_ROTATED = 85 +DMPAPER_JENV_CHOU3_ROTATED = 86 +DMPAPER_JENV_CHOU4_ROTATED = 87 +DMPAPER_B6_JIS = 88 +DMPAPER_B6_JIS_ROTATED = 89 +DMPAPER_12X11 = 90 +DMPAPER_JENV_YOU4 = 91 +DMPAPER_JENV_YOU4_ROTATED = 92 +DMPAPER_P16K = 93 +DMPAPER_P32K = 94 +DMPAPER_P32KBIG = 95 +DMPAPER_PENV_1 = 96 +DMPAPER_PENV_2 = 97 +DMPAPER_PENV_3 = 98 +DMPAPER_PENV_4 = 99 +DMPAPER_PENV_5 = 100 +DMPAPER_PENV_6 = 101 +DMPAPER_PENV_7 = 102 +DMPAPER_PENV_8 = 103 +DMPAPER_PENV_9 = 104 +DMPAPER_PENV_10 = 105 +DMPAPER_P16K_ROTATED = 106 +DMPAPER_P32K_ROTATED = 107 +DMPAPER_P32KBIG_ROTATED = 108 +DMPAPER_PENV_1_ROTATED = 109 +DMPAPER_PENV_2_ROTATED = 110 +DMPAPER_PENV_3_ROTATED = 111 +DMPAPER_PENV_4_ROTATED = 112 +DMPAPER_PENV_5_ROTATED = 113 +DMPAPER_PENV_6_ROTATED = 114 +DMPAPER_PENV_7_ROTATED = 115 +DMPAPER_PENV_8_ROTATED = 116 +DMPAPER_PENV_9_ROTATED = 117 +DMPAPER_PENV_10_ROTATED = 118 +DMPAPER_LAST = DMPAPER_PENV_10_ROTATED +DMPAPER_USER = 256 + +# DEVMODE.dmDefaultSource +DMBIN_UPPER = 1 +DMBIN_ONLYONE = 1 +DMBIN_LOWER = 2 +DMBIN_MIDDLE = 3 +DMBIN_MANUAL = 4 +DMBIN_ENVELOPE = 5 +DMBIN_ENVMANUAL = 6 +DMBIN_AUTO = 7 +DMBIN_TRACTOR = 8 +DMBIN_SMALLFMT = 9 +DMBIN_LARGEFMT = 10 +DMBIN_LARGECAPACITY = 11 +DMBIN_CASSETTE = 14 +DMBIN_FORMSOURCE = 15 +DMBIN_LAST = DMBIN_FORMSOURCE +DMBIN_USER = 256 + +# DEVMODE.dmPrintQuality +DMRES_DRAFT = (-1) +DMRES_LOW = (-2) +DMRES_MEDIUM = (-3) +DMRES_HIGH = (-4) + +# DEVMODE.dmColor +DMCOLOR_MONOCHROME = 1 +DMCOLOR_COLOR = 2 + +# DEVMODE.dmDuplex +DMDUP_SIMPLEX = 1 +DMDUP_VERTICAL = 2 +DMDUP_HORIZONTAL = 3 + +# DEVMODE.dmTTOption +DMTT_BITMAP = 1 +DMTT_DOWNLOAD = 2 +DMTT_SUBDEV = 3 +DMTT_DOWNLOAD_OUTLINE = 4 + +# DEVMODE.dmCollate +DMCOLLATE_FALSE = 0 +DMCOLLATE_TRUE = 1 + +# DEVMODE.dmDisplayFlags +DM_GRAYSCALE = 1 +DM_INTERLACED = 2 + +# DEVMODE.dmICMMethod +DMICMMETHOD_NONE = 1 +DMICMMETHOD_SYSTEM = 2 +DMICMMETHOD_DRIVER = 3 +DMICMMETHOD_DEVICE = 4 +DMICMMETHOD_USER = 256 + +# DEVMODE.dmICMIntent +DMICM_SATURATE = 1 +DMICM_CONTRAST = 2 +DMICM_COLORIMETRIC = 3 +DMICM_ABS_COLORIMETRIC = 4 +DMICM_USER = 256 + +# DEVMODE.dmMediaType +DMMEDIA_STANDARD = 1 +DMMEDIA_TRANSPARENCY = 2 +DMMEDIA_GLOSSY = 3 +DMMEDIA_USER = 256 + +# DEVMODE.dmDitherType +DMDITHER_NONE = 1 +DMDITHER_COARSE = 2 +DMDITHER_FINE = 3 +DMDITHER_LINEART = 4 +DMDITHER_ERRORDIFFUSION = 5 +DMDITHER_RESERVED6 = 6 +DMDITHER_RESERVED7 = 7 +DMDITHER_RESERVED8 = 8 +DMDITHER_RESERVED9 = 9 +DMDITHER_GRAYSCALE = 10 +DMDITHER_USER = 256 + +# DEVMODE.dmNup +DMNUP_SYSTEM = 1 +DMNUP_ONEUP = 2 + +# used with ExtEscape +FEATURESETTING_NUP = 0 +FEATURESETTING_OUTPUT = 1 +FEATURESETTING_PSLEVEL = 2 +FEATURESETTING_CUSTPAPER = 3 +FEATURESETTING_MIRROR = 4 +FEATURESETTING_NEGATIVE = 5 +FEATURESETTING_PROTOCOL = 6 +FEATURESETTING_PRIVATE_BEGIN = 0x1000 +FEATURESETTING_PRIVATE_END = 0x1FFF + +RDH_RECTANGLES = 1 +GGO_METRICS = 0 +GGO_BITMAP = 1 +GGO_NATIVE = 2 +TT_POLYGON_TYPE = 24 +TT_PRIM_LINE = 1 +TT_PRIM_QSPLINE = 2 +TT_AVAILABLE = 1 +TT_ENABLED = 2 +DM_UPDATE = 1 +DM_COPY = 2 +DM_PROMPT = 4 +DM_MODIFY = 8 +DM_IN_BUFFER = DM_MODIFY +DM_IN_PROMPT = DM_PROMPT +DM_OUT_BUFFER = DM_COPY +DM_OUT_DEFAULT = DM_UPDATE + +# DISPLAY_DEVICE.StateFlags +DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = 1 +DISPLAY_DEVICE_MULTI_DRIVER = 2 +DISPLAY_DEVICE_PRIMARY_DEVICE = 4 +DISPLAY_DEVICE_MIRRORING_DRIVER = 8 +DISPLAY_DEVICE_VGA_COMPATIBLE = 16 +DISPLAY_DEVICE_REMOVABLE = 32 +DISPLAY_DEVICE_MODESPRUNED = 134217728 +DISPLAY_DEVICE_REMOTE = 67108864 +DISPLAY_DEVICE_DISCONNECT = 33554432 + +# DeviceCapabilities types +DC_FIELDS = 1 +DC_PAPERS = 2 +DC_PAPERSIZE = 3 +DC_MINEXTENT = 4 +DC_MAXEXTENT = 5 +DC_BINS = 6 +DC_DUPLEX = 7 +DC_SIZE = 8 +DC_EXTRA = 9 +DC_VERSION = 10 +DC_DRIVER = 11 +DC_BINNAMES = 12 +DC_ENUMRESOLUTIONS = 13 +DC_FILEDEPENDENCIES = 14 +DC_TRUETYPE = 15 +DC_PAPERNAMES = 16 +DC_ORIENTATION = 17 +DC_COPIES = 18 +DC_BINADJUST = 19 +DC_EMF_COMPLIANT = 20 +DC_DATATYPE_PRODUCED = 21 +DC_COLLATE = 22 +DC_MANUFACTURER = 23 +DC_MODEL = 24 +DC_PERSONALITY = 25 +DC_PRINTRATE = 26 +DC_PRINTRATEUNIT = 27 +DC_PRINTERMEM = 28 +DC_MEDIAREADY = 29 +DC_STAPLE = 30 +DC_PRINTRATEPPM = 31 +DC_COLORDEVICE = 32 +DC_NUP = 33 +DC_MEDIATYPENAMES = 34 +DC_MEDIATYPES = 35 + +PRINTRATEUNIT_PPM = 1 +PRINTRATEUNIT_CPS = 2 +PRINTRATEUNIT_LPM = 3 +PRINTRATEUNIT_IPM = 4 + +# TrueType constants +DCTT_BITMAP = 1 +DCTT_DOWNLOAD = 2 +DCTT_SUBDEV = 4 +DCTT_DOWNLOAD_OUTLINE = 8 + +DCBA_FACEUPNONE = 0 +DCBA_FACEUPCENTER = 1 +DCBA_FACEUPLEFT = 2 +DCBA_FACEUPRIGHT = 3 +DCBA_FACEDOWNNONE = 256 +DCBA_FACEDOWNCENTER = 257 +DCBA_FACEDOWNLEFT = 258 +DCBA_FACEDOWNRIGHT = 259 + +CA_NEGATIVE = 1 +CA_LOG_FILTER = 2 +ILLUMINANT_DEVICE_DEFAULT = 0 +ILLUMINANT_A = 1 +ILLUMINANT_B = 2 +ILLUMINANT_C = 3 +ILLUMINANT_D50 = 4 +ILLUMINANT_D55 = 5 +ILLUMINANT_D65 = 6 +ILLUMINANT_D75 = 7 +ILLUMINANT_F2 = 8 +ILLUMINANT_MAX_INDEX = ILLUMINANT_F2 +ILLUMINANT_TUNGSTEN = ILLUMINANT_A +ILLUMINANT_DAYLIGHT = ILLUMINANT_C +ILLUMINANT_FLUORESCENT = ILLUMINANT_F2 +ILLUMINANT_NTSC = ILLUMINANT_C + +# Generated by h2py from \msvcnt\include\wingdi.h +# hacked and split manually by mhammond. +FONTMAPPER_MAX = 10 +ENHMETA_SIGNATURE = 1179469088 +ENHMETA_STOCK_OBJECT = -2147483648 +EMR_HEADER = 1 +EMR_POLYBEZIER = 2 +EMR_POLYGON = 3 +EMR_POLYLINE = 4 +EMR_POLYBEZIERTO = 5 +EMR_POLYLINETO = 6 +EMR_POLYPOLYLINE = 7 +EMR_POLYPOLYGON = 8 +EMR_SETWINDOWEXTEX = 9 +EMR_SETWINDOWORGEX = 10 +EMR_SETVIEWPORTEXTEX = 11 +EMR_SETVIEWPORTORGEX = 12 +EMR_SETBRUSHORGEX = 13 +EMR_EOF = 14 +EMR_SETPIXELV = 15 +EMR_SETMAPPERFLAGS = 16 +EMR_SETMAPMODE = 17 +EMR_SETBKMODE = 18 +EMR_SETPOLYFILLMODE = 19 +EMR_SETROP2 = 20 +EMR_SETSTRETCHBLTMODE = 21 +EMR_SETTEXTALIGN = 22 +EMR_SETCOLORADJUSTMENT = 23 +EMR_SETTEXTCOLOR = 24 +EMR_SETBKCOLOR = 25 +EMR_OFFSETCLIPRGN = 26 +EMR_MOVETOEX = 27 +EMR_SETMETARGN = 28 +EMR_EXCLUDECLIPRECT = 29 +EMR_INTERSECTCLIPRECT = 30 +EMR_SCALEVIEWPORTEXTEX = 31 +EMR_SCALEWINDOWEXTEX = 32 +EMR_SAVEDC = 33 +EMR_RESTOREDC = 34 +EMR_SETWORLDTRANSFORM = 35 +EMR_MODIFYWORLDTRANSFORM = 36 +EMR_SELECTOBJECT = 37 +EMR_CREATEPEN = 38 +EMR_CREATEBRUSHINDIRECT = 39 +EMR_DELETEOBJECT = 40 +EMR_ANGLEARC = 41 +EMR_ELLIPSE = 42 +EMR_RECTANGLE = 43 +EMR_ROUNDRECT = 44 +EMR_ARC = 45 +EMR_CHORD = 46 +EMR_PIE = 47 +EMR_SELECTPALETTE = 48 +EMR_CREATEPALETTE = 49 +EMR_SETPALETTEENTRIES = 50 +EMR_RESIZEPALETTE = 51 +EMR_REALIZEPALETTE = 52 +EMR_EXTFLOODFILL = 53 +EMR_LINETO = 54 +EMR_ARCTO = 55 +EMR_POLYDRAW = 56 +EMR_SETARCDIRECTION = 57 +EMR_SETMITERLIMIT = 58 +EMR_BEGINPATH = 59 +EMR_ENDPATH = 60 +EMR_CLOSEFIGURE = 61 +EMR_FILLPATH = 62 +EMR_STROKEANDFILLPATH = 63 +EMR_STROKEPATH = 64 +EMR_FLATTENPATH = 65 +EMR_WIDENPATH = 66 +EMR_SELECTCLIPPATH = 67 +EMR_ABORTPATH = 68 +EMR_GDICOMMENT = 70 +EMR_FILLRGN = 71 +EMR_FRAMERGN = 72 +EMR_INVERTRGN = 73 +EMR_PAINTRGN = 74 +EMR_EXTSELECTCLIPRGN = 75 +EMR_BITBLT = 76 +EMR_STRETCHBLT = 77 +EMR_MASKBLT = 78 +EMR_PLGBLT = 79 +EMR_SETDIBITSTODEVICE = 80 +EMR_STRETCHDIBITS = 81 +EMR_EXTCREATEFONTINDIRECTW = 82 +EMR_EXTTEXTOUTA = 83 +EMR_EXTTEXTOUTW = 84 +EMR_POLYBEZIER16 = 85 +EMR_POLYGON16 = 86 +EMR_POLYLINE16 = 87 +EMR_POLYBEZIERTO16 = 88 +EMR_POLYLINETO16 = 89 +EMR_POLYPOLYLINE16 = 90 +EMR_POLYPOLYGON16 = 91 +EMR_POLYDRAW16 = 92 +EMR_CREATEMONOBRUSH = 93 +EMR_CREATEDIBPATTERNBRUSHPT = 94 +EMR_EXTCREATEPEN = 95 +EMR_POLYTEXTOUTA = 96 +EMR_POLYTEXTOUTW = 97 +EMR_MIN = 1 +EMR_MAX = 97 +# Generated by h2py from \msvcnt\include\wingdi.h +# hacked and split manually by mhammond. +PANOSE_COUNT = 10 +PAN_FAMILYTYPE_INDEX = 0 +PAN_SERIFSTYLE_INDEX = 1 +PAN_WEIGHT_INDEX = 2 +PAN_PROPORTION_INDEX = 3 +PAN_CONTRAST_INDEX = 4 +PAN_STROKEVARIATION_INDEX = 5 +PAN_ARMSTYLE_INDEX = 6 +PAN_LETTERFORM_INDEX = 7 +PAN_MIDLINE_INDEX = 8 +PAN_XHEIGHT_INDEX = 9 +PAN_CULTURE_LATIN = 0 +PAN_ANY = 0 +PAN_NO_FIT = 1 +PAN_FAMILY_TEXT_DISPLAY = 2 +PAN_FAMILY_SCRIPT = 3 +PAN_FAMILY_DECORATIVE = 4 +PAN_FAMILY_PICTORIAL = 5 +PAN_SERIF_COVE = 2 +PAN_SERIF_OBTUSE_COVE = 3 +PAN_SERIF_SQUARE_COVE = 4 +PAN_SERIF_OBTUSE_SQUARE_COVE = 5 +PAN_SERIF_SQUARE = 6 +PAN_SERIF_THIN = 7 +PAN_SERIF_BONE = 8 +PAN_SERIF_EXAGGERATED = 9 +PAN_SERIF_TRIANGLE = 10 +PAN_SERIF_NORMAL_SANS = 11 +PAN_SERIF_OBTUSE_SANS = 12 +PAN_SERIF_PERP_SANS = 13 +PAN_SERIF_FLARED = 14 +PAN_SERIF_ROUNDED = 15 +PAN_WEIGHT_VERY_LIGHT = 2 +PAN_WEIGHT_LIGHT = 3 +PAN_WEIGHT_THIN = 4 +PAN_WEIGHT_BOOK = 5 +PAN_WEIGHT_MEDIUM = 6 +PAN_WEIGHT_DEMI = 7 +PAN_WEIGHT_BOLD = 8 +PAN_WEIGHT_HEAVY = 9 +PAN_WEIGHT_BLACK = 10 +PAN_WEIGHT_NORD = 11 +PAN_PROP_OLD_STYLE = 2 +PAN_PROP_MODERN = 3 +PAN_PROP_EVEN_WIDTH = 4 +PAN_PROP_EXPANDED = 5 +PAN_PROP_CONDENSED = 6 +PAN_PROP_VERY_EXPANDED = 7 +PAN_PROP_VERY_CONDENSED = 8 +PAN_PROP_MONOSPACED = 9 +PAN_CONTRAST_NONE = 2 +PAN_CONTRAST_VERY_LOW = 3 +PAN_CONTRAST_LOW = 4 +PAN_CONTRAST_MEDIUM_LOW = 5 +PAN_CONTRAST_MEDIUM = 6 +PAN_CONTRAST_MEDIUM_HIGH = 7 +PAN_CONTRAST_HIGH = 8 +PAN_CONTRAST_VERY_HIGH = 9 +PAN_STROKE_GRADUAL_DIAG = 2 +PAN_STROKE_GRADUAL_TRAN = 3 +PAN_STROKE_GRADUAL_VERT = 4 +PAN_STROKE_GRADUAL_HORZ = 5 +PAN_STROKE_RAPID_VERT = 6 +PAN_STROKE_RAPID_HORZ = 7 +PAN_STROKE_INSTANT_VERT = 8 +PAN_STRAIGHT_ARMS_HORZ = 2 +PAN_STRAIGHT_ARMS_WEDGE = 3 +PAN_STRAIGHT_ARMS_VERT = 4 +PAN_STRAIGHT_ARMS_SINGLE_SERIF = 5 +PAN_STRAIGHT_ARMS_DOUBLE_SERIF = 6 +PAN_BENT_ARMS_HORZ = 7 +PAN_BENT_ARMS_WEDGE = 8 +PAN_BENT_ARMS_VERT = 9 +PAN_BENT_ARMS_SINGLE_SERIF = 10 +PAN_BENT_ARMS_DOUBLE_SERIF = 11 +PAN_LETT_NORMAL_CONTACT = 2 +PAN_LETT_NORMAL_WEIGHTED = 3 +PAN_LETT_NORMAL_BOXED = 4 +PAN_LETT_NORMAL_FLATTENED = 5 +PAN_LETT_NORMAL_ROUNDED = 6 +PAN_LETT_NORMAL_OFF_CENTER = 7 +PAN_LETT_NORMAL_SQUARE = 8 +PAN_LETT_OBLIQUE_CONTACT = 9 +PAN_LETT_OBLIQUE_WEIGHTED = 10 +PAN_LETT_OBLIQUE_BOXED = 11 +PAN_LETT_OBLIQUE_FLATTENED = 12 +PAN_LETT_OBLIQUE_ROUNDED = 13 +PAN_LETT_OBLIQUE_OFF_CENTER = 14 +PAN_LETT_OBLIQUE_SQUARE = 15 +PAN_MIDLINE_STANDARD_TRIMMED = 2 +PAN_MIDLINE_STANDARD_POINTED = 3 +PAN_MIDLINE_STANDARD_SERIFED = 4 +PAN_MIDLINE_HIGH_TRIMMED = 5 +PAN_MIDLINE_HIGH_POINTED = 6 +PAN_MIDLINE_HIGH_SERIFED = 7 +PAN_MIDLINE_CONSTANT_TRIMMED = 8 +PAN_MIDLINE_CONSTANT_POINTED = 9 +PAN_MIDLINE_CONSTANT_SERIFED = 10 +PAN_MIDLINE_LOW_TRIMMED = 11 +PAN_MIDLINE_LOW_POINTED = 12 +PAN_MIDLINE_LOW_SERIFED = 13 +PAN_XHEIGHT_CONSTANT_SMALL = 2 +PAN_XHEIGHT_CONSTANT_STD = 3 +PAN_XHEIGHT_CONSTANT_LARGE = 4 +PAN_XHEIGHT_DUCKING_SMALL = 5 +PAN_XHEIGHT_DUCKING_STD = 6 +PAN_XHEIGHT_DUCKING_LARGE = 7 +ELF_VENDOR_SIZE = 4 +ELF_VERSION = 0 +ELF_CULTURE_LATIN = 0 +RASTER_FONTTYPE = 1 +DEVICE_FONTTYPE = 2 +TRUETYPE_FONTTYPE = 4 +def PALETTEINDEX(i): return ((16777216 | (i))) + +PC_RESERVED = 1 +PC_EXPLICIT = 2 +PC_NOCOLLAPSE = 4 +def GetRValue(rgb): return rgb & 0xff + +def GetGValue(rgb): return (rgb >> 8) & 0xff + +def GetBValue(rgb): return (rgb >> 16) & 0xff + +TRANSPARENT = 1 +OPAQUE = 2 +BKMODE_LAST = 2 +GM_COMPATIBLE = 1 +GM_ADVANCED = 2 +GM_LAST = 2 +PT_CLOSEFIGURE = 1 +PT_LINETO = 2 +PT_BEZIERTO = 4 +PT_MOVETO = 6 +MM_TEXT = 1 +MM_LOMETRIC = 2 +MM_HIMETRIC = 3 +MM_LOENGLISH = 4 +MM_HIENGLISH = 5 +MM_TWIPS = 6 +MM_ISOTROPIC = 7 +MM_ANISOTROPIC = 8 +MM_MIN = MM_TEXT +MM_MAX = MM_ANISOTROPIC +MM_MAX_FIXEDSCALE = MM_TWIPS +ABSOLUTE = 1 +RELATIVE = 2 +WHITE_BRUSH = 0 +LTGRAY_BRUSH = 1 +GRAY_BRUSH = 2 +DKGRAY_BRUSH = 3 +BLACK_BRUSH = 4 +NULL_BRUSH = 5 +HOLLOW_BRUSH = NULL_BRUSH +WHITE_PEN = 6 +BLACK_PEN = 7 +NULL_PEN = 8 +OEM_FIXED_FONT = 10 +ANSI_FIXED_FONT = 11 +ANSI_VAR_FONT = 12 +SYSTEM_FONT = 13 +DEVICE_DEFAULT_FONT = 14 +DEFAULT_PALETTE = 15 +SYSTEM_FIXED_FONT = 16 +STOCK_LAST = 16 +CLR_INVALID = -1 + +DC_BRUSH = 18 +DC_PEN = 19 + +# Exception/Status codes from winuser.h and winnt.h +STATUS_WAIT_0 = 0 +STATUS_ABANDONED_WAIT_0 = 128 +STATUS_USER_APC = 192 +STATUS_TIMEOUT = 258 +STATUS_PENDING = 259 +STATUS_SEGMENT_NOTIFICATION = 1073741829 +STATUS_GUARD_PAGE_VIOLATION = -2147483647 +STATUS_DATATYPE_MISALIGNMENT = -2147483646 +STATUS_BREAKPOINT = -2147483645 +STATUS_SINGLE_STEP = -2147483644 +STATUS_ACCESS_VIOLATION = -1073741819 +STATUS_IN_PAGE_ERROR = -1073741818 +STATUS_INVALID_HANDLE = -1073741816 +STATUS_NO_MEMORY = -1073741801 +STATUS_ILLEGAL_INSTRUCTION = -1073741795 +STATUS_NONCONTINUABLE_EXCEPTION = -1073741787 +STATUS_INVALID_DISPOSITION = -1073741786 +STATUS_ARRAY_BOUNDS_EXCEEDED = -1073741684 +STATUS_FLOAT_DENORMAL_OPERAND = -1073741683 +STATUS_FLOAT_DIVIDE_BY_ZERO = -1073741682 +STATUS_FLOAT_INEXACT_RESULT = -1073741681 +STATUS_FLOAT_INVALID_OPERATION = -1073741680 +STATUS_FLOAT_OVERFLOW = -1073741679 +STATUS_FLOAT_STACK_CHECK = -1073741678 +STATUS_FLOAT_UNDERFLOW = -1073741677 +STATUS_INTEGER_DIVIDE_BY_ZERO = -1073741676 +STATUS_INTEGER_OVERFLOW = -1073741675 +STATUS_PRIVILEGED_INSTRUCTION = -1073741674 +STATUS_STACK_OVERFLOW = -1073741571 +STATUS_CONTROL_C_EXIT = -1073741510 + + +WAIT_FAILED = -1 +WAIT_OBJECT_0 = STATUS_WAIT_0 + 0 + +WAIT_ABANDONED = STATUS_ABANDONED_WAIT_0 + 0 +WAIT_ABANDONED_0 = STATUS_ABANDONED_WAIT_0 + 0 + +WAIT_TIMEOUT = STATUS_TIMEOUT +WAIT_IO_COMPLETION = STATUS_USER_APC +STILL_ACTIVE = STATUS_PENDING +EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION +EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT +EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT +EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP +EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED +EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND +EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO +EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT +EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION +EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW +EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK +EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW +EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO +EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW +EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION +EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR +EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION +EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION +EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW +EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION +EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION +EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE +CONTROL_C_EXIT = STATUS_CONTROL_C_EXIT + +# winuser.h line 8594 +# constants used with SystemParametersInfo +SPI_GETBEEP = 1 +SPI_SETBEEP = 2 +SPI_GETMOUSE = 3 +SPI_SETMOUSE = 4 +SPI_GETBORDER = 5 +SPI_SETBORDER = 6 +SPI_GETKEYBOARDSPEED = 10 +SPI_SETKEYBOARDSPEED = 11 +SPI_LANGDRIVER = 12 +SPI_ICONHORIZONTALSPACING = 13 +SPI_GETSCREENSAVETIMEOUT = 14 +SPI_SETSCREENSAVETIMEOUT = 15 +SPI_GETSCREENSAVEACTIVE = 16 +SPI_SETSCREENSAVEACTIVE = 17 +SPI_GETGRIDGRANULARITY = 18 +SPI_SETGRIDGRANULARITY = 19 +SPI_SETDESKWALLPAPER = 20 +SPI_SETDESKPATTERN = 21 +SPI_GETKEYBOARDDELAY = 22 +SPI_SETKEYBOARDDELAY = 23 +SPI_ICONVERTICALSPACING = 24 +SPI_GETICONTITLEWRAP = 25 +SPI_SETICONTITLEWRAP = 26 +SPI_GETMENUDROPALIGNMENT = 27 +SPI_SETMENUDROPALIGNMENT = 28 +SPI_SETDOUBLECLKWIDTH = 29 +SPI_SETDOUBLECLKHEIGHT = 30 +SPI_GETICONTITLELOGFONT = 31 +SPI_SETDOUBLECLICKTIME = 32 +SPI_SETMOUSEBUTTONSWAP = 33 +SPI_SETICONTITLELOGFONT = 34 +SPI_GETFASTTASKSWITCH = 35 +SPI_SETFASTTASKSWITCH = 36 +SPI_SETDRAGFULLWINDOWS = 37 +SPI_GETDRAGFULLWINDOWS = 38 +SPI_GETNONCLIENTMETRICS = 41 +SPI_SETNONCLIENTMETRICS = 42 +SPI_GETMINIMIZEDMETRICS = 43 +SPI_SETMINIMIZEDMETRICS = 44 +SPI_GETICONMETRICS = 45 +SPI_SETICONMETRICS = 46 +SPI_SETWORKAREA = 47 +SPI_GETWORKAREA = 48 +SPI_SETPENWINDOWS = 49 +SPI_GETFILTERKEYS = 50 +SPI_SETFILTERKEYS = 51 +SPI_GETTOGGLEKEYS = 52 +SPI_SETTOGGLEKEYS = 53 +SPI_GETMOUSEKEYS = 54 +SPI_SETMOUSEKEYS = 55 +SPI_GETSHOWSOUNDS = 56 +SPI_SETSHOWSOUNDS = 57 +SPI_GETSTICKYKEYS = 58 +SPI_SETSTICKYKEYS = 59 +SPI_GETACCESSTIMEOUT = 60 +SPI_SETACCESSTIMEOUT = 61 +SPI_GETSERIALKEYS = 62 +SPI_SETSERIALKEYS = 63 +SPI_GETSOUNDSENTRY = 64 +SPI_SETSOUNDSENTRY = 65 +SPI_GETHIGHCONTRAST = 66 +SPI_SETHIGHCONTRAST = 67 +SPI_GETKEYBOARDPREF = 68 +SPI_SETKEYBOARDPREF = 69 +SPI_GETSCREENREADER = 70 +SPI_SETSCREENREADER = 71 +SPI_GETANIMATION = 72 +SPI_SETANIMATION = 73 +SPI_GETFONTSMOOTHING = 74 +SPI_SETFONTSMOOTHING = 75 +SPI_SETDRAGWIDTH = 76 +SPI_SETDRAGHEIGHT = 77 +SPI_SETHANDHELD = 78 +SPI_GETLOWPOWERTIMEOUT = 79 +SPI_GETPOWEROFFTIMEOUT = 80 +SPI_SETLOWPOWERTIMEOUT = 81 +SPI_SETPOWEROFFTIMEOUT = 82 +SPI_GETLOWPOWERACTIVE = 83 +SPI_GETPOWEROFFACTIVE = 84 +SPI_SETLOWPOWERACTIVE = 85 +SPI_SETPOWEROFFACTIVE = 86 +SPI_SETCURSORS = 87 +SPI_SETICONS = 88 +SPI_GETDEFAULTINPUTLANG = 89 +SPI_SETDEFAULTINPUTLANG = 90 +SPI_SETLANGTOGGLE = 91 +SPI_GETWINDOWSEXTENSION = 92 +SPI_SETMOUSETRAILS = 93 +SPI_GETMOUSETRAILS = 94 +SPI_GETSNAPTODEFBUTTON = 95 +SPI_SETSNAPTODEFBUTTON = 96 +SPI_SETSCREENSAVERRUNNING = 97 +SPI_SCREENSAVERRUNNING = SPI_SETSCREENSAVERRUNNING +SPI_GETMOUSEHOVERWIDTH = 98 +SPI_SETMOUSEHOVERWIDTH = 99 +SPI_GETMOUSEHOVERHEIGHT = 100 +SPI_SETMOUSEHOVERHEIGHT = 101 +SPI_GETMOUSEHOVERTIME = 102 +SPI_SETMOUSEHOVERTIME = 103 +SPI_GETWHEELSCROLLLINES = 104 +SPI_SETWHEELSCROLLLINES = 105 +SPI_GETMENUSHOWDELAY = 106 +SPI_SETMENUSHOWDELAY = 107 + +SPI_GETSHOWIMEUI = 110 +SPI_SETSHOWIMEUI = 111 +SPI_GETMOUSESPEED = 112 +SPI_SETMOUSESPEED = 113 +SPI_GETSCREENSAVERRUNNING = 114 +SPI_GETDESKWALLPAPER = 115 + +SPI_GETACTIVEWINDOWTRACKING = 4096 +SPI_SETACTIVEWINDOWTRACKING = 4097 +SPI_GETMENUANIMATION = 4098 +SPI_SETMENUANIMATION = 4099 +SPI_GETCOMBOBOXANIMATION = 4100 +SPI_SETCOMBOBOXANIMATION = 4101 +SPI_GETLISTBOXSMOOTHSCROLLING = 4102 +SPI_SETLISTBOXSMOOTHSCROLLING = 4103 +SPI_GETGRADIENTCAPTIONS = 4104 +SPI_SETGRADIENTCAPTIONS = 4105 +SPI_GETKEYBOARDCUES = 4106 +SPI_SETKEYBOARDCUES = 4107 +SPI_GETMENUUNDERLINES = 4106 +SPI_SETMENUUNDERLINES = 4107 +SPI_GETACTIVEWNDTRKZORDER = 4108 +SPI_SETACTIVEWNDTRKZORDER = 4109 +SPI_GETHOTTRACKING = 4110 +SPI_SETHOTTRACKING = 4111 + +SPI_GETMENUFADE = 4114 +SPI_SETMENUFADE = 4115 +SPI_GETSELECTIONFADE = 4116 +SPI_SETSELECTIONFADE = 4117 +SPI_GETTOOLTIPANIMATION = 4118 +SPI_SETTOOLTIPANIMATION = 4119 +SPI_GETTOOLTIPFADE = 4120 +SPI_SETTOOLTIPFADE = 4121 +SPI_GETCURSORSHADOW = 4122 +SPI_SETCURSORSHADOW = 4123 +SPI_GETMOUSESONAR = 4124 +SPI_SETMOUSESONAR = 4125 +SPI_GETMOUSECLICKLOCK = 4126 +SPI_SETMOUSECLICKLOCK = 4127 +SPI_GETMOUSEVANISH = 4128 +SPI_SETMOUSEVANISH = 4129 +SPI_GETFLATMENU = 4130 +SPI_SETFLATMENU = 4131 +SPI_GETDROPSHADOW = 4132 +SPI_SETDROPSHADOW = 4133 +SPI_GETBLOCKSENDINPUTRESETS = 4134 +SPI_SETBLOCKSENDINPUTRESETS = 4135 +SPI_GETUIEFFECTS = 4158 +SPI_SETUIEFFECTS = 4159 + +SPI_GETFOREGROUNDLOCKTIMEOUT = 8192 +SPI_SETFOREGROUNDLOCKTIMEOUT = 8193 +SPI_GETACTIVEWNDTRKTIMEOUT = 8194 +SPI_SETACTIVEWNDTRKTIMEOUT = 8195 +SPI_GETFOREGROUNDFLASHCOUNT = 8196 +SPI_SETFOREGROUNDFLASHCOUNT = 8197 +SPI_GETCARETWIDTH = 8198 +SPI_SETCARETWIDTH = 8199 +SPI_GETMOUSECLICKLOCKTIME = 8200 +SPI_SETMOUSECLICKLOCKTIME = 8201 +SPI_GETFONTSMOOTHINGTYPE = 8202 +SPI_SETFONTSMOOTHINGTYPE = 8203 +SPI_GETFONTSMOOTHINGCONTRAST = 8204 +SPI_SETFONTSMOOTHINGCONTRAST = 8205 +SPI_GETFOCUSBORDERWIDTH = 8206 +SPI_SETFOCUSBORDERWIDTH = 8207 +SPI_GETFOCUSBORDERHEIGHT = 8208 +SPI_SETFOCUSBORDERHEIGHT = 8209 +SPI_GETFONTSMOOTHINGORIENTATION = 8210 +SPI_SETFONTSMOOTHINGORIENTATION = 8211 + +# fWinIni flags for SystemParametersInfo +SPIF_UPDATEINIFILE = 1 +SPIF_SENDWININICHANGE = 2 +SPIF_SENDCHANGE = SPIF_SENDWININICHANGE + +# used with SystemParametersInfo and SPI_GETFONTSMOOTHINGTYPE/SPI_SETFONTSMOOTHINGTYPE +FE_FONTSMOOTHINGSTANDARD = 1 +FE_FONTSMOOTHINGCLEARTYPE = 2 +FE_FONTSMOOTHINGDOCKING = 32768 + +METRICS_USEDEFAULT = -1 +ARW_BOTTOMLEFT = 0 +ARW_BOTTOMRIGHT = 1 +ARW_TOPLEFT = 2 +ARW_TOPRIGHT = 3 +ARW_STARTMASK = 3 +ARW_STARTRIGHT = 1 +ARW_STARTTOP = 2 +ARW_LEFT = 0 +ARW_RIGHT = 0 +ARW_UP = 4 +ARW_DOWN = 4 +ARW_HIDE = 8 +#ARW_VALID = 0x000F +SERKF_SERIALKEYSON = 1 +SERKF_AVAILABLE = 2 +SERKF_INDICATOR = 4 +HCF_HIGHCONTRASTON = 1 +HCF_AVAILABLE = 2 +HCF_HOTKEYACTIVE = 4 +HCF_CONFIRMHOTKEY = 8 +HCF_HOTKEYSOUND = 16 +HCF_INDICATOR = 32 +HCF_HOTKEYAVAILABLE = 64 +CDS_UPDATEREGISTRY = 1 +CDS_TEST = 2 +CDS_FULLSCREEN = 4 +CDS_GLOBAL = 8 +CDS_SET_PRIMARY = 16 +CDS_RESET = 1073741824 +CDS_SETRECT = 536870912 +CDS_NORESET = 268435456 + +# return values from ChangeDisplaySettings and ChangeDisplaySettingsEx +DISP_CHANGE_SUCCESSFUL = 0 +DISP_CHANGE_RESTART = 1 +DISP_CHANGE_FAILED = -1 +DISP_CHANGE_BADMODE = -2 +DISP_CHANGE_NOTUPDATED = -3 +DISP_CHANGE_BADFLAGS = -4 +DISP_CHANGE_BADPARAM = -5 +DISP_CHANGE_BADDUALVIEW = -6 + +ENUM_CURRENT_SETTINGS = -1 +ENUM_REGISTRY_SETTINGS = -2 +FKF_FILTERKEYSON = 1 +FKF_AVAILABLE = 2 +FKF_HOTKEYACTIVE = 4 +FKF_CONFIRMHOTKEY = 8 +FKF_HOTKEYSOUND = 16 +FKF_INDICATOR = 32 +FKF_CLICKON = 64 +SKF_STICKYKEYSON = 1 +SKF_AVAILABLE = 2 +SKF_HOTKEYACTIVE = 4 +SKF_CONFIRMHOTKEY = 8 +SKF_HOTKEYSOUND = 16 +SKF_INDICATOR = 32 +SKF_AUDIBLEFEEDBACK = 64 +SKF_TRISTATE = 128 +SKF_TWOKEYSOFF = 256 +SKF_LALTLATCHED = 268435456 +SKF_LCTLLATCHED = 67108864 +SKF_LSHIFTLATCHED = 16777216 +SKF_RALTLATCHED = 536870912 +SKF_RCTLLATCHED = 134217728 +SKF_RSHIFTLATCHED = 33554432 +SKF_LWINLATCHED = 1073741824 +SKF_RWINLATCHED = -2147483648 +SKF_LALTLOCKED = 1048576 +SKF_LCTLLOCKED = 262144 +SKF_LSHIFTLOCKED = 65536 +SKF_RALTLOCKED = 2097152 +SKF_RCTLLOCKED = 524288 +SKF_RSHIFTLOCKED = 131072 +SKF_LWINLOCKED = 4194304 +SKF_RWINLOCKED = 8388608 +MKF_MOUSEKEYSON = 1 +MKF_AVAILABLE = 2 +MKF_HOTKEYACTIVE = 4 +MKF_CONFIRMHOTKEY = 8 +MKF_HOTKEYSOUND = 16 +MKF_INDICATOR = 32 +MKF_MODIFIERS = 64 +MKF_REPLACENUMBERS = 128 +MKF_LEFTBUTTONSEL = 268435456 +MKF_RIGHTBUTTONSEL = 536870912 +MKF_LEFTBUTTONDOWN = 16777216 +MKF_RIGHTBUTTONDOWN = 33554432 +MKF_MOUSEMODE = -2147483648 +ATF_TIMEOUTON = 1 +ATF_ONOFFFEEDBACK = 2 +SSGF_NONE = 0 +SSGF_DISPLAY = 3 +SSTF_NONE = 0 +SSTF_CHARS = 1 +SSTF_BORDER = 2 +SSTF_DISPLAY = 3 +SSWF_NONE = 0 +SSWF_TITLE = 1 +SSWF_WINDOW = 2 +SSWF_DISPLAY = 3 +SSWF_CUSTOM = 4 +SSF_SOUNDSENTRYON = 1 +SSF_AVAILABLE = 2 +SSF_INDICATOR = 4 +TKF_TOGGLEKEYSON = 1 +TKF_AVAILABLE = 2 +TKF_HOTKEYACTIVE = 4 +TKF_CONFIRMHOTKEY = 8 +TKF_HOTKEYSOUND = 16 +TKF_INDICATOR = 32 +SLE_ERROR = 1 +SLE_MINORERROR = 2 +SLE_WARNING = 3 +MONITOR_DEFAULTTONULL = 0 +MONITOR_DEFAULTTOPRIMARY = 1 +MONITOR_DEFAULTTONEAREST = 2 +MONITORINFOF_PRIMARY = 1 +CCHDEVICENAME = 32 +CHILDID_SELF = 0 +INDEXID_OBJECT = 0 +INDEXID_CONTAINER = 0 +OBJID_WINDOW = 0 +OBJID_SYSMENU = -1 +OBJID_TITLEBAR = -2 +OBJID_MENU = -3 +OBJID_CLIENT = -4 +OBJID_VSCROLL = -5 +OBJID_HSCROLL = -6 +OBJID_SIZEGRIP = -7 +OBJID_CARET = -8 +OBJID_CURSOR = -9 +OBJID_ALERT = -10 +OBJID_SOUND = -11 +EVENT_MIN = 1 +EVENT_MAX = 2147483647 +EVENT_SYSTEM_SOUND = 1 +EVENT_SYSTEM_ALERT = 2 +EVENT_SYSTEM_FOREGROUND = 3 +EVENT_SYSTEM_MENUSTART = 4 +EVENT_SYSTEM_MENUEND = 5 +EVENT_SYSTEM_MENUPOPUPSTART = 6 +EVENT_SYSTEM_MENUPOPUPEND = 7 +EVENT_SYSTEM_CAPTURESTART = 8 +EVENT_SYSTEM_CAPTUREEND = 9 +EVENT_SYSTEM_MOVESIZESTART = 10 +EVENT_SYSTEM_MOVESIZEEND = 11 +EVENT_SYSTEM_CONTEXTHELPSTART = 12 +EVENT_SYSTEM_CONTEXTHELPEND = 13 +EVENT_SYSTEM_DRAGDROPSTART = 14 +EVENT_SYSTEM_DRAGDROPEND = 15 +EVENT_SYSTEM_DIALOGSTART = 16 +EVENT_SYSTEM_DIALOGEND = 17 +EVENT_SYSTEM_SCROLLINGSTART = 18 +EVENT_SYSTEM_SCROLLINGEND = 19 +EVENT_SYSTEM_SWITCHSTART = 20 +EVENT_SYSTEM_SWITCHEND = 21 +EVENT_SYSTEM_MINIMIZESTART = 22 +EVENT_SYSTEM_MINIMIZEEND = 23 +EVENT_OBJECT_CREATE = 32768 +EVENT_OBJECT_DESTROY = 32769 +EVENT_OBJECT_SHOW = 32770 +EVENT_OBJECT_HIDE = 32771 +EVENT_OBJECT_REORDER = 32772 +EVENT_OBJECT_FOCUS = 32773 +EVENT_OBJECT_SELECTION = 32774 +EVENT_OBJECT_SELECTIONADD = 32775 +EVENT_OBJECT_SELECTIONREMOVE = 32776 +EVENT_OBJECT_SELECTIONWITHIN = 32777 +EVENT_OBJECT_STATECHANGE = 32778 +EVENT_OBJECT_LOCATIONCHANGE = 32779 +EVENT_OBJECT_NAMECHANGE = 32780 +EVENT_OBJECT_DESCRIPTIONCHANGE = 32781 +EVENT_OBJECT_VALUECHANGE = 32782 +EVENT_OBJECT_PARENTCHANGE = 32783 +EVENT_OBJECT_HELPCHANGE = 32784 +EVENT_OBJECT_DEFACTIONCHANGE = 32785 +EVENT_OBJECT_ACCELERATORCHANGE = 32786 +SOUND_SYSTEM_STARTUP = 1 +SOUND_SYSTEM_SHUTDOWN = 2 +SOUND_SYSTEM_BEEP = 3 +SOUND_SYSTEM_ERROR = 4 +SOUND_SYSTEM_QUESTION = 5 +SOUND_SYSTEM_WARNING = 6 +SOUND_SYSTEM_INFORMATION = 7 +SOUND_SYSTEM_MAXIMIZE = 8 +SOUND_SYSTEM_MINIMIZE = 9 +SOUND_SYSTEM_RESTOREUP = 10 +SOUND_SYSTEM_RESTOREDOWN = 11 +SOUND_SYSTEM_APPSTART = 12 +SOUND_SYSTEM_FAULT = 13 +SOUND_SYSTEM_APPEND = 14 +SOUND_SYSTEM_MENUCOMMAND = 15 +SOUND_SYSTEM_MENUPOPUP = 16 +CSOUND_SYSTEM = 16 +ALERT_SYSTEM_INFORMATIONAL = 1 +ALERT_SYSTEM_WARNING = 2 +ALERT_SYSTEM_ERROR = 3 +ALERT_SYSTEM_QUERY = 4 +ALERT_SYSTEM_CRITICAL = 5 +CALERT_SYSTEM = 6 +WINEVENT_OUTOFCONTEXT = 0 +WINEVENT_SKIPOWNTHREAD = 1 +WINEVENT_SKIPOWNPROCESS = 2 +WINEVENT_INCONTEXT = 4 +GUI_CARETBLINKING = 1 +GUI_INMOVESIZE = 2 +GUI_INMENUMODE = 4 +GUI_SYSTEMMENUMODE = 8 +GUI_POPUPMENUMODE = 16 +STATE_SYSTEM_UNAVAILABLE = 1 +STATE_SYSTEM_SELECTED = 2 +STATE_SYSTEM_FOCUSED = 4 +STATE_SYSTEM_PRESSED = 8 +STATE_SYSTEM_CHECKED = 16 +STATE_SYSTEM_MIXED = 32 +STATE_SYSTEM_READONLY = 64 +STATE_SYSTEM_HOTTRACKED = 128 +STATE_SYSTEM_DEFAULT = 256 +STATE_SYSTEM_EXPANDED = 512 +STATE_SYSTEM_COLLAPSED = 1024 +STATE_SYSTEM_BUSY = 2048 +STATE_SYSTEM_FLOATING = 4096 +STATE_SYSTEM_MARQUEED = 8192 +STATE_SYSTEM_ANIMATED = 16384 +STATE_SYSTEM_INVISIBLE = 32768 +STATE_SYSTEM_OFFSCREEN = 65536 +STATE_SYSTEM_SIZEABLE = 131072 +STATE_SYSTEM_MOVEABLE = 262144 +STATE_SYSTEM_SELFVOICING = 524288 +STATE_SYSTEM_FOCUSABLE = 1048576 +STATE_SYSTEM_SELECTABLE = 2097152 +STATE_SYSTEM_LINKED = 4194304 +STATE_SYSTEM_TRAVERSED = 8388608 +STATE_SYSTEM_MULTISELECTABLE = 16777216 +STATE_SYSTEM_EXTSELECTABLE = 33554432 +STATE_SYSTEM_ALERT_LOW = 67108864 +STATE_SYSTEM_ALERT_MEDIUM = 134217728 +STATE_SYSTEM_ALERT_HIGH = 268435456 +STATE_SYSTEM_VALID = 536870911 +CCHILDREN_TITLEBAR = 5 +CCHILDREN_SCROLLBAR = 5 +CURSOR_SHOWING = 1 +WS_ACTIVECAPTION = 1 +GA_MIC = 1 +GA_PARENT = 1 +GA_ROOT = 2 +GA_ROOTOWNER = 3 +GA_MAC = 4 + +# winuser.h line 1979 +BF_LEFT = 1 +BF_TOP = 2 +BF_RIGHT = 4 +BF_BOTTOM = 8 +BF_TOPLEFT = (BF_TOP | BF_LEFT) +BF_TOPRIGHT = (BF_TOP | BF_RIGHT) +BF_BOTTOMLEFT = (BF_BOTTOM | BF_LEFT) +BF_BOTTOMRIGHT = (BF_BOTTOM | BF_RIGHT) +BF_RECT = (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM) +BF_DIAGONAL = 16 +BF_DIAGONAL_ENDTOPRIGHT = (BF_DIAGONAL | BF_TOP | BF_RIGHT) +BF_DIAGONAL_ENDTOPLEFT = (BF_DIAGONAL | BF_TOP | BF_LEFT) +BF_DIAGONAL_ENDBOTTOMLEFT = (BF_DIAGONAL | BF_BOTTOM | BF_LEFT) +BF_DIAGONAL_ENDBOTTOMRIGHT = (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT) +BF_MIDDLE = 2048 +BF_SOFT = 4096 +BF_ADJUST = 8192 +BF_FLAT = 16384 +BF_MONO = 32768 +DFC_CAPTION = 1 +DFC_MENU = 2 +DFC_SCROLL = 3 +DFC_BUTTON = 4 +DFC_POPUPMENU = 5 +DFCS_CAPTIONCLOSE = 0 +DFCS_CAPTIONMIN = 1 +DFCS_CAPTIONMAX = 2 +DFCS_CAPTIONRESTORE = 3 +DFCS_CAPTIONHELP = 4 +DFCS_MENUARROW = 0 +DFCS_MENUCHECK = 1 +DFCS_MENUBULLET = 2 +DFCS_MENUARROWRIGHT = 4 +DFCS_SCROLLUP = 0 +DFCS_SCROLLDOWN = 1 +DFCS_SCROLLLEFT = 2 +DFCS_SCROLLRIGHT = 3 +DFCS_SCROLLCOMBOBOX = 5 +DFCS_SCROLLSIZEGRIP = 8 +DFCS_SCROLLSIZEGRIPRIGHT = 16 +DFCS_BUTTONCHECK = 0 +DFCS_BUTTONRADIOIMAGE = 1 +DFCS_BUTTONRADIOMASK = 2 +DFCS_BUTTONRADIO = 4 +DFCS_BUTTON3STATE = 8 +DFCS_BUTTONPUSH = 16 +DFCS_INACTIVE = 256 +DFCS_PUSHED = 512 +DFCS_CHECKED = 1024 +DFCS_TRANSPARENT = 2048 +DFCS_HOT = 4096 +DFCS_ADJUSTRECT = 8192 +DFCS_FLAT = 16384 +DFCS_MONO = 32768 +DC_ACTIVE = 1 +DC_SMALLCAP = 2 +DC_ICON = 4 +DC_TEXT = 8 +DC_INBUTTON = 16 +DC_GRADIENT = 32 +IDANI_OPEN = 1 +IDANI_CLOSE = 2 +IDANI_CAPTION = 3 +CF_TEXT = 1 +CF_BITMAP = 2 +CF_METAFILEPICT = 3 +CF_SYLK = 4 +CF_DIF = 5 +CF_TIFF = 6 +CF_OEMTEXT = 7 +CF_DIB = 8 +CF_PALETTE = 9 +CF_PENDATA = 10 +CF_RIFF = 11 +CF_WAVE = 12 +CF_UNICODETEXT = 13 +CF_ENHMETAFILE = 14 +CF_HDROP = 15 +CF_LOCALE = 16 +CF_DIBV5 = 17 +CF_MAX = 18 +CF_OWNERDISPLAY = 128 +CF_DSPTEXT = 129 +CF_DSPBITMAP = 130 +CF_DSPMETAFILEPICT = 131 +CF_DSPENHMETAFILE = 142 +CF_PRIVATEFIRST = 512 +CF_PRIVATELAST = 767 +CF_GDIOBJFIRST = 768 +CF_GDIOBJLAST = 1023 +FVIRTKEY =1 +FNOINVERT = 2 +FSHIFT = 4 +FCONTROL = 8 +FALT = 16 +WPF_SETMINPOSITION = 1 +WPF_RESTORETOMAXIMIZED = 2 +ODT_MENU = 1 +ODT_LISTBOX = 2 +ODT_COMBOBOX = 3 +ODT_BUTTON = 4 +ODT_STATIC = 5 +ODA_DRAWENTIRE = 1 +ODA_SELECT = 2 +ODA_FOCUS = 4 +ODS_SELECTED = 1 +ODS_GRAYED = 2 +ODS_DISABLED = 4 +ODS_CHECKED = 8 +ODS_FOCUS = 16 +ODS_DEFAULT = 32 +ODS_COMBOBOXEDIT = 4096 +ODS_HOTLIGHT = 64 +ODS_INACTIVE = 128 +PM_NOREMOVE = 0 +PM_REMOVE = 1 +PM_NOYIELD = 2 +MOD_ALT = 1 +MOD_CONTROL = 2 +MOD_SHIFT = 4 +MOD_WIN = 8 +IDHOT_SNAPWINDOW = (-1) +IDHOT_SNAPDESKTOP = (-2) +#EW_RESTARTWINDOWS = 0x0042 +#EW_REBOOTSYSTEM = 0x0043 +#EW_EXITANDEXECAPP = 0x0044 +ENDSESSION_LOGOFF = -2147483648 +EWX_LOGOFF = 0 +EWX_SHUTDOWN = 1 +EWX_REBOOT = 2 +EWX_FORCE = 4 +EWX_POWEROFF = 8 +EWX_FORCEIFHUNG = 16 +BSM_ALLCOMPONENTS = 0 +BSM_VXDS = 1 +BSM_NETDRIVER = 2 +BSM_INSTALLABLEDRIVERS = 4 +BSM_APPLICATIONS = 8 +BSM_ALLDESKTOPS = 16 +BSF_QUERY = 1 +BSF_IGNORECURRENTTASK = 2 +BSF_FLUSHDISK = 4 +BSF_NOHANG = 8 +BSF_POSTMESSAGE = 16 +BSF_FORCEIFHUNG = 32 +BSF_NOTIMEOUTIFNOTHUNG = 64 +BROADCAST_QUERY_DENY = 1112363332 # Return this value to deny a query. + +DBWF_LPARAMPOINTER = 32768 + +# winuser.h line 3232 +SWP_NOSIZE = 1 +SWP_NOMOVE = 2 +SWP_NOZORDER = 4 +SWP_NOREDRAW = 8 +SWP_NOACTIVATE = 16 +SWP_FRAMECHANGED = 32 +SWP_SHOWWINDOW = 64 +SWP_HIDEWINDOW = 128 +SWP_NOCOPYBITS = 256 +SWP_NOOWNERZORDER = 512 +SWP_NOSENDCHANGING = 1024 +SWP_DRAWFRAME = SWP_FRAMECHANGED +SWP_NOREPOSITION = SWP_NOOWNERZORDER +SWP_DEFERERASE = 8192 +SWP_ASYNCWINDOWPOS = 16384 + +DLGWINDOWEXTRA = 30 +# winuser.h line 4249 +KEYEVENTF_EXTENDEDKEY = 1 +KEYEVENTF_KEYUP = 2 +MOUSEEVENTF_MOVE = 1 +MOUSEEVENTF_LEFTDOWN = 2 +MOUSEEVENTF_LEFTUP = 4 +MOUSEEVENTF_RIGHTDOWN = 8 +MOUSEEVENTF_RIGHTUP = 16 +MOUSEEVENTF_MIDDLEDOWN = 32 +MOUSEEVENTF_MIDDLEUP = 64 +MOUSEEVENTF_ABSOLUTE = 32768 +INPUT_MOUSE = 0 +INPUT_KEYBOARD = 1 +INPUT_HARDWARE = 2 +MWMO_WAITALL = 1 +MWMO_ALERTABLE = 2 +MWMO_INPUTAVAILABLE = 4 +QS_KEY = 1 +QS_MOUSEMOVE = 2 +QS_MOUSEBUTTON = 4 +QS_POSTMESSAGE = 8 +QS_TIMER = 16 +QS_PAINT = 32 +QS_SENDMESSAGE = 64 +QS_HOTKEY = 128 +QS_MOUSE = (QS_MOUSEMOVE | \ + QS_MOUSEBUTTON) +QS_INPUT = (QS_MOUSE | \ + QS_KEY) +QS_ALLEVENTS = (QS_INPUT | \ + QS_POSTMESSAGE | \ + QS_TIMER | \ + QS_PAINT | \ + QS_HOTKEY) +QS_ALLINPUT = (QS_INPUT | \ + QS_POSTMESSAGE | \ + QS_TIMER | \ + QS_PAINT | \ + QS_HOTKEY | \ + QS_SENDMESSAGE) + + +IMN_CLOSESTATUSWINDOW = 1 +IMN_OPENSTATUSWINDOW = 2 +IMN_CHANGECANDIDATE = 3 +IMN_CLOSECANDIDATE = 4 +IMN_OPENCANDIDATE = 5 +IMN_SETCONVERSIONMODE = 6 +IMN_SETSENTENCEMODE = 7 +IMN_SETOPENSTATUS = 8 +IMN_SETCANDIDATEPOS = 9 +IMN_SETCOMPOSITIONFONT = 10 +IMN_SETCOMPOSITIONWINDOW = 11 +IMN_SETSTATUSWINDOWPOS = 12 +IMN_GUIDELINE = 13 +IMN_PRIVATE = 14 + +# winuser.h line 8518 +HELP_CONTEXT = 1 +HELP_QUIT = 2 +HELP_INDEX = 3 +HELP_CONTENTS = 3 +HELP_HELPONHELP = 4 +HELP_SETINDEX = 5 +HELP_SETCONTENTS = 5 +HELP_CONTEXTPOPUP = 8 +HELP_FORCEFILE = 9 +HELP_KEY = 257 +HELP_COMMAND = 258 +HELP_PARTIALKEY = 261 +HELP_MULTIKEY = 513 +HELP_SETWINPOS = 515 +HELP_CONTEXTMENU = 10 +HELP_FINDER = 11 +HELP_WM_HELP = 12 +HELP_SETPOPUP_POS = 13 +HELP_TCARD = 32768 +HELP_TCARD_DATA = 16 +HELP_TCARD_OTHER_CALLER = 17 +IDH_NO_HELP = 28440 +IDH_MISSING_CONTEXT = 28441 # Control doesn't have matching help context +IDH_GENERIC_HELP_BUTTON = 28442 # Property sheet help button +IDH_OK = 28443 +IDH_CANCEL = 28444 +IDH_HELP = 28445 +GR_GDIOBJECTS = 0 # Count of GDI objects +GR_USEROBJECTS = 1 # Count of USER objects +# Generated by h2py from \msvcnt\include\wingdi.h +# manually added (missed by generation some how! +SRCCOPY = 13369376 # dest = source +SRCPAINT = 15597702 # dest = source OR dest +SRCAND = 8913094 # dest = source AND dest +SRCINVERT = 6684742 # dest = source XOR dest +SRCERASE = 4457256 # dest = source AND (NOT dest ) +NOTSRCCOPY = 3342344 # dest = (NOT source) +NOTSRCERASE = 1114278 # dest = (NOT src) AND (NOT dest) +MERGECOPY = 12583114 # dest = (source AND pattern) +MERGEPAINT = 12255782 # dest = (NOT source) OR dest +PATCOPY = 15728673 # dest = pattern +PATPAINT = 16452105 # dest = DPSnoo +PATINVERT = 5898313 # dest = pattern XOR dest +DSTINVERT = 5570569 # dest = (NOT dest) +BLACKNESS = 66 # dest = BLACK +WHITENESS = 16711778 # dest = WHITE + +# hacked and split manually by mhammond. +R2_BLACK = 1 +R2_NOTMERGEPEN = 2 +R2_MASKNOTPEN = 3 +R2_NOTCOPYPEN = 4 +R2_MASKPENNOT = 5 +R2_NOT = 6 +R2_XORPEN = 7 +R2_NOTMASKPEN = 8 +R2_MASKPEN = 9 +R2_NOTXORPEN = 10 +R2_NOP = 11 +R2_MERGENOTPEN = 12 +R2_COPYPEN = 13 +R2_MERGEPENNOT = 14 +R2_MERGEPEN = 15 +R2_WHITE = 16 +R2_LAST = 16 +GDI_ERROR = (-1) +ERROR = 0 +NULLREGION = 1 +SIMPLEREGION = 2 +COMPLEXREGION = 3 +RGN_ERROR = ERROR +RGN_AND = 1 +RGN_OR = 2 +RGN_XOR = 3 +RGN_DIFF = 4 +RGN_COPY = 5 +RGN_MIN = RGN_AND +RGN_MAX = RGN_COPY + +## Stretching modes used with Get/SetStretchBltMode +BLACKONWHITE = 1 +WHITEONBLACK = 2 +COLORONCOLOR = 3 +HALFTONE = 4 +MAXSTRETCHBLTMODE = 4 +STRETCH_ANDSCANS = BLACKONWHITE +STRETCH_ORSCANS = WHITEONBLACK +STRETCH_DELETESCANS = COLORONCOLOR +STRETCH_HALFTONE = HALFTONE + +ALTERNATE = 1 +WINDING = 2 +POLYFILL_LAST = 2 + +## flags used with SetLayout +LAYOUT_RTL = 1 +LAYOUT_BTT = 2 +LAYOUT_VBH = 4 +LAYOUT_ORIENTATIONMASK = LAYOUT_RTL|LAYOUT_BTT|LAYOUT_VBH +LAYOUT_BITMAPORIENTATIONPRESERVED = 8 + +TA_NOUPDATECP = 0 +TA_UPDATECP = 1 +TA_LEFT = 0 +TA_RIGHT = 2 +TA_CENTER = 6 +TA_TOP = 0 +TA_BOTTOM = 8 +TA_BASELINE = 24 +TA_MASK = (TA_BASELINE+TA_CENTER+TA_UPDATECP) +VTA_BASELINE = TA_BASELINE +VTA_LEFT = TA_BOTTOM +VTA_RIGHT = TA_TOP +VTA_CENTER = TA_CENTER +VTA_BOTTOM = TA_RIGHT +VTA_TOP = TA_LEFT +ETO_GRAYED = 1 +ETO_OPAQUE = 2 +ETO_CLIPPED = 4 +ASPECT_FILTERING = 1 +DCB_RESET = 1 +DCB_ACCUMULATE = 2 +DCB_DIRTY = DCB_ACCUMULATE +DCB_SET = (DCB_RESET | DCB_ACCUMULATE) +DCB_ENABLE = 4 +DCB_DISABLE = 8 +META_SETBKCOLOR = 513 +META_SETBKMODE = 258 +META_SETMAPMODE = 259 +META_SETROP2 = 260 +META_SETRELABS = 261 +META_SETPOLYFILLMODE = 262 +META_SETSTRETCHBLTMODE = 263 +META_SETTEXTCHAREXTRA = 264 +META_SETTEXTCOLOR = 521 +META_SETTEXTJUSTIFICATION = 522 +META_SETWINDOWORG = 523 +META_SETWINDOWEXT = 524 +META_SETVIEWPORTORG = 525 +META_SETVIEWPORTEXT = 526 +META_OFFSETWINDOWORG = 527 +META_SCALEWINDOWEXT = 1040 +META_OFFSETVIEWPORTORG = 529 +META_SCALEVIEWPORTEXT = 1042 +META_LINETO = 531 +META_MOVETO = 532 +META_EXCLUDECLIPRECT = 1045 +META_INTERSECTCLIPRECT = 1046 +META_ARC = 2071 +META_ELLIPSE = 1048 +META_FLOODFILL = 1049 +META_PIE = 2074 +META_RECTANGLE = 1051 +META_ROUNDRECT = 1564 +META_PATBLT = 1565 +META_SAVEDC = 30 +META_SETPIXEL = 1055 +META_OFFSETCLIPRGN = 544 +META_TEXTOUT = 1313 +META_BITBLT = 2338 +META_STRETCHBLT = 2851 +META_POLYGON = 804 +META_POLYLINE = 805 +META_ESCAPE = 1574 +META_RESTOREDC = 295 +META_FILLREGION = 552 +META_FRAMEREGION = 1065 +META_INVERTREGION = 298 +META_PAINTREGION = 299 +META_SELECTCLIPREGION = 300 +META_SELECTOBJECT = 301 +META_SETTEXTALIGN = 302 +META_CHORD = 2096 +META_SETMAPPERFLAGS = 561 +META_EXTTEXTOUT = 2610 +META_SETDIBTODEV = 3379 +META_SELECTPALETTE = 564 +META_REALIZEPALETTE = 53 +META_ANIMATEPALETTE = 1078 +META_SETPALENTRIES = 55 +META_POLYPOLYGON = 1336 +META_RESIZEPALETTE = 313 +META_DIBBITBLT = 2368 +META_DIBSTRETCHBLT = 2881 +META_DIBCREATEPATTERNBRUSH = 322 +META_STRETCHDIB = 3907 +META_EXTFLOODFILL = 1352 +META_DELETEOBJECT = 496 +META_CREATEPALETTE = 247 +META_CREATEPATTERNBRUSH = 505 +META_CREATEPENINDIRECT = 762 +META_CREATEFONTINDIRECT = 763 +META_CREATEBRUSHINDIRECT = 764 +META_CREATEREGION = 1791 +FILE_BEGIN = 0 +FILE_CURRENT = 1 +FILE_END = 2 +FILE_FLAG_WRITE_THROUGH = -2147483648 +FILE_FLAG_OVERLAPPED = 1073741824 +FILE_FLAG_NO_BUFFERING = 536870912 +FILE_FLAG_RANDOM_ACCESS = 268435456 +FILE_FLAG_SEQUENTIAL_SCAN = 134217728 +FILE_FLAG_DELETE_ON_CLOSE = 67108864 +FILE_FLAG_BACKUP_SEMANTICS = 33554432 +FILE_FLAG_POSIX_SEMANTICS = 16777216 +CREATE_NEW = 1 +CREATE_ALWAYS = 2 +OPEN_EXISTING = 3 +OPEN_ALWAYS = 4 +TRUNCATE_EXISTING = 5 +PIPE_ACCESS_INBOUND = 1 +PIPE_ACCESS_OUTBOUND = 2 +PIPE_ACCESS_DUPLEX = 3 +PIPE_CLIENT_END = 0 +PIPE_SERVER_END = 1 +PIPE_WAIT = 0 +PIPE_NOWAIT = 1 +PIPE_READMODE_BYTE = 0 +PIPE_READMODE_MESSAGE = 2 +PIPE_TYPE_BYTE = 0 +PIPE_TYPE_MESSAGE = 4 +PIPE_UNLIMITED_INSTANCES = 255 +SECURITY_CONTEXT_TRACKING = 262144 +SECURITY_EFFECTIVE_ONLY = 524288 +SECURITY_SQOS_PRESENT = 1048576 +SECURITY_VALID_SQOS_FLAGS = 2031616 +DTR_CONTROL_DISABLE = 0 +DTR_CONTROL_ENABLE = 1 +DTR_CONTROL_HANDSHAKE = 2 +RTS_CONTROL_DISABLE = 0 +RTS_CONTROL_ENABLE = 1 +RTS_CONTROL_HANDSHAKE = 2 +RTS_CONTROL_TOGGLE = 3 +GMEM_FIXED = 0 +GMEM_MOVEABLE = 2 +GMEM_NOCOMPACT = 16 +GMEM_NODISCARD = 32 +GMEM_ZEROINIT = 64 +GMEM_MODIFY = 128 +GMEM_DISCARDABLE = 256 +GMEM_NOT_BANKED = 4096 +GMEM_SHARE = 8192 +GMEM_DDESHARE = 8192 +GMEM_NOTIFY = 16384 +GMEM_LOWER = GMEM_NOT_BANKED +GMEM_VALID_FLAGS = 32626 +GMEM_INVALID_HANDLE = 32768 +GHND = (GMEM_MOVEABLE | GMEM_ZEROINIT) +GPTR = (GMEM_FIXED | GMEM_ZEROINIT) +GMEM_DISCARDED = 16384 +GMEM_LOCKCOUNT = 255 +LMEM_FIXED = 0 +LMEM_MOVEABLE = 2 +LMEM_NOCOMPACT = 16 +LMEM_NODISCARD = 32 +LMEM_ZEROINIT = 64 +LMEM_MODIFY = 128 +LMEM_DISCARDABLE = 3840 +LMEM_VALID_FLAGS = 3954 +LMEM_INVALID_HANDLE = 32768 +LHND = (LMEM_MOVEABLE | LMEM_ZEROINIT) +LPTR = (LMEM_FIXED | LMEM_ZEROINIT) +NONZEROLHND = (LMEM_MOVEABLE) +NONZEROLPTR = (LMEM_FIXED) +LMEM_DISCARDED = 16384 +LMEM_LOCKCOUNT = 255 +DEBUG_PROCESS = 1 +DEBUG_ONLY_THIS_PROCESS = 2 +CREATE_SUSPENDED = 4 +DETACHED_PROCESS = 8 +CREATE_NEW_CONSOLE = 16 +NORMAL_PRIORITY_CLASS = 32 +IDLE_PRIORITY_CLASS = 64 +HIGH_PRIORITY_CLASS = 128 +REALTIME_PRIORITY_CLASS = 256 +CREATE_NEW_PROCESS_GROUP = 512 +CREATE_UNICODE_ENVIRONMENT = 1024 +CREATE_SEPARATE_WOW_VDM = 2048 +CREATE_SHARED_WOW_VDM = 4096 +CREATE_DEFAULT_ERROR_MODE = 67108864 +CREATE_NO_WINDOW = 134217728 +PROFILE_USER = 268435456 +PROFILE_KERNEL = 536870912 +PROFILE_SERVER = 1073741824 +THREAD_BASE_PRIORITY_LOWRT = 15 +THREAD_BASE_PRIORITY_MAX = 2 +THREAD_BASE_PRIORITY_MIN = -2 +THREAD_BASE_PRIORITY_IDLE = -15 +THREAD_PRIORITY_LOWEST = THREAD_BASE_PRIORITY_MIN +THREAD_PRIORITY_BELOW_NORMAL = THREAD_PRIORITY_LOWEST+1 +THREAD_PRIORITY_HIGHEST = THREAD_BASE_PRIORITY_MAX +THREAD_PRIORITY_ABOVE_NORMAL = THREAD_PRIORITY_HIGHEST-1 +THREAD_PRIORITY_ERROR_RETURN = MAXLONG +THREAD_PRIORITY_TIME_CRITICAL = THREAD_BASE_PRIORITY_LOWRT +THREAD_PRIORITY_IDLE = THREAD_BASE_PRIORITY_IDLE +THREAD_PRIORITY_NORMAL = 0 +THREAD_MODE_BACKGROUND_BEGIN = 0x00010000 +THREAD_MODE_BACKGROUND_END = 0x00020000 + +EXCEPTION_DEBUG_EVENT = 1 +CREATE_THREAD_DEBUG_EVENT = 2 +CREATE_PROCESS_DEBUG_EVENT = 3 +EXIT_THREAD_DEBUG_EVENT = 4 +EXIT_PROCESS_DEBUG_EVENT = 5 +LOAD_DLL_DEBUG_EVENT = 6 +UNLOAD_DLL_DEBUG_EVENT = 7 +OUTPUT_DEBUG_STRING_EVENT = 8 +RIP_EVENT = 9 +DRIVE_UNKNOWN = 0 +DRIVE_NO_ROOT_DIR = 1 +DRIVE_REMOVABLE = 2 +DRIVE_FIXED = 3 +DRIVE_REMOTE = 4 +DRIVE_CDROM = 5 +DRIVE_RAMDISK = 6 +FILE_TYPE_UNKNOWN = 0 +FILE_TYPE_DISK = 1 +FILE_TYPE_CHAR = 2 +FILE_TYPE_PIPE = 3 +FILE_TYPE_REMOTE = 32768 +NOPARITY = 0 +ODDPARITY = 1 +EVENPARITY = 2 +MARKPARITY = 3 +SPACEPARITY = 4 +ONESTOPBIT = 0 +ONE5STOPBITS = 1 +TWOSTOPBITS = 2 +CBR_110 = 110 +CBR_300 = 300 +CBR_600 = 600 +CBR_1200 = 1200 +CBR_2400 = 2400 +CBR_4800 = 4800 +CBR_9600 = 9600 +CBR_14400 = 14400 +CBR_19200 = 19200 +CBR_38400 = 38400 +CBR_56000 = 56000 +CBR_57600 = 57600 +CBR_115200 = 115200 +CBR_128000 = 128000 +CBR_256000 = 256000 +S_QUEUEEMPTY = 0 +S_THRESHOLD = 1 +S_ALLTHRESHOLD = 2 +S_NORMAL = 0 +S_LEGATO = 1 +S_STACCATO = 2 +NMPWAIT_WAIT_FOREVER = -1 +NMPWAIT_NOWAIT = 1 +NMPWAIT_USE_DEFAULT_WAIT = 0 +OF_READ = 0 +OF_WRITE = 1 +OF_READWRITE = 2 +OF_SHARE_COMPAT = 0 +OF_SHARE_EXCLUSIVE = 16 +OF_SHARE_DENY_WRITE = 32 +OF_SHARE_DENY_READ = 48 +OF_SHARE_DENY_NONE = 64 +OF_PARSE = 256 +OF_DELETE = 512 +OF_VERIFY = 1024 +OF_CANCEL = 2048 +OF_CREATE = 4096 +OF_PROMPT = 8192 +OF_EXIST = 16384 +OF_REOPEN = 32768 +OFS_MAXPATHNAME = 128 +MAXINTATOM = 49152 + +# winbase.h +PROCESS_HEAP_REGION = 1 +PROCESS_HEAP_UNCOMMITTED_RANGE = 2 +PROCESS_HEAP_ENTRY_BUSY = 4 +PROCESS_HEAP_ENTRY_MOVEABLE = 16 +PROCESS_HEAP_ENTRY_DDESHARE = 32 +SCS_32BIT_BINARY = 0 +SCS_DOS_BINARY = 1 +SCS_WOW_BINARY = 2 +SCS_PIF_BINARY = 3 +SCS_POSIX_BINARY = 4 +SCS_OS216_BINARY = 5 +SEM_FAILCRITICALERRORS = 1 +SEM_NOGPFAULTERRORBOX = 2 +SEM_NOALIGNMENTFAULTEXCEPT = 4 +SEM_NOOPENFILEERRORBOX = 32768 +LOCKFILE_FAIL_IMMEDIATELY = 1 +LOCKFILE_EXCLUSIVE_LOCK = 2 +HANDLE_FLAG_INHERIT = 1 +HANDLE_FLAG_PROTECT_FROM_CLOSE = 2 +HINSTANCE_ERROR = 32 +GET_TAPE_MEDIA_INFORMATION = 0 +GET_TAPE_DRIVE_INFORMATION = 1 +SET_TAPE_MEDIA_INFORMATION = 0 +SET_TAPE_DRIVE_INFORMATION = 1 +FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 +FORMAT_MESSAGE_IGNORE_INSERTS = 512 +FORMAT_MESSAGE_FROM_STRING = 1024 +FORMAT_MESSAGE_FROM_HMODULE = 2048 +FORMAT_MESSAGE_FROM_SYSTEM = 4096 +FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 +FORMAT_MESSAGE_MAX_WIDTH_MASK = 255 +BACKUP_INVALID = 0 +BACKUP_DATA = 1 +BACKUP_EA_DATA = 2 +BACKUP_SECURITY_DATA = 3 +BACKUP_ALTERNATE_DATA = 4 +BACKUP_LINK = 5 +BACKUP_PROPERTY_DATA = 6 +BACKUP_OBJECT_ID = 7 +BACKUP_REPARSE_DATA = 8 +BACKUP_SPARSE_BLOCK = 9 + +STREAM_NORMAL_ATTRIBUTE = 0 +STREAM_MODIFIED_WHEN_READ = 1 +STREAM_CONTAINS_SECURITY = 2 +STREAM_CONTAINS_PROPERTIES = 4 +STARTF_USESHOWWINDOW = 1 +STARTF_USESIZE = 2 +STARTF_USEPOSITION = 4 +STARTF_USECOUNTCHARS = 8 +STARTF_USEFILLATTRIBUTE = 16 +STARTF_FORCEONFEEDBACK = 64 +STARTF_FORCEOFFFEEDBACK = 128 +STARTF_USESTDHANDLES = 256 +STARTF_USEHOTKEY = 512 +SHUTDOWN_NORETRY = 1 +DONT_RESOLVE_DLL_REFERENCES = 1 +LOAD_LIBRARY_AS_DATAFILE = 2 +LOAD_WITH_ALTERED_SEARCH_PATH = 8 +DDD_RAW_TARGET_PATH = 1 +DDD_REMOVE_DEFINITION = 2 +DDD_EXACT_MATCH_ON_REMOVE = 4 +MOVEFILE_REPLACE_EXISTING = 1 +MOVEFILE_COPY_ALLOWED = 2 +MOVEFILE_DELAY_UNTIL_REBOOT = 4 +MAX_COMPUTERNAME_LENGTH = 15 +LOGON32_LOGON_INTERACTIVE = 2 +LOGON32_LOGON_BATCH = 4 +LOGON32_LOGON_SERVICE = 5 +LOGON32_PROVIDER_DEFAULT = 0 +LOGON32_PROVIDER_WINNT35 = 1 +VER_PLATFORM_WIN32s = 0 +VER_PLATFORM_WIN32_WINDOWS = 1 +VER_PLATFORM_WIN32_NT = 2 +TC_NORMAL = 0 +TC_HARDERR = 1 +TC_GP_TRAP = 2 +TC_SIGNAL = 3 +AC_LINE_OFFLINE = 0 +AC_LINE_ONLINE = 1 +AC_LINE_BACKUP_POWER = 2 +AC_LINE_UNKNOWN = 255 +BATTERY_FLAG_HIGH = 1 +BATTERY_FLAG_LOW = 2 +BATTERY_FLAG_CRITICAL = 4 +BATTERY_FLAG_CHARGING = 8 +BATTERY_FLAG_NO_BATTERY = 128 +BATTERY_FLAG_UNKNOWN = 255 +BATTERY_PERCENTAGE_UNKNOWN = 255 +BATTERY_LIFE_UNKNOWN = -1 + +# Generated by h2py from d:\msdev\include\richedit.h +cchTextLimitDefault = 32767 +WM_CONTEXTMENU = 123 +WM_PRINTCLIENT = 792 +EN_MSGFILTER = 1792 +EN_REQUESTRESIZE = 1793 +EN_SELCHANGE = 1794 +EN_DROPFILES = 1795 +EN_PROTECTED = 1796 +EN_CORRECTTEXT = 1797 +EN_STOPNOUNDO = 1798 +EN_IMECHANGE = 1799 +EN_SAVECLIPBOARD = 1800 +EN_OLEOPFAILED = 1801 +ENM_NONE = 0 +ENM_CHANGE = 1 +ENM_UPDATE = 2 +ENM_SCROLL = 4 +ENM_KEYEVENTS = 65536 +ENM_MOUSEEVENTS = 131072 +ENM_REQUESTRESIZE = 262144 +ENM_SELCHANGE = 524288 +ENM_DROPFILES = 1048576 +ENM_PROTECTED = 2097152 +ENM_CORRECTTEXT = 4194304 +ENM_IMECHANGE = 8388608 +ES_SAVESEL = 32768 +ES_SUNKEN = 16384 +ES_DISABLENOSCROLL = 8192 +ES_SELECTIONBAR = 16777216 +ES_EX_NOCALLOLEINIT = 16777216 +ES_VERTICAL = 4194304 +ES_NOIME = 524288 +ES_SELFIME = 262144 +ECO_AUTOWORDSELECTION = 1 +ECO_AUTOVSCROLL = 64 +ECO_AUTOHSCROLL = 128 +ECO_NOHIDESEL = 256 +ECO_READONLY = 2048 +ECO_WANTRETURN = 4096 +ECO_SAVESEL = 32768 +ECO_SELECTIONBAR = 16777216 +ECO_VERTICAL = 4194304 +ECOOP_SET = 1 +ECOOP_OR = 2 +ECOOP_AND = 3 +ECOOP_XOR = 4 +WB_CLASSIFY = 3 +WB_MOVEWORDLEFT = 4 +WB_MOVEWORDRIGHT = 5 +WB_LEFTBREAK = 6 +WB_RIGHTBREAK = 7 +WB_MOVEWORDPREV = 4 +WB_MOVEWORDNEXT = 5 +WB_PREVBREAK = 6 +WB_NEXTBREAK = 7 +PC_FOLLOWING = 1 +PC_LEADING = 2 +PC_OVERFLOW = 3 +PC_DELIMITER = 4 +WBF_WORDWRAP = 16 +WBF_WORDBREAK = 32 +WBF_OVERFLOW = 64 +WBF_LEVEL1 = 128 +WBF_LEVEL2 = 256 +WBF_CUSTOM = 512 +CFM_BOLD = 1 +CFM_ITALIC = 2 +CFM_UNDERLINE = 4 +CFM_STRIKEOUT = 8 +CFM_PROTECTED = 16 +CFM_SIZE = -2147483648 +CFM_COLOR = 1073741824 +CFM_FACE = 536870912 +CFM_OFFSET = 268435456 +CFM_CHARSET = 134217728 +CFE_BOLD = 1 +CFE_ITALIC = 2 +CFE_UNDERLINE = 4 +CFE_STRIKEOUT = 8 +CFE_PROTECTED = 16 +CFE_AUTOCOLOR = 1073741824 +yHeightCharPtsMost = 1638 +SCF_SELECTION = 1 +SCF_WORD = 2 +SF_TEXT = 1 +SF_RTF = 2 +SF_RTFNOOBJS = 3 +SF_TEXTIZED = 4 +SFF_SELECTION = 32768 +SFF_PLAINRTF = 16384 +MAX_TAB_STOPS = 32 +lDefaultTab = 720 +PFM_STARTINDENT = 1 +PFM_RIGHTINDENT = 2 +PFM_OFFSET = 4 +PFM_ALIGNMENT = 8 +PFM_TABSTOPS = 16 +PFM_NUMBERING = 32 +PFM_OFFSETINDENT = -2147483648 +PFN_BULLET = 1 +PFA_LEFT = 1 +PFA_RIGHT = 2 +PFA_CENTER = 3 +WM_NOTIFY = 78 +SEL_EMPTY = 0 +SEL_TEXT = 1 +SEL_OBJECT = 2 +SEL_MULTICHAR = 4 +SEL_MULTIOBJECT = 8 +OLEOP_DOVERB = 1 +CF_RTF = "Rich Text Format" +CF_RTFNOOBJS = "Rich Text Format Without Objects" +CF_RETEXTOBJ = "RichEdit Text and Objects" + +# From wincon.h +RIGHT_ALT_PRESSED = 1 # the right alt key is pressed. +LEFT_ALT_PRESSED = 2 # the left alt key is pressed. +RIGHT_CTRL_PRESSED = 4 # the right ctrl key is pressed. +LEFT_CTRL_PRESSED = 8 # the left ctrl key is pressed. +SHIFT_PRESSED = 16 # the shift key is pressed. +NUMLOCK_ON = 32 # the numlock light is on. +SCROLLLOCK_ON = 64 # the scrolllock light is on. +CAPSLOCK_ON = 128 # the capslock light is on. +ENHANCED_KEY = 256 # the key is enhanced. +NLS_DBCSCHAR = 65536 # DBCS for JPN: SBCS/DBCS mode. +NLS_ALPHANUMERIC = 0 # DBCS for JPN: Alphanumeric mode. +NLS_KATAKANA = 131072 # DBCS for JPN: Katakana mode. +NLS_HIRAGANA = 262144 # DBCS for JPN: Hiragana mode. +NLS_ROMAN = 4194304 # DBCS for JPN: Roman/Noroman mode. +NLS_IME_CONVERSION = 8388608 # DBCS for JPN: IME conversion. +NLS_IME_DISABLE = 536870912 # DBCS for JPN: IME enable/disable. + +FROM_LEFT_1ST_BUTTON_PRESSED = 1 +RIGHTMOST_BUTTON_PRESSED = 2 +FROM_LEFT_2ND_BUTTON_PRESSED = 4 +FROM_LEFT_3RD_BUTTON_PRESSED = 8 +FROM_LEFT_4TH_BUTTON_PRESSED = 16 + +CTRL_C_EVENT = 0 +CTRL_BREAK_EVENT = 1 +CTRL_CLOSE_EVENT = 2 +CTRL_LOGOFF_EVENT = 5 +CTRL_SHUTDOWN_EVENT = 6 + +MOUSE_MOVED = 1 +DOUBLE_CLICK = 2 +MOUSE_WHEELED = 4 + +#property sheet window messages from prsht.h +PSM_SETCURSEL = (WM_USER + 101) +PSM_REMOVEPAGE = (WM_USER + 102) +PSM_ADDPAGE = (WM_USER + 103) +PSM_CHANGED = (WM_USER + 104) +PSM_RESTARTWINDOWS = (WM_USER + 105) +PSM_REBOOTSYSTEM = (WM_USER + 106) +PSM_CANCELTOCLOSE = (WM_USER + 107) +PSM_QUERYSIBLINGS = (WM_USER + 108) +PSM_UNCHANGED = (WM_USER + 109) +PSM_APPLY = (WM_USER + 110) +PSM_SETTITLEA = (WM_USER + 111) +PSM_SETTITLEW = (WM_USER + 120) +PSM_SETWIZBUTTONS = (WM_USER + 112) +PSM_PRESSBUTTON = (WM_USER + 113) +PSM_SETCURSELID = (WM_USER + 114) +PSM_SETFINISHTEXTA = (WM_USER + 115) +PSM_SETFINISHTEXTW = (WM_USER + 121) +PSM_GETTABCONTROL = (WM_USER + 116) +PSM_ISDIALOGMESSAGE = (WM_USER + 117) +PSM_GETCURRENTPAGEHWND = (WM_USER + 118) +PSM_INSERTPAGE = (WM_USER + 119) +PSM_SETHEADERTITLEA = (WM_USER + 125) +PSM_SETHEADERTITLEW = (WM_USER + 126) +PSM_SETHEADERSUBTITLEA = (WM_USER + 127) +PSM_SETHEADERSUBTITLEW = (WM_USER + 128) +PSM_HWNDTOINDEX = (WM_USER + 129) +PSM_INDEXTOHWND = (WM_USER + 130) +PSM_PAGETOINDEX = (WM_USER + 131) +PSM_INDEXTOPAGE = (WM_USER + 132) +PSM_IDTOINDEX = (WM_USER + 133) +PSM_INDEXTOID = (WM_USER + 134) +PSM_GETRESULT = (WM_USER + 135) +PSM_RECALCPAGESIZES = (WM_USER + 136) + +# GetUserNameEx/GetComputerNameEx +NameUnknown = 0 +NameFullyQualifiedDN = 1 +NameSamCompatible = 2 +NameDisplay = 3 +NameUniqueId = 6 +NameCanonical = 7 +NameUserPrincipal = 8 +NameCanonicalEx = 9 +NameServicePrincipal = 10 +NameDnsDomain = 12 + +ComputerNameNetBIOS = 0 +ComputerNameDnsHostname = 1 +ComputerNameDnsDomain = 2 +ComputerNameDnsFullyQualified = 3 +ComputerNamePhysicalNetBIOS = 4 +ComputerNamePhysicalDnsHostname = 5 +ComputerNamePhysicalDnsDomain = 6 +ComputerNamePhysicalDnsFullyQualified = 7 + +LWA_COLORKEY = 0x00000001 +LWA_ALPHA = 0x00000002 +ULW_COLORKEY = 0x00000001 +ULW_ALPHA = 0x00000002 +ULW_OPAQUE = 0x00000004 + +# WinDef.h +TRUE = 1 +FALSE = 0 +MAX_PATH = 260 +# WinGDI.h +AC_SRC_OVER = 0 +AC_SRC_ALPHA = 1 +GRADIENT_FILL_RECT_H = 0 +GRADIENT_FILL_RECT_V = 1 +GRADIENT_FILL_TRIANGLE = 2 +GRADIENT_FILL_OP_FLAG = 255 + +## flags used with Get/SetSystemFileCacheSize +MM_WORKING_SET_MAX_HARD_ENABLE = 1 +MM_WORKING_SET_MAX_HARD_DISABLE = 2 +MM_WORKING_SET_MIN_HARD_ENABLE = 4 +MM_WORKING_SET_MIN_HARD_DISABLE = 8 + +## Flags for GetFinalPathNameByHandle +VOLUME_NAME_DOS = 0 +VOLUME_NAME_GUID = 1 +VOLUME_NAME_NT = 2 +VOLUME_NAME_NONE = 4 +FILE_NAME_NORMALIZED = 0 +FILE_NAME_OPENED = 8 + +DEVICE_NOTIFY_WINDOW_HANDLE = 0x00000000 +DEVICE_NOTIFY_SERVICE_HANDLE = 0x00000001 + +# From Dbt.h +# Generated by h2py from Dbt.h +WM_DEVICECHANGE = 0x0219 +BSF_QUERY = 0x00000001 +BSF_IGNORECURRENTTASK = 0x00000002 +BSF_FLUSHDISK = 0x00000004 +BSF_NOHANG = 0x00000008 +BSF_POSTMESSAGE = 0x00000010 +BSF_FORCEIFHUNG = 0x00000020 +BSF_NOTIMEOUTIFNOTHUNG = 0x00000040 +BSF_MSGSRV32ISOK = (-2147483648) +BSF_MSGSRV32ISOK_BIT = 31 +BSM_ALLCOMPONENTS = 0x00000000 +BSM_VXDS = 0x00000001 +BSM_NETDRIVER = 0x00000002 +BSM_INSTALLABLEDRIVERS = 0x00000004 +BSM_APPLICATIONS = 0x00000008 +DBT_APPYBEGIN = 0x0000 +DBT_APPYEND = 0x0001 +DBT_DEVNODES_CHANGED = 0x0007 +DBT_QUERYCHANGECONFIG = 0x0017 +DBT_CONFIGCHANGED = 0x0018 +DBT_CONFIGCHANGECANCELED = 0x0019 +DBT_MONITORCHANGE = 0x001B +DBT_SHELLLOGGEDON = 0x0020 +DBT_CONFIGMGAPI32 = 0x0022 +DBT_VXDINITCOMPLETE = 0x0023 +DBT_VOLLOCKQUERYLOCK = 0x8041 +DBT_VOLLOCKLOCKTAKEN = 0x8042 +DBT_VOLLOCKLOCKFAILED = 0x8043 +DBT_VOLLOCKQUERYUNLOCK = 0x8044 +DBT_VOLLOCKLOCKRELEASED = 0x8045 +DBT_VOLLOCKUNLOCKFAILED = 0x8046 +LOCKP_ALLOW_WRITES = 0x01 +LOCKP_FAIL_WRITES = 0x00 +LOCKP_FAIL_MEM_MAPPING = 0x02 +LOCKP_ALLOW_MEM_MAPPING = 0x00 +LOCKP_USER_MASK = 0x03 +LOCKP_LOCK_FOR_FORMAT = 0x04 +LOCKF_LOGICAL_LOCK = 0x00 +LOCKF_PHYSICAL_LOCK = 0x01 +DBT_NO_DISK_SPACE = 0x0047 +DBT_LOW_DISK_SPACE = 0x0048 +DBT_CONFIGMGPRIVATE = 0x7FFF +DBT_DEVICEARRIVAL = 0x8000 +DBT_DEVICEQUERYREMOVE = 0x8001 +DBT_DEVICEQUERYREMOVEFAILED = 0x8002 +DBT_DEVICEREMOVEPENDING = 0x8003 +DBT_DEVICEREMOVECOMPLETE = 0x8004 +DBT_DEVICETYPESPECIFIC = 0x8005 +DBT_CUSTOMEVENT = 0x8006 +DBT_DEVTYP_OEM = 0x00000000 +DBT_DEVTYP_DEVNODE = 0x00000001 +DBT_DEVTYP_VOLUME = 0x00000002 +DBT_DEVTYP_PORT = 0x00000003 +DBT_DEVTYP_NET = 0x00000004 +DBT_DEVTYP_DEVICEINTERFACE = 0x00000005 +DBT_DEVTYP_HANDLE = 0x00000006 +DBTF_MEDIA = 0x0001 +DBTF_NET = 0x0002 +DBTF_RESOURCE = 0x00000001 +DBTF_XPORT = 0x00000002 +DBTF_SLOWNET = 0x00000004 +DBT_VPOWERDAPI = 0x8100 +DBT_USERDEFINED = 0xFFFF + +TCIF_TEXT =1 +TCIF_IMAGE =2 +TCIF_RTLREADING= 4 +TCIF_PARAM = 8 +TCM_FIRST = 0x1300 +TCM_INSERTITEMA = (TCM_FIRST+7) +TCM_INSERTITEMW = (TCM_FIRST+62) +TCM_INSERTITEM = TCM_INSERTITEMA +TCM_ADJUSTRECT = (TCM_FIRST+40) +TCM_GETCURSEL = (TCM_FIRST+11) +TCM_SETCURSEL = (TCM_FIRST+12) +TCM_GETITEMA = (TCM_FIRST+5) +TCM_GETITEMW = (TCM_FIRST+60) +TCM_GETITEM = TCM_GETITEMA +CCM_FIRST = 0x2000 # Common control shared messages +CCM_SETBKCOLOR = (CCM_FIRST + 1) +PBM_SETRANGE = (WM_USER+1) +PBM_SETPOS = (WM_USER+2) +PBM_DELTAPOS = (WM_USER+3) +PBM_SETSTEP = (WM_USER+4) +PBM_STEPIT = (WM_USER+5) +PBM_SETRANGE32 = (WM_USER+6) +PBM_GETRANGE = (WM_USER+7) +PBM_GETPOS = (WM_USER+8) +PBM_SETBARCOLOR = (WM_USER+9) +PBM_SETBKCOLOR = CCM_SETBKCOLOR + +HCURSOR = HICON +WNDPROC = WINFUNCTYPE(c_long, c_int, c_uint, c_int, c_int) +LPCTSTR = c_wchar_p +LPTSTR = c_wchar_p +LPOFNHOOKPROC = CFUNCTYPE(UINT, HWND, UINT, WPARAM, LPARAM) +OFN_FILEMUSTEXIST = 4096 +OFN_PATHMUSTEXIST = 2048 + +class OPENFILENAME(Structure): + _fields_ = [("lStructSize", DWORD), + ("hwndOwner", HWND), + ("hInstance", HINSTANCE), + ("lpstrFilter", LPCTSTR), + ("lpstrCustomFilter", LPTSTR), + ("nMaxCustFilter", DWORD), + ("nFilterIndex", DWORD), + ("lpstrFile", LPTSTR), + ("nMaxFile", DWORD), + ("lpstrFileTitle", LPTSTR), + ("nMaxFileTitle", DWORD), + ("lpstrInitialDir", LPCTSTR), + ("lpstrTitle", LPCTSTR), + ("Flags", DWORD), + ("nFileOffset", WORD), + ("nFileExtension", WORD), + ("lpstrDefExt", LPCTSTR), + ("lCustData", LPARAM), + ("lpfnHook", LPOFNHOOKPROC), + ("lpTemplateName", LPCTSTR), + ("pvReserved", c_void_p), + ("dwReserved", DWORD), + ("FlagsEx", DWORD)] + +class NMHDR(Structure): + _fields_ = [("hwndFrom", HWND), + ("idFrom", POINTER(UINT)), + ("code", UINT)] + +class NMLISTVIEW(Structure): + _fields_ = [("hdr", NMHDR), + ("iItem", INT), + ("iSubItem", INT), + ("uNewState", UINT), + ("uOldState", UINT), + ("uChanged", UINT), + ("ptAction", POINT), + ("lParam", LPARAM)] + +class PAINTSTRUCT(Structure): + _fields_ = [("hdc", HDC), + ("fErase", BOOL), + ("rcPaint", RECT), + ("fRestore", BOOL), + ("fIncUpdate", BOOL), + ("rgbReserved", LPCSTR * 32)] + +class TCITEM(Structure): + _fields_ = [("mask", UINT), + ("dwState", DWORD), + ("dwStateMask", DWORD), + ("pszText", LPWSTR), + ("cchTextMax", INT), + ("iImage", INT), + ("lParam", LPARAM)] + +class LVITEM(Structure): + _fields_ = [('mask', UINT), + ('iItem', INT), + ('iSubItem', INT), + ('state', UINT), + ('stateMask', UINT), + ('pszText', LPWSTR), + ('cchTextMax', INT), + ('iImage', INT), + ('lParam', LPARAM), + ('iIndent', INT), # Rip out? + ('iGroupId', INT), + ('cColumns', UINT), + ('puColumns', POINTER(UINT))] + +class LVCOLUMN(Structure): + _fields_ = [('mask', UINT), + ('format', INT), + ('cx', INT), + ('pszText', LPWSTR), + ('cchTextMax', INT), + ('iSubItem', INT), + ('iImage', INT), + ('iOrder', INT)] + +class WNDCLASSEX(Structure): + _fields_ = [("cbSize", c_uint), + ('style', c_uint), + ('lpfnWndProc', WNDPROC), + ('cbClsExtra', c_int), + ('cbWndExtra', c_int), + ('hInstance', c_int), + ('hIcon', c_int), + ('hCursor', c_int), + ('hbrBackground', c_int), + ('lpszMenuName', c_wchar_p), + ('lpszClassName', c_wchar_p), + ("hIconSm", c_int)] + + def __init__(self, + wndProc, + className, + style=None, + clsExtra=0, + wndExtra=0, + menuName="", + instance=None, + icon=None, + icon_sm=None, + cursor=None, + background=None, + ): + from usbcreator.misc import text_type + + if style is None: + style = CS_HREDRAW | CS_VREDRAW + if not instance: + instance = windll.kernel32.GetModuleHandleW(c_int(NULL)) + if not icon: + icon = windll.user32.LoadIconW(c_int(NULL), c_int(IDI_APPLICATION)) + if not icon_sm: + icon_sm = icon + if not cursor: + cursor = windll.user32.LoadCursorW(c_int(NULL), c_int(IDC_ARROW)) + if not background: + background = COLOR_WINDOW#+1 #windll.gdi32.GetStockObject(c_int(WHITE_BRUSH)) + + self.cbSize = sizeof(self) + self.lpfnWndProc = WNDPROC(wndProc) + self.style = style + self.cbClsExtra = clsExtra + self.cbWndExtra = wndExtra + self.hInstance = instance + self.hIcon = icon + self.hIconSm = icon_sm + self.hCursor = cursor + self.hbrBackground = background + self.lpszMenuName = text_type(menuName) + self.lpszClassName = text_type(className) + +def ErrorIfZero(handle): + if handle == 0: + raise WinError() + else: + return handle + +CreateWindowEx = windll.user32.CreateWindowExW +CreateWindowEx.restype = ErrorIfZero +CreateWindowEx.argtypes = [c_int, + c_wchar_p, + c_wchar_p, + c_int, + c_int, + c_int, + c_int, + c_int, + c_int, + c_int, + c_int, + c_int] + +SELF_HWND = object() #on instanciation the value has to be replaced with self._hwnd +PARENT_HWND = object() #on instanciation the value has to be replaced with self.parent._hwnd +APPLICATION_HINSTANCE = object() #on instanciation the value has to be replaced with self.application._hinstance + + +def RGB(r,g,b): + return r | (g<<8) | (b<<16) + +class LOGFONT(Structure): + _fields_ = [("lfHeight", LONG), + ("lfWidth", LONG), + ("lfEscapement", LONG), + ("lfOrientation", LONG), + ("lfWeight", LONG), + ("lfItalic", BYTE), + ("lfUnderline", BYTE), + ("lfStrikeOut", BYTE), + ("lfCharSet", BYTE), + ("lfOutPrecision", BYTE), + ("lfClipPrecision", BYTE), + ("lfQuality", BYTE), + ("lfPitchAndFamily", BYTE), + ("lfFaceName", c_wchar_p * LF_FACESIZE)] + +class LUID(Structure): + _fields_ = [ + # C:/PROGRA~1/gccxml/bin/Vc6/Include/winnt.h 394 + ('LowPart', DWORD), + ('HighPart', LONG), + ] + +class LUID_AND_ATTRIBUTES(Structure): + _fields_ = [ + # C:/PROGRA~1/gccxml/bin/Vc6/Include/winnt.h 3241 + ('Luid', LUID), + ('Attributes', DWORD), + ] + +class TOKEN_PRIVILEGES(Structure): + _fields_ = [ + # C:/PROGRA~1/gccxml/bin/Vc6/Include/winnt.h 4188 + ('PrivilegeCount', DWORD), + ('Privileges', LUID_AND_ATTRIBUTES * 1), + ] + +class LARGE_INTEGER(Structure): + _fields_ = [ + ('QuadPart', c_longlong), + ] + +CreateFileW = windll.kernel32.CreateFileW +CloseHandle = windll.kernel32.CloseHandle +SetFilePointerEx = windll.kernel32.SetFilePointerEx +SetEndOfFile = windll.kernel32.SetEndOfFile +GetVersion = windll.kernel32.GetVersion +WriteFile = windll.kernel32.WriteFile +OpenProcessToken = windll.Advapi32.OpenProcessToken +GetCurrentProcess = windll.kernel32.GetCurrentProcess +LookupPrivilegeValue = windll.Advapi32.LookupPrivilegeValueW +AdjustTokenPrivileges = windll.Advapi32.AdjustTokenPrivileges +GetOpenFileName = windll.comdlg32.GetOpenFileNameW + +SE_MANAGE_VOLUME_NAME = u"SeManageVolumePrivilege" diff --git a/usbcreator/frontends/winui/winui/ui.py b/usbcreator/frontends/winui/winui/ui.py new file mode 100644 index 0000000..91ac8d3 --- /dev/null +++ b/usbcreator/frontends/winui/winui/ui.py @@ -0,0 +1,759 @@ +# +# Copyright (c) 2007, 2008 Agostino Russo +# +# Written by Agostino Russo +# +# win32.ui is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# win32.ui is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +''' +Python wrappers around win32 widgets and window classes +''' + +import sys +import os + +from usbcreator.frontends.winui.winui.defs import * +from usbcreator.misc import callable, text_type + +__all__ = ["Window", "Frontend"] + +#TBD use weakref in _event_handlers_ +_event_handlers_ = {} + +if sys.version.startswith('2.3'): + from sets import Set as set + +def event_dispatcher(hwnd, message, wparam, lparam): + eh = _event_handlers_ + na = {} + nas = set() + handlers = set() + for eh in [eh.get(hwnd, na), eh.get(None, na)]: + for eh in [eh.get(message, na) , eh.get(None, na)]: + for eh in [eh.get(wparam, na) , eh.get(None, na)]: + if message == WM_NOTIFY: + try: + nmh = cast(lparam, POINTER(NMHDR)).contents + handlers |= eh.get(nmh.hwndFrom, na) + handlers |= eh.get(None, nas) + except: + pass + else: + handlers |= eh.get(lparam, nas) + handlers |= eh.get(None, nas) + for obj, handler_name in handlers: + handler = getattr(obj, handler_name, None) + if not callable(handler): continue + result = handler((hwnd, message, wparam, lparam)) + if bool(result): + return result + return windll.user32.DefWindowProcW( + c_int(hwnd), + c_int(message), + c_int(wparam), + c_int(lparam)) + +def event_handler(hwnd=None, message=None, wparam=None, lparam=None): + ''' + Decorator for event handlers + The handler must return True to stop further message processing by other handlers of the same Window + ''' + def decorator(func): + func._handled_event_ = (hwnd, message, wparam, lparam) + return func + return decorator + +class BasicWindow(object): + ''' + Wraps + ''' + _window_class_name_ = None + _window_class_style_ = CS_HREDRAW | CS_VREDRAW + _window_style_ = 0 + _window_ex_style_ = 0 + + def __init__(self, parent=None, x=None, y=None, width=None, height=None, text=None, frontend=None, icon=None): + self.parent = parent + self._icon = None + if frontend: + self.frontend = frontend + else: + self.frontend = parent.frontend + if not self.__class__._window_class_name_: + self.__class__._window_class_name_ = self.__class__.__name__ + if icon: + self._icon = windll.user32.LoadImageW(NULL, text_type(icon), IMAGE_ICON, 0, 0, LR_LOADFROMFILE); + self._register_window() + self._create_window(x, y, width, height, text) + self._register_handlers() + self.on_init() + + def _register_window(self): + self._window_class_ = WNDCLASSEX( + event_dispatcher, + self._window_class_name_, + self._window_class_style_, + icon=self._icon) + self._window_class_._atom_ = windll.user32.RegisterClassExW(byref(self._window_class_)) + if not self._window_class_._atom_: + raise WinError() + + def _create_window(self, x=None, y=None, width=None, height=None, text=None): + hmenu = NULL + lpparam = NULL + hwnd = self.parent and self.parent._hwnd or NULL + frontend_hinstance = self.frontend._hinstance + if x is None: + x = CW_USEDEFAULT + if y is None: + y = CW_USEDEFAULT + if width is None: + width = CW_USEDEFAULT + if height is None: + height = CW_USEDEFAULT + if not text: + text = "" + self._hwnd = CreateWindowEx( + self._window_ex_style_, + text_type(self._window_class_name_), + text_type(text), + self._window_style_, + x, y, width, height, + hwnd, + hmenu, + frontend_hinstance, + lpparam) + + def _register_handlers(self): + for key in dir(self): + handler = getattr(self, key) + handled_event = getattr(handler, "_handled_event_", None) + if callable(handler) and handled_event: + handled_event = list(handled_event) + for i,subkey in enumerate(handled_event): + if subkey is SELF_HWND: + handled_event[i] = self._hwnd + elif subkey is PARENT_HWND: + handled_event[i] = self.parent._hwnd + elif subkey is APPLICATION_HINSTANCE: + handled_event[i] = self.frontend._hinstance + self._add_event_handler(key , handled_event) + + def _add_event_handler(self, handler_name, handled_event): + hwnd, message, wparam, lparam = handled_event + eh = _event_handlers_ + eh = eh.setdefault(hwnd,{}) + eh = eh.setdefault(message,{}) + eh = eh.setdefault(wparam,{}) + handlers = eh.setdefault(lparam,set()) + handlers.add((self, handler_name)) + + def on_init(self): + pass + +def open_dialog(hwnd, file_filter=None): + fn = OPENFILENAME() + if file_filter: + fn.lpstrFilter = LPCTSTR(file_filter) + fn.nFilterIndex = 1; + fn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST + fn.nMaxFile = MAX_PATH + fn.hwndOwner = hwnd + fn.lStructSize = sizeof(fn) + buf = create_unicode_buffer(MAX_PATH) + fn.lpstrFile = cast(buf, c_wchar_p) + if GetOpenFileName(byref(fn)) != 0: + return fn.lpstrFile + else: + return '' + +class Window(BasicWindow): + _repaint_on_move_ = False + _is_transparent_ = False + + def __init__(self, parent=None, x=None, y=None, width=None, height=None, text=None, frontend=None, icon=None): + self._gdi_disposables = [] + self._background_color = None + self._background_brush = None + self._default_background_brush = None + self._text_color = None + self._null_brush = windll.gdi32.GetStockObject(NULL_BRUSH) + self._gdi_disposables.append(self._null_brush) + BasicWindow.__init__(self, parent, x, y, width, height, text, frontend, icon) + self.set_font() + self.update() + + def get_window_rect(self): + rect = RECT() + windll.user32.GetWindowRect(self._hwnd, byref(rect)) + return rect.left, rect.top, rect.right, rect.bottom + + def get_client_rect(self): + rect = RECT() + windll.user32.GetClientRect(self._hwnd, byref(rect)) + return rect.left, rect.top, rect.right, rect.bottom + + def move(self, x, y): + if not windll.user32.SetWindowPos(self._hwnd, NULL, x, y, 0, 0, SWP_NOSIZE): + #~ if not windll.user32.MoveWindow(self._hwnd, x, y, -1, -1, self._repaint_on_move_): #repaint + raise WinError() + + def resize(self, width, height): + if not windll.user32.SetWindowPos(self._hwnd, NULL, 0, 0, width, height, SWP_NOMOVE): + raise WinError() + + def show(self): + #http://msdn.microsoft.com/en-us/library/ms633548.aspx + self.on_show() + if not windll.user32.ShowWindow(self._hwnd, SW_SHOWNORMAL): + #raise WinError() + pass + self.update() + + def enable(self): + if not windll.user32.EnableWindow(self._hwnd, True): + #raise WinError() + pass + self.update() + + def disable(self): + if not windll.user32.EnableWindow(self._hwnd, False): + #raise WinError() + pass + self.update() + + def hide(self): + if not windll.user32.ShowWindow(self._hwnd, SW_HIDE): + #~ raise WinError() + pass + + def set_focus(self): + windll.user32.SetFocus(self._hwnd) + + def update(self, full=False): + if full: + windll.user32.ShowWindow(self._hwnd, SW_HIDE) + windll.user32.ShowWindow(self._hwnd, SW_SHOW) + if not windll.user32.UpdateWindow(self._hwnd): + raise WinError() + + def get_text(self): + buffer_max_len = 999 + buffer = (c_wchar * buffer_max_len)() + if windll.user32.GetWindowTextW(self._hwnd, byref(buffer), buffer_max_len): + return text_type(buffer.value) + + def set_text(self, text): + old_text = self.get_text() + if not windll.user32.SetWindowTextW(self._hwnd, text_type(text)): + raise WinError() + if old_text and old_text.rstrip() != text.rstrip(): + # without update, text is displayed on top of old text when background is transparent + # TBD check _on_ctlcolorstatic whether that can be avoided + self.update(full=True) + + def set_font(self, family='Tahoma', size=13, bold=False): + weight = bold and FW_BOLD or FW_NORMAL + font = windll.gdi32.CreateFontW( + size, # height of font + 0, # average character width + 0, # angle of escapement + 0, # base-line orientation angle + weight, # font weight + 0, # FALSE italic attribute option + 0, # FALSE underline attribute option + 0, # FALSE strikeout attribute option + 0, # DEFAULT_CHARSET character set identifier + 0, # OUT_DEFAULT_PRECIS output precision + 0, # CLIP_DEFAULT_PRECIS clipping precision + 0, # NONANTIALIASED_QUALITY output quality + 0, #0x20, DEFAULT_PITCH | FF_DONTCARE # pitch and family + text_type(family) #TEXT("Verdana") # typeface name + ) + self._gdi_disposables.append(font) + self._send_message(WM_SETFONT, font, True) + + def set_background_color(self, red255=None, green255=None, blue255=None): + if (red255, green255, blue255) == (None, None, None): + self._background_color = None + if self._default_background_brush: + windll.user32.SetClassLongW(self._hwnd, GCL_HBRBACKGROUND, self._default_background_brush) + else: + self._background_color = RGB(red255, blue255, green255) + self._background_brush = windll.gdi32.CreateSolidBrush(self._background_color) + self._default_background_brush = windll.user32.SetClassLongW(self._hwnd, GCL_HBRBACKGROUND, self._background_brush) + self._gdi_disposables.append(self._background_color) + self._gdi_disposables.append(self._background_brush) + self._gdi_disposables.append(self._default_background_brush) + + def set_text_color(self, red255=None, green255=None, blue255=None): + if (red255, green255, blue255) == (None, None, None): + self._text_color = None + else: + self._text_color = RGB(red255, green255, blue255) + self._gdi_disposables.append(self._text_color) + + def set_transparency(self, transparent): + self.is_transparent = transparent + self.update(full = True) + + def _on_command(self, event): + self.on_command(event) + _on_command = event_handler(message=WM_COMMAND, lparam=SELF_HWND)(_on_command) + + def on_command(self, event): + pass + + def _on_notify(self, event): + self.on_notify(event) + _on_notify = event_handler(message=WM_NOTIFY, lparam=SELF_HWND)(_on_notify) + + def on_notify(self, event): + pass + + def _on_wm_hscroll(self, event): + self.on_wm_hscroll(event) + _on_wm_hscroll = event_handler(message=WM_HSCROLL, lparam=SELF_HWND)(_on_wm_hscroll) + + def on_wm_hscroll(self, event): + pass + + def stop_redraw(self): + self._send_message(WM_SETREDRAW, False, 0) + #~ LockWindowUpdate(self._hwnd) + #~ LockWindowUpdate(NULL) + + def start_redraw(self): + self._send_message(WM_SETREDRAW, True, 0) + + def _send_message(self, message, wparam=0, lparam=0): + return windll.user32.SendMessageW(self._hwnd, message, wparam, lparam) + + def _on_destroy(self, event): + for x in self._gdi_disposables: + try: + windll.gdi32.DeleteObject(x) + except: + pass + self.on_destroy() + _on_destroy = event_handler(message=WM_DESTROY, hwnd=SELF_HWND)(_on_destroy) + + def _on_ctlcolorstatic(self, event): + hdc = event[2] + if self._text_color: + windll.gdi32.SetTextColor(hdc, self._text_color) + if self._is_transparent_: + windll.gdi32.SetBkMode(hdc, TRANSPARENT) + brush = self._null_brush + else: + brush = True + return brush + event_handler(message=WM_CTLCOLORBTN, lparam=SELF_HWND)(_on_ctlcolorstatic) + event_handler(message=WM_CTLCOLORSTATIC, lparam=SELF_HWND)(_on_ctlcolorstatic) + + def on_show(self): + pass + + def on_destroy(self): + pass + +class Frontend(object): + ''' + Wraps a Windows application + It is associated to a main window + It controls the message processing + ''' + _main_window_class_ = Window + + def __init__(self, main_window_class=None, **kargs): + self._hwnd = None + self._hinstance = windll.kernel32.GetModuleHandleW(c_int(NULL)) + kargs["frontend"] = self + if not main_window_class: + main_window_class = self._main_window_class_ + self.main_window = main_window_class(**kargs) + self.on_init() + + def set_title(self, title): + self.main_window.set_text(title) + + def set_icon(self, icon_path): + if icon_path and os.path.isfile(icon_path): + self.main_window._icon = windll.user32.LoadImageW(NULL, text_type(icon_path), IMAGE_ICON, 0, 0, LR_LOADFROMFILE); + windll.user32.SendMessageW(self.main_window._hwnd, WM_SETICON, ICON_SMALL, self.main_window._icon) + + def get_title(self): + return self.main_window.get_text() + + def run(self): + ''' + Starts the message processing + ''' + msg = MSG() + pMsg = pointer(msg) + self._keep_running = True + self.on_run() + while self._keep_running and windll.user32.GetMessageW(pMsg, NULL, 0, 0) > 0: + #TBD if IsDialogMessage is used, other messages are not processed, for now doing a manual exception + if self.main_window._hwnd == NULL \ + or pMsg.contents.message in (WM_COMMAND, WM_PAINT, WM_CTLCOLORSTATIC, WM_DESTROY, WM_QUIT) \ + or not windll.user32.IsDialogMessage(self.main_window._hwnd , pMsg): + windll.user32.TranslateMessage(pMsg) + windll.user32.DispatchMessageW(pMsg) + + def stop(self): + ''' + Stops the message processing + ''' + self._keep_running = False + #Post a message to unblock GetMessageW + windll.user32.PostMessageW(self.main_window._hwnd,WM_NULL, 0, 0) + + def on_init(self): + pass + + def on_run(self): + pass + + def quit(self): + ''' + Destroys the main window + ''' + windll.user32.DestroyWindow(self.main_window._hwnd) + + def _quit(self): + ''' + Really quit anything on the windows side, + this is called by MainWindow.on_destroy + ''' + windll.user32.PostQuitMessage(0) + self.on_quit() + + def on_quit(self): + pass + + def show_error_message(self, message, title=None): + if not title: + title = self.get_title() + windll.user32.MessageBoxW(self.main_window._hwnd, text_type(message), text_type(title), MB_OK|MB_ICONERROR) + + def show_info_message(self, message, title=None): + if not title: + title = self.get_title() + windll.user32.MessageBoxW(self.main_window._hwnd, text_type(message), text_type(title), MB_OK|MB_ICONINFORMATION) + + def ask_confirmation(self, message, title=None): + if not title: + title = self.get_title() + result = windll.user32.MessageBoxW(self.main_window._hwnd, text_type(message), text_type(title), MB_YESNO|MB_ICONQUESTION) + return result == IDYES + + def ask_to_retry(self, message, title=None): + if not title: + title = self.get_title() + result = windll.user32.MessageBoxW(self.main_window._hwnd, text_type(message), text_type(title), MB_RETRYCANCEL) + return result == IDRETRY + +class MainWindow(Window): + ''' + Main Window + Has borders, and is overlapped, when it is closed, the frontend quits + ''' + + _window_class_name_ = None + _window_style_ = WS_OVERLAPPEDWINDOW + _window_ex_style_ = WS_EX_CONTROLPARENT + + def on_destroy(self): + self.frontend._quit() + + def __del__(self): + self.frontend._quit() + +class MainDialogWindow(MainWindow): + ''' + Like MainWindow + But cannot be resized, looks like a dialog + ''' + _window_style_ = WS_BORDER | WS_SYSMENU | WS_CAPTION + +class Widget(Window): + _window_class_name_ = "Must Override This" + _window_style_ = WS_CHILD | WS_VISIBLE | WS_TABSTOP + _window_ex_style_ = 0 + +class StaticWidget(Widget): + _window_class_name_ = "STATIC" + _window_style_ = WS_CHILD | WS_VISIBLE + _window_ex_style_ = WS_EX_TRANSPARENT + _is_transparent_ = True + +class EtchedRectangle(Widget): + _window_class_name_ = "STATIC" + _window_style_ = WS_CHILD | WS_VISIBLE | SS_ETCHEDFRAME + +class Panel(Window): + _window_class_name_ = None + _window_style_ = WS_CHILD | WS_VISIBLE + _window_ex_style_ = WS_EX_CONTROLPARENT + #_window_style_ = StaticWidget._window_style_|WS_BORDER + +class Edit(Widget): + _window_class_name_ = "EDIT" + _window_style_ = Widget._window_style_ | WS_TABSTOP + _window_ex_style_ = WS_EX_CLIENTEDGE + +class PasswordEdit(Widget): + _window_class_name_ = "EDIT" + _window_style_ = Widget._window_style_ | ES_PASSWORD | WS_TABSTOP + _window_ex_style_ = WS_EX_CLIENTEDGE + +class Tab(Widget): + #define WC_TABCONTROLW L"SysTabControl32" ??? + _window_class_name_ = "SysTabControl32" + + def add_item(self, title, child, position=0): + item = TCITEM() + item.mask = TCIF_TEXT | TCIF_PARAM + item.pszText = text_type(title) + item.lParam = child._hwnd + #~ self.InsertItem(index, item) + #~ self._ResizeChild(child) + #~ self.SetCurrentTab(index) + self._send_message(TCM_INSERTITEM, position, byref(item)) + +class Tooltip(Widget): + _window_class_name_ = u"SysTabControl32" + +class Trackbar(Widget): + _window_class_name_ = u'msctls_trackbar32' + + def set_range(self, minimum, maximum): + #r = ((minimum & 0xFFFF) | (maximum & 0xFFFF)) << 16 + #self._send_message(TBM_SETRANGE, TRUE, r) + self._send_message(TBM_SETRANGEMIN, TRUE, minimum) + self._send_message(TBM_SETRANGEMAX, TRUE, maximum) + + def get_pos(self): + return self._send_message(TBM_GETPOS, 0, 0) + + def set_buddy(self, hwnd, left=True): + if left: + left = TRUE + else: + left = FALSE + return self._send_message(TBM_SETBUDDY, left, hwnd) + + def on_wm_hscroll(self, event): + pass + +class ListView(Widget): + _window_class_name_ = u'SysListView32' + _window_style_ = Widget._window_style_ | WS_BORDER | LVS_REPORT | LVS_SINGLESEL + + def on_notify(self, event): + lparam = event[3] + nmh = cast(lparam, POINTER(NMLISTVIEW)).contents + if nmh.hdr.code == LVN_ITEMCHANGED: + if (nmh.uNewState & LVIS_SELECTED) != 0: + self.on_selection_changed(nmh.iItem) + + def on_selection_changed(self, item): + pass + + def clear(self): + self._send_message(LVM_DELETEALLITEMS, 0, 0) + + def insert_column(self, col_name, col_width, idx=0): + c = LVCOLUMN() + c.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM + c.pszText = text_type(col_name) + c.cx = col_width + self._send_message(LVM_INSERTCOLUMN, idx, byref(c)) + + def insert_item(self, item_name, idx): + if idx < 0: + # Append. + idx = self._send_message(LVM_GETITEMCOUNT, 0, 0) + item = LVITEM() + item.mask = LVIF_TEXT + item.iItem = idx + item.iSubItem = 0 + item.pszText = text_type(item_name) + return self._send_message(LVM_INSERTITEM, 0, byref(item)) + + def delete_item(self, idx): + self._send_message(LVM_DELETEITEM, idx, 0) + + def set_item(self, idx, subidx, text): + item = LVITEM() + item.mask = LVIF_TEXT + item.iItem = idx + item.iSubItem = subidx + item.pszText = text_type(text) + self._send_message(LVM_SETITEM, 0, byref(item)) + + def get_selection(self, sub_index=None): + idx = self._send_message(LVM_GETNEXTITEM, -1, LVNI_SELECTED) + if idx == -1: + return '' + item = LVITEM() + item.iItem = idx + item.mask = LVIF_TEXT + if sub_index != None: + item.iSubItem = sub_index + # XXX evand 2009-07-21: Using MAX_PATH here because the UDI for ISO + # files will be their filename. + item.cchTextMax = MAX_PATH + buf = create_unicode_buffer(MAX_PATH) + item.pszText = cast(buf, c_wchar_p) + self._send_message(LVM_GETITEM, 0, byref(item)) + return item.pszText + + +class ListBox(Widget): + _window_class_name_ = "LISTBOX" + _window_style_ = Widget._window_style_ | LBS_NOTIFY | WS_BORDER | WS_VSCROLL | WS_TABSTOP + + def add_item(self, text): + self._send_message(LB_ADDSTRING, 0, text_type(text)) + +class SortedListBox(Widget): + _window_style_ = ListBox._window_style_ | LBS_SORT + +class ComboBox(Widget): + _window_class_name_ = "COMBOBOX" #"ComboBoxEx32" + _window_style_ = Widget._window_style_ | CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + + def on_command(self, event): + if event[2] == 589824: #TBD use a constant name + self.on_change() + + def set_value(self, value): + self._send_message(CB_SELECTSTRING, -1, text_type(value)) # CB_SETCURSEL, value, 0) + + def add_item(self, text): + self._send_message(CB_ADDSTRING, 0, text_type(text)) + + def on_change(self): + pass + +class SortedComboBox(ComboBox): + _window_style_ = ComboBox._window_style_ | CBS_SORT + +class Button(Widget): + _window_class_name_ = "BUTTON" + _window_style_ = Widget._window_style_ | BS_PUSHBUTTON | WS_TABSTOP + #~ _is_transparent_ = True + #~ _window_ex_style_ = WS_EX_TRANSPARENT + + def on_command(self, event): + if event[2] == 0: + self.on_click() + + def is_checked(self): + value = self._send_message(BM_GETCHECK, 0, 0) + return value == BST_CHECKED + + def set_check(self, value): + if value: + value = BST_CHECKED + else: + value = BST_UNCHECKED + self._send_message(BM_SETCHECK, value, 0) + + def on_click(self): + pass + +class FlatButton(Button): + _window_style_ = Widget._window_style_ | BS_FLAT | WS_TABSTOP + +class DefaultButton(Button): + _window_style_ = Widget._window_style_ | BS_DEFPUSHBUTTON | WS_TABSTOP + +class RadioButton(Button): + _window_class_name_ = "BUTTON" + _window_style_ = Widget._window_style_ | BS_AUTORADIOBUTTON | WS_TABSTOP + _is_transparent_ = True + +class GroupBox(Button): + _window_class_name_ = "BUTTON" + _window_style_ = Widget._window_style_ | BS_GROUPBOX #| WS_TABSTOP + _is_transparent_ = True + _window_ex_style_ = WS_EX_CONTROLPARENT + +class CheckButton(Button): + _window_class_name_ = "BUTTON" + _window_style_ = Widget._window_style_ | BS_AUTOCHECKBOX | WS_TABSTOP + _is_transparent_ = True + +class Label(StaticWidget): + _window_class_name_ = "Static" + _window_style_ = StaticWidget._window_style_ | SS_NOPREFIX + +class Bitmap(StaticWidget): + _window_class_name_ = "Static" + _window_style_ = StaticWidget._window_style_ | SS_BITMAP + _window_ex_style_ = WS_EX_TRANSPARENT + + def set_image(self, path, width=0, height=0): + path = text_type(path) + himage = windll.user32.LoadImageW(NULL, path, IMAGE_BITMAP, width, height, LR_LOADFROMFILE); + self._gdi_disposables.append(himage) + self._send_message(STM_SETIMAGE, IMAGE_BITMAP, himage) + +class Icon(StaticWidget): + _window_class_name_ = "Static" + _window_style_ = StaticWidget._window_style_|SS_ICON + + def set_image(self, path, width=0, height=0): + path = text_type(path) + himage = windll.user32.LoadImageW(NULL, path, IMAGE_ICON, width, height, LR_LOADFROMFILE); + self._gdi_disposables.append(himage) + self._send_message(STM_SETIMAGE, IMAGE_ICON, himage) + +class ProgressBar(Widget): + _window_class_name_ = "msctls_progress32" + + def set_position(self, position): + return self._send_message(PBM_SETPOS, position, 0) + + def get_position(self): + return self._send_message(PBM_GETPOS, 0, 0) + + def set_bar_color(self, color): + return self._send_message(PBM_SETBARCOLOR, 0, color) + + def set_background_color(self, clrBk): + return self._send_message(PBM_SETBKCOLOR, 0, color) + + def step(self, n=1): + step0 = self.get_position() + #~ if not n: + #~ step1 = self._send_message(PBM_STEPIT, 0, 0) #PBM_DELTAPOS + step1 = self.set_position(step0 + n) + self.on_change() + return step1 + + def on_change(self): + pass + +class Link(Widget): + _window_class_name_ = "Link" + +class Page(Window): + _window_class_name_ = None + _window_style_ = WS_CHILD + _window_ex_style_ = WS_EX_CONTROLPARENT diff --git a/usbcreator/install.py b/usbcreator/install.py new file mode 100644 index 0000000..94cd16d --- /dev/null +++ b/usbcreator/install.py @@ -0,0 +1,692 @@ +# Copyright (C) 2008, 2009 Canonical Ltd. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import os +import stat +import sys +import shutil +from usbcreator.misc import ( + USBCreatorProcessException, + callable, + fs_size, + popen, + ) +from usbcreator.remtimest import RemainingTimeEstimator +from threading import Thread, Event +import logging +from hashlib import md5 + +if sys.platform != 'win32': + from usbcreator.misc import MAX_DBUS_TIMEOUT + + +class progress(Thread): + def __init__(self, start_free, to_write, device): + Thread.__init__(self) + self.start_free = start_free + self.to_write = to_write + self.device = device + self._stopevent = Event() + # TODO evand 2009-07-24: We should fiddle with the min_age and max_age + # parameters so this doesn't constantly remind me of the Windows file + # copy dialog: http://xkcd.com/612/ + self.remtime = RemainingTimeEstimator() + + def progress(self, per, remaining, speed): + pass + + def run(self): + try: + while not self._stopevent.isSet(): + free = fs_size(self.device)[1] + written = self.start_free - free + v = int((written / float(self.to_write)) * 100) + est = self.remtime.estimate(written, self.to_write) + if callable(self.progress): + self.progress(v, est[0], est[1]) + self._stopevent.wait(2) + except Exception: + logging.exception('Could not update progress:') + + def join(self, timeout=None): + self._stopevent.set() + Thread.join(self, timeout) + +class install(Thread): + def __init__(self, source, target, persist, device=None, + allow_system_internal=False, + fastboot_mode=False): + Thread.__init__(self) + self.source = source + self.target = target + self.persist = persist + self.device = device + self.allow_system_internal = allow_system_internal + self.fastboot_mode = fastboot_mode + self._stopevent = Event() + self.progress_thread = None + logging.debug('install thread source: %s' % source) + logging.debug('install thread target: %s' % target) + logging.debug('install thread persistence: %d' % persist) + + # Signals. + + def success(self): + pass + + def _success(self): + if self.progress_thread and self.progress_thread.is_alive(): + logging.debug('Shutting down the progress thread.') + self.progress_thread.join() + if callable(self.success): + self.success() + + def failure(self, message=None): + pass + + def _failure(self, message=None): + logging.critical(message) + if self.progress_thread and self.progress_thread.is_alive(): + self.progress_thread.join() + if callable(self.failure): + self.failure(message) + sys.exit(1) + + def progress(self, complete, remaining, speed): + '''Emitted with an integer percentage of progress completed, time + remaining, and speed.''' + pass + + def progress_message(self, message): + '''Emitted with a translated string like "Installing the + bootloader..." + ''' + pass + + def retry(self, message): + '''Will be called when we need to know if the user wants to try a + failed operation again. Must return a boolean value.''' + pass + + def join(self, timeout=None): + self._stopevent.set() + Thread.join(self, timeout) + + def check(self): + if self._stopevent.isSet(): + logging.debug('Asked by the controlling thread to shut down.') + if self.progress_thread and self.progress_thread.is_alive(): + self.progress_thread.join() + sys.exit(0) + + # Exception catching wrapper. + + def run(self): + try: + if os.path.isfile(self.source): + ext = os.path.splitext(self.source)[1].lower() + if ext not in ['.iso', '.img']: + self._failure(_('The extension "%s" is not supported.') % + ext) + if self.fastboot_mode: + self.bootimg = os.path.splitext(self.source)[0] + '.bootimg' + if not os.path.isfile(self.bootimg): + self._failure(_('Missing matching "%s" for source image %s.') % + (self.bootimg, self.source)) + self.fastboot_install() + elif ext == '.iso': + if sys.platform == 'win32': + self.cdimage_install() + else: + self.install() + elif ext == '.img': + self.diskimage_install() + else: + self.install() + self._success() + except Exception as e: + # TODO evand 2009-07-25: Bring up our own apport-like utility. + logging.exception('Exception raised:') + self._failure(_('An uncaught exception was raised:\n%s') % str(e)) + + # Helpers for core routines. + + def initialize_progress_thread(self): + logging.debug('initialize_progress_thread') + if os.path.isfile(self.source): + s_total = os.path.getsize(self.source) + else: + s_total, s_free = fs_size(self.source) + t_total, t_free = fs_size(self.target) + # We don't really care if we can't write the entire persistence + # file. + if s_total > t_total: + s_total = s_total / 1024 / 1024 + t_total = t_total / 1024 / 1024 + self._failure(_('Insufficient free space to write the image:\n' + '%s\n\n(%d MB) > %s (%d MB)') % + (self.source, s_total, self.target, t_total)) + # TODO evand 2009-07-24: Make sure dd.exe doesn't do something + # stupid, like write past the end of the device. + damage = s_total + (self.persist * 1024 * 1024) + self.progress_thread = progress(t_free, damage, self.target) + self.progress_thread.progress = self.progress + self.progress_thread.start() + self.check() + + def remove_extras(self): + logging.debug('remove_extras') + '''Remove files created by usb-creator.''' + casper = os.path.join(self.target, 'casper-rw') + if os.path.exists(casper): + os.remove(casper) + syslinux = os.path.join(self.target, 'syslinux') + if os.path.exists(syslinux): + shutil.rmtree(syslinux) + ldlinux = os.path.join(self.target, 'ldlinux.sys') + if os.path.exists(ldlinux): + os.remove(ldlinux) + + def os_vers(self): + """Return a tuple of the target OS version and our OS version.""" + import lsb_release + try: + from debian import debian_support + except ImportError: + from debian_bundle import debian_support + + target_os_ver = None + our_os_ver = debian_support.Version( + lsb_release.get_distro_information()['RELEASE']) + + if os.path.exists(os.path.join(self.target, '.disk', 'info')): + with open(os.path.join(self.target, '.disk', 'info'),'r') as f: + contents = f.readline().split() + if len(contents) > 2: + # Consider point releases the same as the initial release + # (10.04.4 -> 10.04) + target_os_ver = debian_support.Version(contents[1]) + + return target_os_ver, our_os_ver + + def need_syslinux_legacy(self): + target_os_ver, our_os_ver = self.os_vers() + return our_os_ver >= '10.10' and target_os_ver <= '10.04' + + def install_bootloader(self, grub_location=''): + logging.debug('install_bootloader') + self.progress_pulse() + self.progress_message(_('Installing the bootloader...')) + message = _('Failed to install the bootloader.') + if sys.platform == 'win32': + # TODO evand 2009-07-23: Zero out the MBR. Check to see if the + # first 446 bytes are all NULs, and if not, ask the user if they + # want to wipe it. Confirm with a USB disk that never has had an + # OS installed to it. + opts = '-fma' + dev = str(os.path.splitdrive(self.target)[0]) + try: + popen(['syslinux', opts, dev]) + except (USBCreatorProcessException, IOError): + self._failure(message) + else: + import dbus + try: + bus = dbus.SystemBus() + obj = bus.get_object('com.ubuntu.USBCreator', + '/com/ubuntu/USBCreator') + obj.InstallBootloader(self.device, self.allow_system_internal, + grub_location, + self.need_syslinux_legacy(), + dbus_interface='com.ubuntu.USBCreator', + timeout=MAX_DBUS_TIMEOUT) + except dbus.DBusException: + self._failure(message) + self.progress_pulse_stop() + self.check() + + def mangle_syslinux(self): + logging.debug('mangle_syslinux') + self.progress_message(_('Modifying configuration...')) + try: + # Syslinux expects syslinux/syslinux.cfg. + os.renames(os.path.join(self.target, 'isolinux'), + os.path.join(self.target, 'syslinux')) + os.renames(os.path.join(self.target, 'syslinux', 'isolinux.cfg'), + os.path.join(self.target, 'syslinux', 'syslinux.cfg')) + except (OSError, IOError) as e: + # Failure here probably means the source was not really an Ubuntu + # image and did not have the files we wanted to move, see + # + self._failure(_('Could not move syslinux files in "%s": %s. ' + 'Maybe "%s" is not an Ubuntu image?') % + (self.target, e, self.source)) + self.check() + + # Mangle the configuration files based on the options we've selected. + import glob + for filename in glob.iglob(os.path.join(self.target, 'syslinux', '*.cfg')): + if os.path.basename(filename) == 'gfxboot.cfg': + continue + f = None + target_os_ver, our_os_ver = self.os_vers() + try: + f = open(filename, 'r') + label = '' + to_write = [] + for line in f.readlines(): + line = line.strip('\n\t').split() + if len(line) and len(line[0]): + command = line[0] + if command.lower() == 'label': + label = line[1].strip() + elif command.lower() == 'append': + if label not in ('check', 'memtest', 'hd'): + if self.persist != 0: + line.insert(1, 'persistent') + line.insert(1, 'cdrom-detect/try-usb=true') + if label not in ('memtest', 'hd'): + line.insert(1, 'noprompt') + #OS version specific mangles + #The syntax in syslinux changed with the version + #shipping in Ubuntu 10.10 + elif (target_os_ver and our_os_ver and + target_os_ver != our_os_ver): + #10.10 or newer image, burning on 10.04 or lower + if (command.lower() == 'ui' and + our_os_ver <= '10.04' and + target_os_ver >= '10.10'): + line.remove('ui') + + to_write.append(' '.join(line) + '\n') + f.close() + f = open(filename, 'w') + f.writelines(to_write) + except (KeyboardInterrupt, SystemExit): + raise + except: + # TODO evand 2009-07-28: Fail? Warn? + logging.exception('Unable to add persistence support to %s:' % + filename) + finally: + if f: + f.close() + self.check() + + def create_persistence(self): + logging.debug('create_persistence') + if self.persist != 0: + dd_cmd = ['dd', 'if=/dev/zero', 'bs=1M', 'of=%s' % + os.path.join(str(self.target), 'casper-rw'), + 'count=%d' % self.persist] + if sys.platform == 'win32': + # XXX evand 2009-07-30: Do not read past the end of the device. + # See http://www.chrysocome.net/dd for details. + dd_cmd.append('--size') + if sys.platform != 'win32': + mkfs_cmd = ['mkfs.ext3', '-F', '%s/casper-rw' % str(self.target)] + else: + # FIXME evand 2009-07-23: Need a copy of mke2fs.exe. + mkfs_cmd = [] + + self.progress_message(_('Creating a persistence file...')) + popen(dd_cmd) + self.check() + self.progress_message(_('Creating an ext2 filesystem in the ' + 'persistence file...')) + if sys.platform != 'win32': + popen(mkfs_cmd) + self.check() + + def sync(self): + logging.debug('sync') + # FIXME evand 2009-07-27: Use FlushFileBuffers on the volume (\\.\e:) + # http://msdn.microsoft.com/en-us/library/aa364439(VS.85).aspx + if sys.platform != 'win32': + self.progress_pulse() + self.progress_message(_('Finishing...')) + # I would try to unmount the device using umount here to get the + # pretty GTK+ message, but umount now returns 1 when you do that. + # We could call udisk's umount method over dbus, but I now think + # that this would look a lot cleaner if done in the usb-creator UI. + import dbus + try: + bus = dbus.SystemBus() + obj = bus.get_object('com.ubuntu.USBCreator', + '/com/ubuntu/USBCreator') + obj.UnmountFile(self.device, + dbus_interface='com.ubuntu.USBCreator', + timeout=MAX_DBUS_TIMEOUT) + except dbus.DBusException: + # TODO: Notify the user. + logging.exception('Unable to unmount:') + + # Core routines. + + def diskimage_install(self): + # TODO evand 2009-09-02: Disabled until we can find a cross-platform + # way of determining dd progress. + #self.initialize_progress_thread() + self.progress_message(_('Writing disk image...')) + failure_msg = _('Could not write the disk image (%s) to the device' + ' (%s).') % (self.source, self.device) + + cmd = ['dd', 'if=%s' % str(self.source), 'of=%s' % str(self.device), + 'bs=1M'] + if sys.platform == 'win32': + cmd.append('--size') + try: + popen(cmd) + except USBCreatorProcessException: + self._failure(failure_msg) + else: + import dbus + try: + bus = dbus.SystemBus() + obj = bus.get_object('com.ubuntu.USBCreator', + '/com/ubuntu/USBCreator') + obj.Image(self.source, self.device, self.allow_system_internal, + dbus_interface='com.ubuntu.USBCreator', + timeout=MAX_DBUS_TIMEOUT) + except dbus.DBusException: + self._failure(failure_msg) + + def _fastboot_command(self, cmd): + fastboot_cmd = ['fastboot', '-s', self.target] + fastboot_cmd.extend(cmd) + popen(fastboot_cmd) + + def fastboot_install(self): + self.progress(0, 3*60+9, True) + self.progress_message(_('Erasing boot partition...')) + self._fastboot_command(['erase', 'boot']) + self.progress(5, 3*60+7, True) + self.progress_message(_('Erasing user partition...')) + self._fastboot_command(['erase', 'userdata']) + self.progress(10, 3*60+5, True) + self.progress_message(_('Flashing boot partition...')) + self._fastboot_command(['flash', 'boot', self.bootimg]) + self.progress(15, 3*60+3, True) + self.progress_message(_('Flashing user partition...')) + self.progress_pulse() + self._fastboot_command(['flash', 'userdata', self.source]) + self.progress_pulse_stop() + self.progress(95, 1, True) + self.progress_message(_('Rebooting device...')) + self._fastboot_command(['reboot']) + self.progress(100, 0, True) + + def cdimage_install(self): + # Build. + + cmd = ['7z', 'l', self.source] + output = popen(cmd, stderr=None) + processing = False + listing = [] + for line in output.splitlines(): + if line.startswith('----------'): + processing = not processing + continue + if not processing: + continue + listing.append(line.split()) + self.check() + + # Clear. + + self.progress_message(_('Removing files...')) + for line in listing: + length = len(line) + assert length == 3 or length == 5 + t = os.path.join(self.target, line[-1]) + if os.path.exists(t): + self.check() + if os.path.isfile(t): + logging.debug('Removing %s' % t) + os.unlink(t) + elif os.path.isdir(t): + logging.debug('Removing %s' % t) + shutil.rmtree(t) + self.check() + self.remove_extras() + + self.initialize_progress_thread() + + # Copy. + + cmd = ['7z', 'x', self.source, 'md5sum.txt', '-so'] + md5sums = {} + try: + output = popen(cmd, stderr=None) + for line in output.splitlines(): + md5sum, filename = line.split() + filename = os.path.normpath(filename[2:]) + md5sums[filename] = md5sum + except Exception: + logging.error('Could not generate the md5sum list from md5sum.txt.') + + self.progress_message(_('Copying files...')) + for line in listing: + # TODO evand 2009-07-27: Because threads cannot kill other threads + # in Python, and because it takes a significant amount of time to + # copy the filesystem.sqaushfs file, we'll end up with a long wait + # after the user presses the cancel button. This is far from ideal + # and should be resolved. + # One possibility is to deal with subprocesses asynchronously. + self.check() + length = len(line) + if length == 5: + path = line[4] + logging.debug('Writing %s' % os.path.join(self.target, path)) + cmd = ['7z', 'x', '-o%s' % self.target, self.source, path] + popen(cmd) + + # Check md5sum. + + if path in md5sums: + targethash = md5() + targetfh = None + try: + targetfh = open(os.path.join(self.target, path), 'rb') + while 1: + buf = targetfh.read(16 * 1024) + if not buf: + break + targethash.update(buf) + if targethash.hexdigest() != md5sums[path]: + self._failure(_('md5 checksums do not match.')) + # TODO evand 2009-07-27: Recalculate md5 hash. + finally: + if targetfh: + targetfh.close() + else: + logging.warn('md5 hash not available for %s' % path) + # TODO evand 2009-07-27: Recalculate md5 hash. + elif length == 3: + # TODO evand 2009-07-27: Update mtime with line[0] (YYYY-MM-DD) + # and line[1] (HH:MM:SS). + logging.debug('mkdir %s' % os.path.join(self.target, line[2])) + os.mkdir(os.path.join(self.target, line[2])) + + self.install_efi() + + grub = os.path.join(self.target, 'boot', 'grub', 'i386-pc') + if os.path.isdir(grub): + self.install_bootloader(grub) + else: + self.install_bootloader() + self.mangle_syslinux() + + self.create_persistence() + self.sync() + + def install_efi(self): + logging.debug('install_efi') + self.progress_pulse() + self.progress_message(_('Installing the EFI bootloader...')) + message = _('Failed to install the EFI bootloader.') + efi_file = os.path.join(self.target, 'efi', 'boot', 'bootx64.efi') + efi_image = os.path.join(self.target, 'boot', 'grub', 'efi.img') + if os.path.exists(efi_file): + return + if not os.path.exists(efi_image): + return + import dbus + try: + bus = dbus.SystemBus() + obj = bus.get_object('com.ubuntu.USBCreator', + '/com/ubuntu/USBCreator') + obj.InstallEFI(self.target, efi_image, + dbus_interface='com.ubuntu.USBCreator', + timeout=MAX_DBUS_TIMEOUT) + except dbus.DBusException: + self._failure(message) + + + def install(self): + # Some of the code in this function was copied from Ubiquity's + # scripts/install.py + + self.progress_message(_('Removing files...')) + + # TODO evand 2009-07-23: This should throw up some sort of warning + # before removing the files. Add files to self.files, directories to + # self.directories, and then process each after the warning. If we can + # detect that it's Ubuntu (.disk/info), have the warning first say + # "Would you like to remove Ubuntu VERSION". + + for f in os.listdir(self.source): + self.check() + f = os.path.join(self.target, f) + if os.path.exists(f): + if os.path.isfile(f): + logging.debug('Removing %s' % f) + os.unlink(f) + elif os.path.isdir(f): + logging.debug('Removing %s' % f) + shutil.rmtree(f) + self.remove_extras() + self.check() + + self.initialize_progress_thread() + + self.progress_message(_('Copying files...')) + for dirpath, dirnames, filenames in os.walk(self.source): + sp = dirpath[len(self.source.rstrip(os.path.sep))+1:] + for name in dirnames + filenames: + relpath = os.path.join(sp, name) + sourcepath = os.path.join(self.source, relpath) + targetpath = os.path.join(self.target, relpath) + logging.debug('Writing %s' % targetpath) + st = os.lstat(sourcepath) + mode = stat.S_IMODE(st.st_mode) + if stat.S_ISLNK(st.st_mode): + if os.path.lexists(targetpath): + os.unlink(targetpath) + linkto = os.readlink(sourcepath) + # XXX evand 2009-07-24: VFAT does not have support for + # symlinks. + logging.warn('Tried to symlink %s -> %s\n' % + (linkto, targetpath)) + elif stat.S_ISDIR(st.st_mode): + if not os.path.isdir(targetpath): + os.mkdir(targetpath, mode) + elif stat.S_ISCHR(st.st_mode): + os.mknod(targetpath, stat.S_IFCHR | mode, st.st_rdev) + elif stat.S_ISBLK(st.st_mode): + os.mknod(targetpath, stat.S_IFBLK | mode, st.st_rdev) + elif stat.S_ISFIFO(st.st_mode): + os.mknod(targetpath, stat.S_IFIFO | mode) + elif stat.S_ISSOCK(st.st_mode): + os.mknod(targetpath, stat.S_IFSOCK | mode) + elif stat.S_ISREG(st.st_mode): + if os.path.exists(targetpath): + os.unlink(targetpath) + self.copy_file(sourcepath, targetpath) + + self.install_efi() + + grub = os.path.join(self.target, 'boot', 'grub', 'i386-pc') + if os.path.isdir(grub): + self.install_bootloader(grub) + else: + self.install_bootloader() + self.mangle_syslinux() + + self.create_persistence() + self.sync() + + def copy_file(self, sourcepath, targetpath): + self.check() + sourcefh = None + targetfh = None + # TODO evand 2009-07-24: Allow the user to disable this with a command + # line option. + md5_check = True + try: + while 1: + sourcefh = open(sourcepath, 'rb') + targetfh = open(targetpath, 'wb') + if md5_check: + sourcehash = md5() + while 1: + self.check() + buf = sourcefh.read(16 * 1024) + if not buf: + break + try: + targetfh.write(buf) + except IOError: + # TODO evand 2009-07-23: Catch exceptions around the + # user removing the flash drive mid-write. Give the + # user the option of selecting the re-inserted disk + # from a drop down list and continuing. + # TODO evand 2009-07-23: Fail more gracefully. + self._failure(_('Could not read from %s') % self.source) + if md5_check: + sourcehash.update(buf) + + if not md5_check: + break + targethash = md5() + # TODO evand 2009-07-25: First check the MD5SUMS.txt file for + # the hash. If it exists, and matches the source hash, + # continue on. If it exists and does not match the source hash, + # or it does not exist, calculate a new hash and compare again. + targetfh.close() + targetfh = open(targetpath, 'rb') + while 1: + buf = targetfh.read(16 * 1024) + if not buf: + break + targethash.update(buf) + if targethash.digest() != sourcehash.digest(): + if targetfh: + targetfh.close() + if sourcefh: + sourcefh.close() + logging.error('Checksums do not match.') + if callable(self.retry): + response = self.retry(_('Checksums do not match. Retry?')) + else: + response = False + if not response: + self._failure(_('Checksums do not match.')) + else: + break + finally: + if targetfh: + targetfh.close() + if sourcefh: + sourcefh.close() diff --git a/usbcreator/misc.py b/usbcreator/misc.py new file mode 100644 index 0000000..ea622f4 --- /dev/null +++ b/usbcreator/misc.py @@ -0,0 +1,201 @@ +#!/usr/bin/python + +# Copyright (C) 2009 Canonical Ltd. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 3, +# as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import gettext +import logging, logging.handlers +import os +import subprocess +import sys + +# The minimum size, in megabytes a persistence file can be. +MIN_PERSISTENCE = 1024 +MAX_PERSISTENCE = 4096 # VFAT maximum file size. +# Padding for the kernel and initramfs, in megabytes +PADDING = 30 +(CAN_USE, # Obvious. + CANNOT_USE, # The partition or disk is too small for the source image. + NEED_SPACE, # There is not enough free space, but there could be. + NEED_FORMAT, # The device has the wrong filesystem type, or the source is a + # disk image. +) = list(range(4)) +SOURCE_CD, SOURCE_ISO, SOURCE_IMG = list(range(3)) +MAX_LOG_SIZE = 1024 * 1024 * 1 +MAX_LOG_BACKUP = 0 + +EULA_STAMP = '.ubuntu-nexus7-installer.notice-accepted' + +if sys.platform != 'win32': + # TODO xnox 20121109 should not hard-code timeouts, instead should + # do async dbus calls with a qt or glib main loop running. + MAX_DBUS_TIMEOUT = 2147483 + +if sys.version >= '3': + text_type = str + + def callable(obj): + import collections + return isinstance(obj, collections.Callable) +else: + text_type = unicode + + callable = callable + +def setup_gettext(localedir='/usr/share/locale'): + kwargs = {} + if sys.version < '3': + kwargs['unicode'] = True + gettext.install('usbcreator', localedir=localedir, **kwargs) + +def setup_logging(): + log = logging.getLogger('') + # usb-creator used to write ~/.usb-creator.log as root (whoops!), so lets + # use a different name here. -- ev + # new location so let's go back to original name =) -- xnox + cache_dir = os.getenv('XDG_CACHE_HOME', os.path.expanduser('~/.cache')) + log_file = os.path.join(cache_dir, 'usb-creator.log') + handler = None + try: + handler = logging.handlers.RotatingFileHandler(log_file, + maxBytes=MAX_LOG_SIZE, backupCount=MAX_LOG_BACKUP) + except IOError: + logging.exception('Could not set up file logging:') + if handler: + formatter = logging.Formatter('usb-creator %(asctime)s (%(levelname)s)' + ' %(filename)s:%(lineno)d: %(message)s') + handler.setFormatter(formatter) + handler.setLevel(logging.DEBUG) + log.addHandler(handler) + log.setLevel(logging.DEBUG) + +def check_eula(save=False): + eula_stamp = os.path.expanduser('~/' + EULA_STAMP) + if save: + with open(eula_stamp, 'w') as f: + pass + return os.path.isfile(eula_stamp) + +def format_size(size): + """Format a partition size.""" + # Taken from ubiquity's ubiquity/misc.py + # TODO evand 2009-07-28: Localized size formatting. + if size < 1024: + unit = 'B' + factor = 1 + elif size < 1024 * 1024: + unit = 'kB' + factor = 1024 + elif size < 1024 * 1024 * 1024: + unit = 'MB' + factor = 1024 * 1024 + elif size < 1024 * 1024 * 1024 * 1024: + unit = 'GB' + factor = 1024 * 1024 * 1024 + else: + unit = 'TB' + factor = 1024 * 1024 * 1024 * 1024 + return '%.1f %s' % (float(size) / factor, unit) + +def format_mb_size(size): + if size < 1024: + unit = 'MB' + factor = 1 + elif size < 1024 * 1024: + unit = 'GB' + factor = 1024 + elif size < 1024 * 1024 * 1024: + unit = 'TB' + factor = 1024 * 1024 + return '%.1f %s' % (float(size) / factor, unit) + +def fs_size(device): + '''Returns a tuple of the total size of the filesystem + and the free space on it.''' + # FIXME evand 2009-06-05: Do we want the free bytes available to the user, + # or the total free bytes? Right now we're using the latter. + + if sys.platform == 'win32': + # Taken from Wubi. + import ctypes + freeuser = ctypes.c_int64() + total = ctypes.c_int64() + free = ctypes.c_int64() + try: + ctypes.windll.kernel32.GetDiskFreeSpaceExW( + text_type(device), + ctypes.byref(freeuser), + ctypes.byref(total), + ctypes.byref(free)) + except: + return (0, 0) + return (total.value, free.value) + else: + try: + stat = os.statvfs(device) + except: + return (0, 0) + free = stat.f_bsize * stat.f_bavail # Include reserved blocks. + total = stat.f_bsize * stat.f_blocks + return (total, free) + +class USBCreatorProcessException(Exception): + pass + +def popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, + stdin=subprocess.PIPE): + logging.debug(str(cmd)) + if sys.platform == 'win32': + STARTF_USESHOWWINDOW = 1 + SW_HIDE = 0 + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= STARTF_USESHOWWINDOW + startupinfo.wShowWindow = SW_HIDE + else: + startupinfo = None + process = subprocess.Popen(cmd, stdout=stdout, stderr=stderr, stdin=stdin, + universal_newlines=True, + startupinfo=startupinfo) + out, err = process.communicate() + if process.returncode is None: + process.wait() + elif process.returncode != 0: + raise USBCreatorProcessException(err) + return out + +# Taken from ubiquity. +def find_on_path(command): + """Is command on the executable search path?""" + if 'PATH' not in os.environ: + return False + path = os.environ['PATH'] + for element in path.split(os.pathsep): + if not element: + continue + filename = os.path.join(element, command) + if os.path.isfile(filename) and os.access(filename, os.X_OK): + return True + return False + +def prepend_path(directory): + if 'PATH' in os.environ and os.environ['PATH'] != '': + os.environ['PATH'] = '%s:%s' % (directory, os.environ['PATH']) + else: + os.environ['PATH'] = directory + +def sane_path(): + elements = os.environ.get('PATH', '').split(os.pathsep) + for element in ('/bin', '/sbin', '/usr/bin', '/usr/sbin'): + if element not in elements: + prepend_path(element) diff --git a/usbcreator/remtimest.py b/usbcreator/remtimest.py new file mode 100644 index 0000000..dd20d8e --- /dev/null +++ b/usbcreator/remtimest.py @@ -0,0 +1,85 @@ +# remtest.py - estimate remaining time of some task +# Copyright (C) 2009 Canonical, Ltd. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +import time + +class RemainingTimeEstimator: + + """Estimate the remaining time of some task. + + The estimate is based on measurements of the progress of the task at + various intervals. The caller occasionally feeds this class how much of a + task has been achieved, and the total size of the task. The caller can + + The remaining time is estimated based on timings taken from calls to + the estimate method. + + The caller may set the min_age and max_age attributes (defaults are + one and five seconds, respectively). min_age is the minimum age of + the measurements before speed is computed. max_age is the maximum age + of measurements before they are discarded. + + """ + + # The caller provides data via the 'estimate' method. We take the amount + # of work done and total from the caller, and the current time from + # time.time. Then we do an estimate by measuring the total amount of + # work done during the last X seconds, and compute the speed from + # that. Using the speed, we can compute the remaining time. + + def __init__(self): + self.measurements = [] + self.min_age = 1.0 # seconds + self.max_age = 5.0 # seconds + + def measure(self, done, total, current_time): + self.measurements.append((done, current_time)) + while self.measurements: + x, t = self.measurements[0] + if t >= current_time - self.max_age: + break + del self.measurements[0] + + def compute_speed(self): + """Compute speed from current set of measurements.""" + if not self.measurements: + return None + done_oldest, time_oldest = self.measurements[0] + done_newest, time_newest = self.measurements[-1] + duration = time_newest - time_oldest + if duration < self.min_age: + return None + done = done_newest - done_oldest + return done / duration + + def estimate(self, done, total): + """Estimate remaining time, given work done and work total. + + Return tuple (remaining_time, speed), where time is in seconds, + and speed is in units of work per second. + + If either can't be estimated, return a tuple of two Nones instead. + + Neither done nor total should decrease from call to call. + + """ + + self.measure(done, total, time.time()) + speed = self.compute_speed() + if speed: + return (total - done) / speed, speed + else: + return None, None