From 7954c5e5eba4c388cf4aed20129d55dfbc967d7f Mon Sep 17 00:00:00 2001 From: Tim Waugh Date: Thu, 5 Feb 2009 13:07:03 +0000 Subject: [PATCH] - Added in cups-pk-helper support from upstream. --- system-config-printer-git-1.1.x.patch | 4374 +++++++++++++++++++++++++ system-config-printer.spec | 7 +- 2 files changed, 4380 insertions(+), 1 deletion(-) create mode 100644 system-config-printer-git-1.1.x.patch diff --git a/system-config-printer-git-1.1.x.patch b/system-config-printer-git-1.1.x.patch new file mode 100644 index 0000000..8f5c795 --- /dev/null +++ b/system-config-printer-git-1.1.x.patch @@ -0,0 +1,4374 @@ +diff -up system-config-printer-1.1.3/authconn.py.git-1.1.x system-config-printer-1.1.3/authconn.py +--- system-config-printer-1.1.3/authconn.py.git-1.1.x 2009-02-02 17:49:39.000000000 +0000 ++++ system-config-printer-1.1.3/authconn.py 2009-02-05 10:52:40.000000000 +0000 +@@ -19,8 +19,10 @@ + + import threading + import cups ++import cupspk + import gobject + import gtk ++from errordialogs import * + from debug import * + + _ = lambda x: x +@@ -151,17 +153,29 @@ class Connection: + + def _connect (self): + cups.setUser (self._use_user) +- self._connection = cups.Connection (host=self._server, ++ ++ self._use_pk = self._server[0] == '/' or self._server == 'localhost' ++ if self._use_pk: ++ create_object = cupspk.Connection ++ else: ++ create_object = cups.Connection ++ ++ self._connection = create_object (host=self._server, + port=self._port, + encryption=self._encryption) ++ ++ if self._use_pk: ++ self._connection.set_parent(self._parent) ++ + self._user = self._use_user + debugprint ("Connected as user %s" % self._user) +- methodtype = type (self._connection.getPrinters) ++ methodtype_lambda = type (self._connection.getPrinters) ++ methodtype_real = type (self._connection.addPrinter) + for fname in dir (self._connection): + if fname[0] == '_': + continue + fn = getattr (self._connection, fname) +- if type (fn) != methodtype: ++ if not type (fn) in [methodtype_lambda, methodtype_real]: + continue + setattr (self, fname, self._make_binding (fname, fn)) + +@@ -190,6 +204,11 @@ class Connection: + raise cups.IPPError (cups.IPP_NOT_AUTHORIZED, '') + break + except cups.IPPError, (e, m): ++ if self._use_pk and m == 'pkcancel': ++ title = 'Unauthorized request (%s)' % fname ++ text = 'You are not authorized for the requested action' ++ show_info_dialog (title, text, None) ++ raise cups.IPPError (0, _("Operation canceled")) + if not self._cancel and (e == cups.IPP_NOT_AUTHORIZED or + e == cups.IPP_FORBIDDEN): + self._failed (e == cups.IPP_FORBIDDEN) +diff -U0 system-config-printer-1.1.3/ChangeLog.git-1.1.x system-config-printer-1.1.3/ChangeLog +--- system-config-printer-1.1.3/ChangeLog.git-1.1.x 2009-02-02 17:49:39.000000000 +0000 ++++ system-config-printer-1.1.3/ChangeLog 2009-02-05 10:52:40.000000000 +0000 +@@ -0,0 +1,13 @@ ++2009-02-04 Tim Waugh ++ ++ * jobviewer.py (JobViewer.set_statusicon_visibility): Fixed typo. ++ (JobViewer.job_added): Only add this job to the active set if it ++ is active; otherwise, remove it from the set if it is there. ++ (JobViewer.job_event): If the emptiness of the active set has ++ changed, update the status icon (trac #140). ++ ++2009-02-04 Tim Waugh ++ ++ * jobviewer.py (JobViewer.set_statusicon_visibility): Don't ++ display status icon for completed jobs (trac #140). ++ +diff -up /dev/null system-config-printer-1.1.3/cupspk.py +--- /dev/null 2009-02-05 08:56:23.492001950 +0000 ++++ system-config-printer-1.1.3/cupspk.py 2009-02-05 10:52:40.000000000 +0000 +@@ -0,0 +1,732 @@ ++# vim: set ts=4 sw=4 et: coding=UTF-8 ++# ++# Copyright (C) 2008 Novell, Inc. ++# Copyright (C) 2009 Red Hat, Inc. ++# Copyright (C) 2009 Tim Waugh ++# ++# Authors: Vincent Untz ++# ++# 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. ++# ++ ++# check FIXME/TODO here ++# check FIXME/TODO in cups-pk-helper ++# define fine-grained policy (more than one level of permission) ++# add missing methods ++ ++import os ++import sys ++ ++import tempfile ++ ++import cups ++import dbus ++import gtk ++ ++from dbus.mainloop.glib import DBusGMainLoop ++DBusGMainLoop(set_as_default=True) ++ ++PK_AUTH_NAME = 'org.freedesktop.PolicyKit.AuthenticationAgent' ++PK_AUTH_PATH = '/' ++PK_AUTH_IFACE = 'org.freedesktop.PolicyKit.AuthenticationAgent' ++ ++CUPS_PK_NAME = 'org.opensuse.CupsPkHelper.Mechanism' ++CUPS_PK_PATH = '/' ++CUPS_PK_IFACE = 'org.opensuse.CupsPkHelper.Mechanism' ++ ++CUPS_PK_NEED_AUTH = 'org.opensuse.CupsPkHelper.Mechanism.NotPrivileged' ++ ++ ++pk_auth_ret = False ++pk_auth_error = None ++pk_auth_running = False ++pk_auth_done = False ++ ++def _pk_auth_reply_handler(ret): ++ global pk_auth_ret ++ global pk_auth_done ++ ++ pk_auth_ret = ret ++ pk_auth_done = True ++ ++def _pk_auth_error_handler(e): ++ global pk_auth_error ++ global pk_auth_done ++ ++ pk_auth_error = str(e) ++ pk_auth_done = True ++ ++ ++# we can't subclass cups.Connection, even when adding ++# Py_TPFLAGS_BASETYPE to cupsconnection.c ++# So we'll hack this... ++class Connection: ++ def __init__(self, host, port, encryption): ++ self._parent = None ++ ++ try: ++ self._session_bus = dbus.SessionBus() ++ self._system_bus = dbus.SystemBus() ++ except dbus.exceptions.DBusException: ++ # One or other bus not running. ++ self._session_bus = self._system_bus = None ++ ++ self._connection = cups.Connection(host=host, ++ port=port, ++ encryption=encryption) ++ ++ self._hack_subclass() ++ ++ ++ def _hack_subclass(self): ++ # here's how to subclass without really subclassing. Just provide ++ # the same methods ++ methodtype = type(self._connection.getPrinters) ++ for fname in dir(self._connection): ++ if fname[0] == '_': ++ continue ++ fn = getattr(self._connection, fname) ++ if type(fn) != methodtype: ++ continue ++ if not hasattr(self, fname): ++ setattr(self, fname, fn.__call__) ++ ++ ++ def set_parent(self, parent): ++ self._parent = parent ++ ++ ++ def _get_cups_pk(self): ++ try: ++ object = self._system_bus.get_object(CUPS_PK_NAME, CUPS_PK_PATH) ++ return dbus.Interface(object, CUPS_PK_IFACE) ++ except dbus.exceptions.DBusException: ++ # Failed to get object or interface. ++ return None ++ except AttributeError: ++ # No system D-Bus ++ return None ++ ++ ++ def _obtain_auth(self, action, xid = 0): ++ global pk_auth_ret ++ global pk_auth_error ++ global pk_auth_done ++ global pk_auth_running ++ ++ if pk_auth_running: ++ # FIXME: raise an exception: this should really never happen ++ return False ++ ++ pk_auth_ret = False ++ pk_auth_error = None ++ pk_auth_done = False ++ ++ pk_auth_object = self._session_bus.get_object(PK_AUTH_NAME, PK_AUTH_PATH) ++ pk_auth = dbus.Interface(pk_auth_object, PK_AUTH_IFACE) ++ ++ # We're doing this dbus call asynchronously because we want to not ++ # freeze the UI while a menu is being destroyed. And the windows might ++ # need some repainting while the authorization dialog is displayed. ++ pk_auth_running = True ++ ++ pk_auth.ObtainAuthorization(action, dbus.UInt32(xid), dbus.UInt32(os.getpid()), reply_handler=_pk_auth_reply_handler, error_handler=_pk_auth_error_handler) ++ ++ while not pk_auth_done: ++ gtk.main_iteration(True) ++ ++ pk_auth_running = False ++ ++ if pk_auth_error != None: ++ raise dbus.exceptions.DBusException(pk_auth_error) ++ ++ if not type(pk_auth_ret) == dbus.Boolean: ++ return False ++ ++ return pk_auth_ret != 0 ++ ++ ++ def _handle_exception_with_auth(self, e): ++ if e.get_dbus_name() != CUPS_PK_NEED_AUTH: ++ return False ++ ++ tokens = e.get_dbus_message().split(' ', 2) ++ if len(tokens) != 3: ++ return False ++ ++ try: ++ xid = 0 ++ if self._parent and getattr(self._parent, 'window') and getattr(self._parent.window, 'xid'): ++ xid = self._parent.window.xid ++ ++ # FIXME: is xid working? ++ ret = self._obtain_auth(tokens[0], xid) ++ except dbus.exceptions.DBusException: ++ return False ++ ++ if not ret: ++ raise cups.IPPError(cups.IPP_NOT_AUTHORIZED, 'pkcancel') ++ ++ return True ++ ++ ++ def _call_with_pk_and_fallback(self, use_fallback, pk_function_name, pk_args, fallback_function, *args, **kwds): ++ pk_function = None ++ ++ if not use_fallback: ++ cups_pk = self._get_cups_pk() ++ if cups_pk: ++ try: ++ pk_function = cups_pk.get_dbus_method(pk_function_name) ++ except dbus.exceptions.DBusException: ++ pass ++ ++ if use_fallback or not pk_function: ++ return fallback_function(*args, **kwds) ++ ++ pk_retval = 'PolicyKit communication issue' ++ ++ while True: ++ try: ++ # FIXME: async call or not? ++ pk_retval = pk_function(*pk_args) ++ ++ # if the PK call has more than one return values, we pop the ++ # first one as the error message ++ if type(pk_retval) == tuple: ++ retval = pk_retval[1:] ++ # if there's no error, then we can safely return what we ++ # got ++ if pk_retval[0] == '': ++ # if there's only one item left in the tuple, we don't ++ # want to return the tuple, but the item ++ if len(retval) == 1: ++ return retval[0] ++ else: ++ return retval ++ break ++ except dbus.exceptions.DBusException, e: ++ if not self._handle_exception_with_auth(e): ++ break ++ ++ # The PolicyKit call did not work (either a PK-error and we got a dbus ++ # exception that wasn't handled, or an error in the mechanism itself) ++ if pk_retval != '': ++ print >>sys.stderr, 'PolicyKit call to %s did not work: %s' % (pk_function_name, pk_retval) ++ return fallback_function(*args, **kwds) ++ ++ ++ def _args_to_tuple(self, types, *args): ++ retval = [ False ] ++ ++ if len(types) != len(args): ++ retval[0] = True ++ # We do this to have the right length for the returned value ++ retval.extend(types) ++ return tuple(types) ++ ++ exception = False ++ ++ for i in range(len(types)): ++ if type(args[i]) != types[i]: ++ if types[i] == str and type(args[i]) == unicode: ++ # we accept a mix between unicode and str ++ pass ++ elif types[i] == str and type(args[i]) == int: ++ # we accept a mix between int and str ++ retval.append(str(args[i])) ++ continue ++ elif types[i] == str and type(args[i]) == float: ++ # we accept a mix between float and str ++ retval.append(str(args[i])) ++ continue ++ elif types[i] == str and type(args[i]) == bool: ++ # we accept a mix between bool and str ++ retval.append(str(args[i])) ++ continue ++ elif types[i] == str and args[i] == None: ++ # None is an empty string for dbus ++ retval.append('') ++ continue ++ elif types[i] == list and type(args[i]) == tuple: ++ # we accept a mix between list and tuple ++ retval.append(list(args[i])) ++ continue ++ elif types[i] == list and args[i] == None: ++ # None is an empty list ++ retval.append([]) ++ continue ++ else: ++ exception = True ++ retval.append(args[i]) ++ ++ retval[0] = exception ++ ++ return tuple(retval) ++ ++ ++ def _kwds_to_vars(self, names, **kwds): ++ ret = [] ++ ++ for name in names: ++ if kwds.has_key(name): ++ ret.append(kwds[name]) ++ else: ++ ret.append('') ++ ++ return tuple(ret) ++ ++ ++# getPrinters ++# getDests ++# getClasses ++# getPPDs ++# getServerPPD ++# getDocument ++# getDevices ++# getJobs ++# getJobAttributes ++ ++ def cancelJob(self, *args, **kwds): ++ (use_pycups, jobid) = self._args_to_tuple([int], *args) ++ pk_args = (jobid, ) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'JobCancel', pk_args, ++ self._connection.cancelJob, ++ *args, **kwds) ++ ++ ++# cancelAllJobs ++# authenticateJob ++ def setJobHoldUntil(self, *args, **kwds): ++ (use_pycups, jobid, job_hold_until) = self._args_to_tuple([int, str], *args) ++ pk_args = (jobid, job_hold_until, ) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'JobSetHoldUntil', pk_args, ++ self._connection.setJobHoldUntil, ++ *args, **kwds) ++ ++ def restartJob(self, *args, **kwds): ++ (use_pycups, jobid) = self._args_to_tuple([int], *args) ++ pk_args = (jobid, ) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'JobRestart', pk_args, ++ self._connection.restartJob, ++ *args, **kwds) ++ ++ def getFile(self, *args, **kwds): ++ ''' Keeping this as an alternative for the code. ++ We don't use it because it's not possible to know if the call was a ++ PK-one (and so we push the content of a temporary filename to fd or ++ file) or a non-PK-one (in which case nothing should be done). ++ ++ filename = None ++ fd = None ++ file = None ++ if use_pycups: ++ if len(kwds) != 1: ++ use_pycups = True ++ elif kwds.has_key('filename'): ++ filename = kwds['filename'] ++ elif kwds.has_key('fd'): ++ fd = kwds['fd'] ++ elif kwds.has_key('file'): ++ file = kwds['file'] ++ else: ++ use_pycups = True ++ ++ if fd or file: ++ ''' ++ ++ file_object = None ++ fd = None ++ if len(args) == 2: ++ (use_pycups, resource, filename) = self._args_to_tuple([str, str], *args) ++ else: ++ (use_pycups, resource) = self._args_to_tuple([str], *args) ++ if kwds.has_key('filename'): ++ filename = kwds['filename'] ++ elif kwds.has_key('fd'): ++ fd = kwds['fd'] ++ elif kwds.has_key('file'): ++ file_object = kwds['file'] ++ else: ++ if not use_pycups: ++ raise TypeError() ++ else: ++ filename = None ++ ++ if (not use_pycups) and (fd != None or file_object != None): ++ (tmpfd, tmpfname) = tempfile.mkstemp() ++ os.close (tmpfd) ++ ++ pk_args = (resource, tmpfname) ++ self._call_with_pk_and_fallback(use_pycups, ++ 'FileGet', pk_args, ++ self._connection.getFile, ++ *args, **kwds) ++ ++ tmpfd = os.open (tmpfname, os.O_RDONLY) ++ tmpfile = os.fdopen (tmpfd, 'r') ++ tmpfile.seek (0) ++ ++ if fd != None: ++ os.lseek (fd, 0, os.SEEK_SET) ++ line = tmpfile.readline() ++ while line != '': ++ os.write (fd, line) ++ line = tmpfile.readline() ++ else: ++ file_object.seek (0) ++ line = tmpfile.readline() ++ while line != '': ++ file_object.write (line) ++ line = tmpfile.readline() ++ ++ tmpfile.close () ++ os.remove (tmpfname) ++ else: ++ pk_args = (resource, filename) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'FileGet', pk_args, ++ self._connection.getFile, ++ *args, **kwds) ++ ++ ++ def putFile(self, *args, **kwds): ++ if len(args) == 2: ++ (use_pycups, resource, filename) = self._args_to_tuple([str, str], *args) ++ else: ++ (use_pycups, resource) = self._args_to_tuple([str], *args) ++ if kwds.has_key('filename'): ++ filename = kwds['filename'] ++ elif kwds.has_key('fd'): ++ fd = kwds['fd'] ++ elif kwds.has_key('file'): ++ file_object = kwds['file'] ++ else: ++ if not use_pycups: ++ raise TypeError() ++ else: ++ filename = None ++ ++ if (not use_pycups) and (fd != None or file_object != None): ++ (tmpfd, tmpfname) = tempfile.mkstemp() ++ os.lseek (tmpfd, 0, os.SEEK_SET) ++ ++ if fd != None: ++ os.lseek (fd, 0, os.SEEK_SET) ++ buf = os.read (fd, 512) ++ while buf != '': ++ os.write (tmpfd, buf) ++ buf = os.read (fd, 512) ++ else: ++ file_object.seek (0) ++ line = file_object.readline () ++ while line != '': ++ os.write (tmpfd, line) ++ line = file_object.readline () ++ ++ os.close (tmpfd) ++ ++ pk_args = (resource, tmpfname) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'FilePut', pk_args, ++ self._connection.putFile, ++ *args, **kwds) ++ ++ os.remove (tmpfname) ++ else: ++ ++ pk_args = (resource, filename) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'FilePut', pk_args, ++ self._connection.putFile, ++ *args, **kwds) ++ ++ ++ def addPrinter(self, *args, **kwds): ++ (use_pycups, name) = self._args_to_tuple([str], *args) ++ (filename, ppdname, info, location, device, ppd) = self._kwds_to_vars(['filename', 'ppdname', 'info', 'location', 'device', 'ppd'], **kwds) ++ ++ need_unlink = False ++ if not ppdname and not filename and ppd: ++ (fd, filename) = tempfile.mkstemp () ++ ppd.writeFd(fd) ++ os.close(fd) ++ need_unlink = True ++ ++ if filename and not ppdname: ++ pk_args = (name, device, filename, info, location) ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterAddWithPpdFile', pk_args, ++ self._connection.addPrinter, ++ *args, **kwds) ++ if need_unlink: ++ os.unlink(filename) ++ else: ++ pk_args = (name, device, ppdname, info, location) ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterAdd', pk_args, ++ self._connection.addPrinter, ++ *args, **kwds) ++ ++ ++ def setPrinterDevice(self, *args, **kwds): ++ (use_pycups, name, device) = self._args_to_tuple([str, str], *args) ++ pk_args = (name, device) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetDevice', pk_args, ++ self._connection.setPrinterDevice, ++ *args, **kwds) ++ ++ ++ def setPrinterInfo(self, *args, **kwds): ++ (use_pycups, name, info) = self._args_to_tuple([str, str], *args) ++ pk_args = (name, info) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetInfo', pk_args, ++ self._connection.setPrinterInfo, ++ *args, **kwds) ++ ++ ++ def setPrinterLocation(self, *args, **kwds): ++ (use_pycups, name, location) = self._args_to_tuple([str, str], *args) ++ pk_args = (name, location) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetLocation', pk_args, ++ self._connection.setPrinterLocation, ++ *args, **kwds) ++ ++ ++ def setPrinterShared(self, *args, **kwds): ++ (use_pycups, name, shared) = self._args_to_tuple([str, bool], *args) ++ pk_args = (name, shared) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetShared', pk_args, ++ self._connection.setPrinterShared, ++ *args, **kwds) ++ ++ ++ def setPrinterJobSheets(self, *args, **kwds): ++ (use_pycups, name, start, end) = self._args_to_tuple([str, str, str], *args) ++ pk_args = (name, start, end) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetJobSheets', pk_args, ++ self._connection.setPrinterJobSheets, ++ *args, **kwds) ++ ++ ++ def setPrinterErrorPolicy(self, *args, **kwds): ++ (use_pycups, name, policy) = self._args_to_tuple([str, str], *args) ++ pk_args = (name, policy) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetErrorPolicy', pk_args, ++ self._connection.setPrinterErrorPolicy, ++ *args, **kwds) ++ ++ ++ def setPrinterOpPolicy(self, *args, **kwds): ++ (use_pycups, name, policy) = self._args_to_tuple([str, str], *args) ++ pk_args = (name, policy) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetOpPolicy', pk_args, ++ self._connection.setPrinterOpPolicy, ++ *args, **kwds) ++ ++ ++ def setPrinterUsersAllowed(self, *args, **kwds): ++ (use_pycups, name, users) = self._args_to_tuple([str, list], *args) ++ pk_args = (name, users) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetUsersAllowed', pk_args, ++ self._connection.setPrinterUsersAllowed, ++ *args, **kwds) ++ ++ ++ def setPrinterUsersDenied(self, *args, **kwds): ++ (use_pycups, name, users) = self._args_to_tuple([str, list], *args) ++ pk_args = (name, users) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetUsersDenied', pk_args, ++ self._connection.setPrinterUsersDenied, ++ *args, **kwds) ++ ++ def addPrinterOptionDefault(self, *args, **kwds): ++ # The values can be either a single string, or a list of strings, so ++ # we have to handle this ++ (use_pycups, name, option, value) = self._args_to_tuple([str, str, str], *args) ++ # success ++ if not use_pycups: ++ values = (value,) ++ # okay, maybe we directly have values ++ else: ++ (use_pycups, name, option, values) = self._args_to_tuple([str, str, list], *args) ++ pk_args = (name, option, values) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterAddOptionDefault', pk_args, ++ self._connection.addPrinterOptionDefault, ++ *args, **kwds) ++ ++ ++ def deletePrinterOptionDefault(self, *args, **kwds): ++ (use_pycups, name, option) = self._args_to_tuple([str, str], *args) ++ pk_args = (name, option) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterDeleteOptionDefault', pk_args, ++ self._connection.deletePrinterOptionDefault, ++ *args, **kwds) ++ ++ ++ def deletePrinter(self, *args, **kwds): ++ (use_pycups, name) = self._args_to_tuple([str], *args) ++ pk_args = (name,) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterDelete', pk_args, ++ self._connection.deletePrinter, ++ *args, **kwds) ++ ++# getPrinterAttributes ++ ++ def addPrinterToClass(self, *args, **kwds): ++ (use_pycups, printer, name) = self._args_to_tuple([str, str], *args) ++ pk_args = (name, printer) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'ClassAddPrinter', pk_args, ++ self._connection.addPrinterToClass, ++ *args, **kwds) ++ ++ ++ def deletePrinterFromClass(self, *args, **kwds): ++ (use_pycups, printer, name) = self._args_to_tuple([str, str], *args) ++ pk_args = (name, printer) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'ClassDeletePrinter', pk_args, ++ self._connection.deletePrinterFromClass, ++ *args, **kwds) ++ ++ ++ def deleteClass(self, *args, **kwds): ++ (use_pycups, name) = self._args_to_tuple([str], *args) ++ pk_args = (name,) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'ClassDelete', pk_args, ++ self._connection.deleteClass, ++ *args, **kwds) ++ ++# getDefault ++ ++ def setDefault(self, *args, **kwds): ++ (use_pycups, name) = self._args_to_tuple([str], *args) ++ pk_args = (name,) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetDefault', pk_args, ++ self._connection.setDefault, ++ *args, **kwds) ++ ++# getPPD ++ ++ def enablePrinter(self, *args, **kwds): ++ (use_pycups, name) = self._args_to_tuple([str], *args) ++ pk_args = (name, True) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetEnabled', pk_args, ++ self._connection.enablePrinter, ++ *args, **kwds) ++ ++ ++ def disablePrinter(self, *args, **kwds): ++ (use_pycups, name) = self._args_to_tuple([str], *args) ++ pk_args = (name, False) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetEnabled', pk_args, ++ self._connection.enablePrinter, ++ *args, **kwds) ++ ++ ++ def acceptJobs(self, *args, **kwds): ++ (use_pycups, name) = self._args_to_tuple([str], *args) ++ pk_args = (name, True, '') ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetAcceptJobs', pk_args, ++ self._connection.acceptJobs, ++ *args, **kwds) ++ ++ ++ def rejectJobs(self, *args, **kwds): ++ (use_pycups, name) = self._args_to_tuple([str], *args) ++ (reason,) = self._kwds_to_vars(['reason'], **kwds) ++ pk_args = (name, False, reason) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'PrinterSetAcceptJobs', pk_args, ++ self._connection.rejectJobs, ++ *args, **kwds) ++ ++ ++# printTestPage ++ ++ def adminGetServerSettings(self, *args, **kwds): ++ use_pycups = False ++ pk_args = () ++ ++ return self._call_with_pk_and_fallback(use_pycups, ++ 'ServerGetSettings', pk_args, ++ self._connection.adminGetServerSettings, ++ *args, **kwds) ++ ++ ++ def adminSetServerSettings(self, *args, **kwds): ++ (use_pycups, settings) = self._args_to_tuple([dict], *args) ++ pk_args = (settings,) ++ ++ self._call_with_pk_and_fallback(use_pycups, ++ 'ServerSetSettings', pk_args, ++ self._connection.adminSetServerSettings, ++ *args, **kwds) ++ ++ ++# getSubscriptions ++# createSubscription ++# getNotifications ++# cancelSubscription ++# renewSubscription ++# printFile ++# printFiles +diff -up system-config-printer-1.1.3/jobviewer.py.git-1.1.x system-config-printer-1.1.3/jobviewer.py +--- system-config-printer-1.1.3/jobviewer.py.git-1.1.x 2009-02-03 12:30:29.000000000 +0000 ++++ system-config-printer-1.1.3/jobviewer.py 2009-02-05 10:52:40.000000000 +0000 +@@ -1,5 +1,4 @@ + +- + ## Copyright (C) 2007, 2008, 2009 Tim Waugh + ## Copyright (C) 2007, 2008, 2009 Red Hat, Inc. + +@@ -841,7 +840,7 @@ class JobViewer (GtkGUI, monitor.Watcher + for reason, notification in self.state_reason_notifications.iteritems(): + if notification.get_data ('closed') != True: + open_notifications += 1 +- num_jobs = len (self.jobs.keys ()) ++ num_jobs = len (self.active_jobs) + + debugprint ("open notifications: %d" % open_notifications) + debugprint ("num_jobs: %d" % num_jobs) +@@ -1294,7 +1293,11 @@ class JobViewer (GtkGUI, monitor.Watcher + if not self.jobiters.has_key (jobid): + self.add_job (jobid, jobdata) + +- self.active_jobs.add (jobid) ++ if self.job_is_active (jobdata): ++ self.active_jobs.add (jobid) ++ elif jobid in self.active_jobs: ++ self.active_jobs.remove (jobid) ++ + self.update_status (have_jobs=True) + if self.trayicon: + if not self.job_is_active (jobdata): +@@ -1314,10 +1317,13 @@ class JobViewer (GtkGUI, monitor.Watcher + printer = uri + jobdata['job-printer-name'] = printer + ++ any_active = len (self.active_jobs) > 0 + if self.job_is_active (jobdata): + self.active_jobs.add (jobid) + elif jobid in self.active_jobs: + self.active_jobs.remove (jobid) ++ if (len (self.active_jobs) > 0) != any_active: ++ self.update_status () + + self.update_job (jobid, jobdata) + jobdata = self.jobs[jobid] +diff -up system-config-printer-1.1.3/Makefile.am.git-1.1.x system-config-printer-1.1.3/Makefile.am +--- system-config-printer-1.1.3/Makefile.am.git-1.1.x 2009-02-02 17:49:39.000000000 +0000 ++++ system-config-printer-1.1.3/Makefile.am 2009-02-05 10:52:40.000000000 +0000 +@@ -68,6 +68,7 @@ nobase_pkgdata_DATA= \ + AdvancedServerSettings.py \ + authconn.py \ + config.py \ ++ cupspk.py \ + debug.py \ + errordialogs.py \ + HIG.py \ +diff -up system-config-printer-1.1.3/po/fi.po.git-1.1.x system-config-printer-1.1.3/po/fi.po +--- system-config-printer-1.1.3/po/fi.po.git-1.1.x 2009-02-03 12:33:33.000000000 +0000 ++++ system-config-printer-1.1.3/po/fi.po 2009-02-05 10:52:40.000000000 +0000 +@@ -3,59 +3,58 @@ + # + # Mikko Ikola , 2004. + # Lauri Nurmi , 2004, 2007. +-# Ville-Pekka Vainio , 2006-2008. ++# Ville-Pekka Vainio , 2006-2009. + # Ilkka Tuohela, 2007. ++# Esko Arajärvi 2008. + msgid "" + msgstr "" + "Project-Id-Version: system-config-printer\n" + "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/bugzilla\n" +-"POT-Creation-Date: 2009-02-03 12:31+0000\n" +-"PO-Revision-Date: 2008-02-04 01:54+0200\n" ++"POT-Creation-Date: 2009-02-04 01:18+0000\n" ++"PO-Revision-Date: 2009-02-04 13:20+0200\n" + "Last-Translator: Ville-Pekka Vainio \n" + "Language-Team: Finnish \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" +-"X-Generator: KBabel 1.11.4\n" + "Plural-Forms: nplurals=2; plural=(n != 1);\n" + + #: ../AdvancedServerSettings.py:41 +-#, fuzzy + msgid "Advanced Server Settings" +-msgstr "Palvelimen perusasetukset" ++msgstr "Palvelimen lisäasetukset" + + #: ../AdvancedServerSettings.py:58 +-#, fuzzy + msgid "Job History" +-msgstr "Työn prioriteetti:" ++msgstr "Työhistoria" + + #: ../AdvancedServerSettings.py:69 + msgid "Do not preserve job history" +-msgstr "" ++msgstr "Älä tallenna työhistoriaa" + + #: ../AdvancedServerSettings.py:71 + msgid "Preserve job history but not files" +-msgstr "" ++msgstr "Tallenna työhistoria, mutta älä tiedostoja" + + #: ../AdvancedServerSettings.py:74 + msgid "Preserve job files (allow reprinting)" +-msgstr "" ++msgstr "Tallenna työtiedostot (sallii uudelleentulostamisen)" + + #: ../AdvancedServerSettings.py:82 +-#, fuzzy + msgid "Browse Servers" +-msgstr "Mene palvelimelle" ++msgstr "Selaa palvelimia" + ++# paremmin? + #: ../AdvancedServerSettings.py:93 + msgid "" + "Usually print servers broadcast their queues. Specify print servers below " + "to periodically ask for queues instead." + msgstr "" ++"Yleensä tulostuspalvelimet yleislähettävät jononsa. Määritä alle " ++"tulostuspalvelimet, joilta sen sijaan pyydetään jonot ajoittain." + + #: ../AdvancedServerSettings.py:214 +-#, fuzzy + msgid "Enter IP address" +-msgstr "Tulostin lisätty" ++msgstr "Anna IP-osoite:" + + #: ../authconn.py:33 ../glade/NewPrinterWindow.glade.h:107 + msgid "Username:" +@@ -66,28 +65,25 @@ msgid "Password:" + msgstr "Salasana:" + + #: ../authconn.py:35 +-#, fuzzy + msgid "Domain:" +-msgstr "Ylämarginaali:" ++msgstr "Verkkoalue:" + + #: ../authconn.py:44 +-#, fuzzy + msgid "Authentication" +-msgstr "Todennus vaaditaan" ++msgstr "Tunnistautuminen" + + #: ../authconn.py:83 + msgid "Remember password" +-msgstr "" ++msgstr "Muista salasana" + + #: ../authconn.py:213 +-#, fuzzy + msgid "Operation canceled" +-msgstr "Toimintakäytäntö:" ++msgstr "Toiminto peruutettu" + + #: ../authconn.py:234 +-#, fuzzy, python-format ++#, python-format + msgid "CUPS server error (%s)" +-msgstr "CUPS-palvelimen virhe" ++msgstr "CUPS-palvelimen virhe (%s)" + + #: ../authconn.py:236 ../errordialogs.py:57 + #: ../troubleshoot/PrintTestPage.py:400 +@@ -96,9 +92,8 @@ msgid "There was an error during the CUP + msgstr "CUPS-toiminnon ”%s” aikana tapahtui virhe." + + #: ../authconn.py:239 +-#, fuzzy + msgid "Retry" +-msgstr "Oletukset" ++msgstr "Yritä uudelleen" + + #: ../authconn.py:360 ../authconn.py:362 ../errordialogs.py:65 ../pysmb.py:75 + #: ../pysmb.py:77 +@@ -110,9 +105,9 @@ msgid "The password may be incorrect." + msgstr "Salasana voi olla virheellinen." + + #: ../authconn.py:381 +-#, fuzzy, python-format ++#, python-format + msgid "Authentication (%s)" +-msgstr "Todennus vaaditaan" ++msgstr "Tunnistautuminen (%s)" + + #: ../errordialogs.py:56 ../errordialogs.py:70 + msgid "CUPS server error" +@@ -131,7 +126,7 @@ msgstr "Virheellinen pyyntö" + + #: ../errordialogs.py:74 + msgid "Not found" +-msgstr "Ei löydy" ++msgstr "Ei löytynyt" + + #: ../errordialogs.py:76 + msgid "Request timeout" +@@ -139,7 +134,7 @@ msgstr "Pyynnön aikakatkaisu" + + #: ../errordialogs.py:78 + msgid "Upgrade required" +-msgstr "Tarvitaan pävitys" ++msgstr "Tarvitaan päivitys" + + #: ../errordialogs.py:80 + msgid "Server error" +@@ -150,9 +145,9 @@ msgid "Not connected" + msgstr "Ei kytketty" + + #: ../errordialogs.py:84 +-#, fuzzy, python-format ++#, python-format + msgid "status %s" +-msgstr "tila %d" ++msgstr "tila %s" + + #: ../errordialogs.py:86 + #, python-format +@@ -161,57 +156,54 @@ msgstr "Tapahtui HTTP-virhe: %s." + + #: ../GroupsPane.py:92 + msgid "_New Group" +-msgstr "" ++msgstr "_Uusi ryhmä" + + #: ../GroupsPane.py:95 + msgid "_New Group from Selection" +-msgstr "" ++msgstr "_Uusi ryhmä valinnasta" + +-# tarkista + #: ../GroupsPane.py:98 ../system-config-printer.py:387 +-#, fuzzy + msgid "_Rename" +-msgstr "_Vapauta" ++msgstr "_Nimeä uudelleen" + + #: ../GroupsPane.py:170 + msgid "The item could not be renamed." +-msgstr "" ++msgstr "Kohdetta ei voitu nimetä uudelleen." + + #: ../GroupsPane.py:171 + #, python-format + msgid "The name \"%s\" is already in use. Please use a different name." +-msgstr "" ++msgstr "Nimi ”%s” on jo käytössä. Valitse toinen nimi." + + #: ../GroupsPane.py:290 + #, python-format + msgid "Are you sure you want to permanently delete \"%s\"?" +-msgstr "" ++msgstr "Haluatko poistaa ryhmän ”%s” pysyvästi?" + + #: ../GroupsPane.py:296 + msgid "" + "This will not delete any printer queues from your computer. To delete queues " + "completely, you must delete them from the 'All Printers' group." + msgstr "" ++"Tämä ei poista tulostusjonoja tietokoneelta. Jos jonot halutaan poistaa, " ++"se on tehtävä ”Kaikki tulostimet” -ryhmän kautta." + + #: ../GroupsPane.py:318 + msgid "New Group" +-msgstr "" ++msgstr "Uusi ryhmä" + + #: ../GroupsPaneModel.py:47 +-#, fuzzy + msgid "All Printers" +-msgstr "Tulostin" ++msgstr "Kaikki tulostimet" + + #: ../GroupsPaneModel.py:60 + msgid "Favorites" +-msgstr "" ++msgstr "Suosikit" + +-# tarkista + #: ../jobviewer.py:168 + msgid "_Hold" + msgstr "_Pysäytä" + +-# tarkista + #: ../jobviewer.py:170 + msgid "_Release" + msgstr "_Vapauta" +@@ -221,22 +213,20 @@ msgid "Re_print" + msgstr "Tulosta _uudelleen" + + #: ../jobviewer.py:174 +-#, fuzzy + msgid "_Authenticate" +-msgstr "Todennus vaaditaan" ++msgstr "_Tunnistaudu" + + #: ../jobviewer.py:212 ../troubleshoot/PrintTestPage.py:82 + msgid "Job" + msgstr "Työ" + + #: ../jobviewer.py:213 +-#, fuzzy + msgid "User" +-msgstr "Käyttäjät" ++msgstr "Käyttäjä" + + #: ../jobviewer.py:214 ../troubleshoot/PrintTestPage.py:86 + msgid "Document" +-msgstr "Tulostustyö" ++msgstr "Asiakirja" + + #: ../jobviewer.py:215 ../my-default-printer.py:153 + #: ../system-config-printer.py:360 ../system-config-printer.py:1350 +@@ -259,20 +249,20 @@ msgstr "Tila" + #: ../jobviewer.py:252 + #, python-format + msgid "my jobs on %s" +-msgstr "" ++msgstr "omat työt tulostimella %s" + + #: ../jobviewer.py:254 + msgid "my jobs" +-msgstr "" ++msgstr "omat työt" + + #: ../jobviewer.py:259 + msgid "all jobs" +-msgstr "" ++msgstr "kaikki työt" + + #: ../jobviewer.py:260 +-#, fuzzy, python-format ++#, python-format + msgid "Document Print Status (%s)" +-msgstr "Tulostustyön tila" ++msgstr "Tulostustyön tila (%s)" + + #: ../jobviewer.py:390 ../jobviewer.py:455 ../jobviewer.py:456 + #: ../jobviewer.py:496 ../jobviewer.py:604 ../jobviewer.py:758 +@@ -298,9 +288,8 @@ msgid "%d minutes ago" + msgstr "%d minuuttia sitten" + + #: ../jobviewer.py:403 +-#, fuzzy + msgid "an hour ago" +-msgstr "1 tunti sitten" ++msgstr "tunti sitten" + + #: ../jobviewer.py:405 + #, python-format +@@ -309,63 +298,58 @@ msgstr "%d tuntia sitten" + + #: ../jobviewer.py:409 + msgid "yesterday" +-msgstr "" ++msgstr "eilen" + + #: ../jobviewer.py:411 +-#, fuzzy, python-format ++#, python-format + msgid "%d days ago" +-msgstr "%d tuntia sitten" ++msgstr "%d päivää sitten" + + #: ../jobviewer.py:415 + msgid "last week" +-msgstr "" ++msgstr "viime viikolla" + + #: ../jobviewer.py:417 +-#, fuzzy, python-format ++#, python-format + msgid "%d weeks ago" +-msgstr "%d minuuttia sitten" ++msgstr "%d viikkoa sitten" + + #: ../jobviewer.py:548 +-#, fuzzy + msgid "Held for authentication" +-msgstr "Todennus vaaditaan" ++msgstr "Odottaa tunnistautumista" + +-# tarkista + #: ../jobviewer.py:550 ../troubleshoot/PrintTestPage.py:42 + msgid "Held" + msgstr "Pysäytetty" + + #: ../jobviewer.py:577 +-#, fuzzy, python-format ++#, python-format + msgid "Held until %s" +-msgstr "Pidä pysäytettynä kunnes:" ++msgstr "Pidetään pysäytettynä %s asti" + + #: ../jobviewer.py:581 +-#, fuzzy + msgid "Held until day-time" +-msgstr "Pidä pysäytettynä kunnes:" ++msgstr "Pidetään pysäytettynä päiväaikaan asti" + + #: ../jobviewer.py:583 +-#, fuzzy + msgid "Held until evening" +-msgstr "Pidä pysäytettynä kunnes:" ++msgstr "Pidetään pysäytettynä iltaan asti" + + #: ../jobviewer.py:585 + msgid "Held until night-time" +-msgstr "" ++msgstr "Pidetään pysäytettynä yöhön asti" + + #: ../jobviewer.py:587 + msgid "Held until second shift" +-msgstr "" ++msgstr "Pidetään pysäytettynä toiseen vuoroon asti" + + #: ../jobviewer.py:589 + msgid "Held until third shift" +-msgstr "" ++msgstr "Pidetään pysäytettynä kolmanteen vuoroon asti" + + #: ../jobviewer.py:591 +-#, fuzzy + msgid "Held until weekend" +-msgstr "Pidä pysäytettynä kunnes:" ++msgstr "Pidetään pysäytettynä viikonloppuun asti" + + #: ../jobviewer.py:594 ../troubleshoot/PrintTestPage.py:41 + msgid "Pending" +@@ -394,55 +378,50 @@ msgid "Completed" + msgstr "Valmiina" + + #: ../jobviewer.py:673 ../jobviewer.py:792 +-#, fuzzy + msgid "authenticating job" +-msgstr "Todennus vaaditaan" ++msgstr "tunnistautuminen työtä varten" + + #: ../jobviewer.py:688 +-#, fuzzy + msgid "Authentication Required" +-msgstr "Todennus vaaditaan" ++msgstr "Tunnistautuminen vaaditaan" + ++# työn eteneminen vaatii tunnistautumisen? + #: ../jobviewer.py:689 +-#, fuzzy + msgid "Job requires authentication to proceed." +-msgstr "Todennus vaaditaan" ++msgstr "Työ vaatii tunnistautumisen jatkuakseen." + + #: ../jobviewer.py:697 +-#, fuzzy + msgid "Authenticate" +-msgstr "Todennus vaaditaan" ++msgstr "Tunnistaudu" + + #: ../jobviewer.py:756 + #, python-format + msgid "Authentication required for printing document `%s' (job %d)" +-msgstr "" ++msgstr "Asiakirjan ”%s” (työ %d) tulostaminen vaatii tunnistautumisen" + + #: ../jobviewer.py:932 +-#, fuzzy + msgid "Cancel Job" +-msgstr "Peruutettu" ++msgstr "Peru työ" + + #: ../jobviewer.py:946 + msgid "Do you really want to cancel this job?" +-msgstr "" ++msgstr "Haluatko perua tämän työn?" + + #: ../jobviewer.py:974 +-#, fuzzy + msgid "canceling job" +-msgstr "Hyväksyy uusia töitä" ++msgstr "perutaan työ" + + #: ../jobviewer.py:998 + msgid "holding job" +-msgstr "" ++msgstr "pidetään työ" + + #: ../jobviewer.py:1022 + msgid "releasing job" +-msgstr "" ++msgstr "vapautetaan työ" + + #: ../jobviewer.py:1132 + msgid "No documents queued" +-msgstr "Tulostusjonossa ei ole töitä" ++msgstr "Jonossa ei ole tulostustöitä" + + #: ../jobviewer.py:1134 + msgid "1 document queued" +@@ -454,44 +433,43 @@ msgid "%d documents queued" + msgstr "%d tulostustyötä jonossa" + + #: ../jobviewer.py:1234 +-#, fuzzy, python-format ++#, python-format + msgid "Job %d completed" +-msgstr "Valmiina" ++msgstr "Työ %d on valmis" + + #: ../jobviewer.py:1235 + #, python-format + msgid "Document `%s' has finished printing on `%s'." +-msgstr "" ++msgstr "Tulostustyö ”%s” on valmistunut tulostimella ”%s”." + + #: ../jobviewer.py:1383 +-#, fuzzy, python-format ++#, python-format + msgid "There was a problem sending document `%s' (job %d) to the printer." +-msgstr "CUPS-palvelimeen yhdistämisessä oli ongelma." ++msgstr "Asiakirjan ”%s” (työ %d) lähettämisessä tulostimelle ilmeni ongelma." + + #: ../jobviewer.py:1386 + #, python-format + msgid "There was a problem processing document `%s' (job %d)." +-msgstr "" ++msgstr "Asiakirjan ”%s” (työ %d) käsittelyssä ilmeni ongelma." + + #. Give up and use the provided message untranslated. + #: ../jobviewer.py:1392 + #, python-format + msgid "There was a problem printing document `%s' (job %d): `%s'." +-msgstr "" ++msgstr "Asiakirjan ”%s” (työ %d) tulostuksessa ilmeni ongelma: ”%s”." + + #: ../jobviewer.py:1399 ../jobviewer.py:1415 +-#, fuzzy + msgid "Print Error" +-msgstr "Tulostinvirhe" ++msgstr "Tulostusvirhe" + + #: ../jobviewer.py:1400 + msgid "_Diagnose" +-msgstr "" ++msgstr "_Selvitä" + + #: ../jobviewer.py:1421 + #, python-format + msgid "The printer called `%s' has been disabled." +-msgstr "" ++msgstr "Tulostin ”%s” on poistettu käytöstä." + + #: ../my-default-printer.py:137 ../my-default-printer.desktop.in.h:1 + msgid "Default Printer" +@@ -516,163 +494,154 @@ msgid "Conflicts with:" + msgstr "Ristiriidassa:" + + #: ../ppdippstr.py:37 +-#, fuzzy + msgid "Abort job" +-msgstr "Keskeytetty" ++msgstr "Keskeytä työ" + + #: ../ppdippstr.py:38 + msgid "Retry job" +-msgstr "" ++msgstr "Yritä työtä uudelleen" + + #: ../ppdippstr.py:39 +-#, fuzzy + msgid "Stop printer" +-msgstr "Kopioi tulostin" ++msgstr "Pysäytä tulostin" + + #: ../ppdippstr.py:44 +-#, fuzzy + msgid "Default behavior" +-msgstr "Oletustulostin" ++msgstr "Oletustoiminta" + + #: ../ppdippstr.py:45 +-#, fuzzy + msgid "Authenticated" +-msgstr "Todennus vaaditaan" ++msgstr "Tunnistauduttu" + + #: ../ppdippstr.py:50 ../system-config-printer.py:5839 + msgid "None" + msgstr "Ei yhtään" + + #: ../ppdippstr.py:51 +-#, fuzzy + msgid "Classified" +-msgstr "Uusi luokka" ++msgstr "Salainen" + + #: ../ppdippstr.py:52 + msgid "Confidential" +-msgstr "" ++msgstr "Luottamuksellinen" + + #: ../ppdippstr.py:53 +-#, fuzzy + msgid "Secret" +-msgstr "_Palvelin" ++msgstr "Salainen" + + #: ../ppdippstr.py:54 + msgid "Standard" +-msgstr "" ++msgstr "Tavallinen" + + #: ../ppdippstr.py:55 + msgid "Top secret" +-msgstr "" ++msgstr "Erittäin salainen" + + #: ../ppdippstr.py:56 + msgid "Unclassified" +-msgstr "" ++msgstr "Julkinen" + + #: ../ppdippstr.py:65 +-#, fuzzy + msgid "General" +-msgstr "Sarja" ++msgstr "Yleinen" + + #. HPIJS options + #: ../ppdippstr.py:68 +-#, fuzzy + msgid "Printout mode" +-msgstr "Tulostimen malli:" ++msgstr "Tulostustila" + + #: ../ppdippstr.py:69 + msgid "Draft (auto-detect-paper type)" +-msgstr "" ++msgstr "Vedos (automaattisesti tunnistettu paperin tyyppi)" + + #: ../ppdippstr.py:71 + msgid "Draft grayscale (auto-detect-paper type)" +-msgstr "" ++msgstr "Mustavalkovedos (automaattisesti tunnistettu paperin tyyppi)" + + #: ../ppdippstr.py:72 + msgid "Normal (auto-detect-paper type)" +-msgstr "" ++msgstr "Tavallinen (automaattisesti tunnistettu paperin tyyppi)" + + #: ../ppdippstr.py:74 + msgid "Normal grayscale (auto-detect-paper type)" +-msgstr "" ++msgstr "Tavallinen mustavalkotuloste (automaattisesti tunnistettu paperin tyyppi)" + + #: ../ppdippstr.py:76 + msgid "High quality (auto-detect-paper type)" +-msgstr "" ++msgstr "Korkealaatuinen (automaattisesti tunnistettu paperin tyyppi)" + + #: ../ppdippstr.py:78 + msgid "High quality grayscale (auto-detect-paper type)" +-msgstr "" ++msgstr "Korkealaatuinen mustavalkotuloste (automaattisesti tunnistettu paperin tyyppi)" + + #: ../ppdippstr.py:79 + msgid "Photo (on photo paper)" +-msgstr "" ++msgstr "Valokuva (valokuvapaperille)" + + #: ../ppdippstr.py:81 + msgid "Best quality (color on photo paper)" +-msgstr "" ++msgstr "Paras laatu (värituloste valokuvapaperille)" + + #: ../ppdippstr.py:83 + msgid "Normal quality (color on photo paper)" +-msgstr "" ++msgstr "Tavallinen laatu (värituloste valokuvapaperille)" + ++# TODO: paremmin? + #: ../ppdippstr.py:85 + msgid "Media source" +-msgstr "" ++msgstr "Medialähde" + + #: ../ppdippstr.py:86 +-#, fuzzy + msgid "Printer default" +-msgstr "Tulostimen malli:" ++msgstr "Tulostimen oletus" + + #: ../ppdippstr.py:87 + msgid "Photo tray" +-msgstr "" ++msgstr "Valokuvateline" + + #: ../ppdippstr.py:88 + msgid "Upper tray" +-msgstr "" ++msgstr "Ylempi teline" + + #: ../ppdippstr.py:89 + msgid "Lower tray" +-msgstr "" ++msgstr "Alempi teline" + + #: ../ppdippstr.py:90 + msgid "CD or DVD tray" +-msgstr "" ++msgstr "CD- tai DVD-teline" + + #: ../ppdippstr.py:91 + msgid "Envelope feeder" +-msgstr "" ++msgstr "Kirjekuorien syötin" + + #: ../ppdippstr.py:92 + msgid "Large capacity tray" +-msgstr "" ++msgstr "Suuren kapasiteetin teline" + + #: ../ppdippstr.py:93 + msgid "Manual feeder" +-msgstr "" ++msgstr "Manuaalinen syötin" + + #: ../ppdippstr.py:94 + msgid "Multi-purpose tray" +-msgstr "" ++msgstr "Yleisteline" + + #: ../ppdippstr.py:96 +-#, fuzzy + msgid "Page size" +-msgstr "Sivua arkille:" ++msgstr "Sivun koko" + + #: ../ppdippstr.py:97 + msgid "Custom" +-msgstr "" ++msgstr "Mukautettu" + + #: ../ppdippstr.py:98 + msgid "Photo or 4x6 inch index card" +-msgstr "" ++msgstr "Valokuva tai 4x6 tuuman kortistokortti" + + #: ../ppdippstr.py:99 + msgid "Photo or 5x7 inch index card" +-msgstr "" ++msgstr "Valokuva tai 5x7 tuuman kortistokortti" + + #: ../ppdippstr.py:100 + msgid "Photo with tear-off tab" +@@ -680,11 +649,11 @@ msgstr "" + + #: ../ppdippstr.py:101 + msgid "3x5 inch index card" +-msgstr "" ++msgstr "3x5 tuuman kortistokortti" + + #: ../ppdippstr.py:102 + msgid "5x8 inch index card" +-msgstr "" ++msgstr "5x8 tuuman kortistokortti" + + #: ../ppdippstr.py:103 + msgid "A6 with tear-off tab" +@@ -692,75 +661,76 @@ msgstr "" + + #: ../ppdippstr.py:104 + msgid "CD or DVD 80mm" +-msgstr "" ++msgstr "80 mm CD tai DVD" + + #: ../ppdippstr.py:105 + msgid "CD or DVD 120mm" +-msgstr "" ++msgstr "120 mm CD tai DVD" + + #: ../ppdippstr.py:107 + msgid "Double-sided printing" +-msgstr "" ++msgstr "Kaksipuolinen tulostus" + + #: ../ppdippstr.py:108 + msgid "Long edge (standard)" +-msgstr "" ++msgstr "Pitkä reuna (tavallinen)" + + #: ../ppdippstr.py:109 + msgid "Short edge (flip)" +-msgstr "" ++msgstr "Lyhyt reuna (käännettävä)" + + #: ../ppdippstr.py:110 + msgid "Off" +-msgstr "" ++msgstr "Pois" + + #: ../ppdippstr.py:113 + msgid "Resolution, quality, ink type, media type" +-msgstr "" ++msgstr "Resoluutio, laatu, musteen tyyppi, median tyyppi" + + #: ../ppdippstr.py:114 + msgid "Controlled by 'Printout mode'" +-msgstr "" ++msgstr "”Tulostustilan” hallitsema" + + #: ../ppdippstr.py:116 + msgid "300 dpi, color, black + color cartridge" +-msgstr "" ++msgstr "300 dpi, väri, musta + väri -kasetti" + + #: ../ppdippstr.py:118 + msgid "300 dpi, draft, color, black + color cartridge" +-msgstr "" ++msgstr "300 dpi, vedos, väri, musta + väri -kasetti" + + #: ../ppdippstr.py:120 + msgid "300 dpi, draft, grayscale, black + color cartridge" +-msgstr "" ++msgstr "300 dpi, vedos, mustavalkoinen, musta + väri -kasetti" + + #: ../ppdippstr.py:122 + msgid "300 dpi, grayscale, black + color cartridge" +-msgstr "" ++msgstr "300 dpi, mustavalkoinen, musta + väri -kasetti" + + #: ../ppdippstr.py:124 + msgid "600 dpi, color, black + color cartridge" +-msgstr "" ++msgstr "600 dpi, väri, musta + väri -kasetti" + + #: ../ppdippstr.py:126 + msgid "600 dpi, grayscale, black + color cartridge" +-msgstr "" ++msgstr "600 dpi, mustavalkoinen, musta + väri -kasetti" + + #: ../ppdippstr.py:128 + msgid "600 dpi, photo, black + color cartridge, photo paper" +-msgstr "" ++msgstr "600 dpi, valokuva, musta + väri -kasetti, valokuvapaperi" + + #: ../ppdippstr.py:130 + msgid "600 dpi, color, black + color cartridge, photo paper, normal" +-msgstr "" ++msgstr "600 dpi, väri, musta + väri -kasetti, valokuvapaperi, tavallinen" + + #: ../ppdippstr.py:132 + msgid "1200 dpi, photo, black + color cartridge, photo paper" +-msgstr "" ++msgstr "1200 dpi, valokuva, musta + väri -kasetti, valokuvapaperi" + + #: ../system-config-printer.py:121 + msgid "To do this, select System->Administration->Firewall from the main menu." + msgstr "" ++"Se voidaan tehdä valitsemalla päävalikosta Järjestelmä→Ylläpito→Palomuuri." + + #: ../system-config-printer.py:179 + msgid "Idle" +@@ -771,46 +741,40 @@ msgid "Busy" + msgstr "Varattu" + + #: ../system-config-printer.py:366 ../system-config-printer.py:1356 +-#, fuzzy + msgid "Class" +-msgstr "Uusi luokka" ++msgstr "Luokka" + + #: ../system-config-printer.py:393 +-#, fuzzy + msgid "Set As De_fault" +-msgstr "_Aseta oletustulostimeksi" ++msgstr "_Aseta oletukseksi" + + #: ../system-config-printer.py:397 +-#, fuzzy + msgid "_Create class" +-msgstr "Etäluokat" ++msgstr "_Luo luokka" + + #: ../system-config-printer.py:399 +-#, fuzzy + msgid "View Print _Queue" +-msgstr "Uusi tulostin" ++msgstr "_Näytä tulostusjono" + + #: ../system-config-printer.py:401 + msgid "_Add to Group" +-msgstr "" ++msgstr "_Lisää ryhmään" + + #: ../system-config-printer.py:403 + msgid "Save Results as _Group" +-msgstr "" ++msgstr "Tallenna tulokset _ryhmänä" + + #: ../system-config-printer.py:405 + msgid "Save Filter as _Search Group" +-msgstr "" ++msgstr "Tallenna suodin _hakuryhmänä" + + #: ../system-config-printer.py:409 +-#, fuzzy + msgid "E_nabled" +-msgstr "Käytössä" ++msgstr "_Käytössä" + + #: ../system-config-printer.py:411 +-#, fuzzy + msgid "_Shared" +-msgstr "Jaettu" ++msgstr "_Jaettu" + + #: ../system-config-printer.py:415 ../troubleshoot/ChooseNetworkPrinter.py:35 + #: ../troubleshoot/ChoosePrinter.py:36 ../troubleshoot/DeviceListed.py:36 +@@ -818,13 +782,12 @@ msgid "Name" + msgstr "Nimi" + + #: ../system-config-printer.py:416 +-#, fuzzy + msgid "Description" +-msgstr "Kuvaus:" ++msgstr "Kuvaus" + + #: ../system-config-printer.py:418 + msgid "Manufacturer / Model" +-msgstr "" ++msgstr "Valmistaja / Malli" + + #. Printer state reasons list + #: ../system-config-printer.py:493 +@@ -832,9 +795,8 @@ msgid "Message" + msgstr "Viesti" + + #: ../system-config-printer.py:528 +-#, fuzzy + msgid "Problems?" +-msgstr "Tunnista" ++msgstr "Ongelmia?" + + #: ../system-config-printer.py:631 ../system-config-printer.py:633 + msgid "Members of this class" +@@ -849,9 +811,8 @@ msgid "Devices" + msgstr "Laitteet" + + #: ../system-config-printer.py:636 +-#, fuzzy + msgid "Connections" +-msgstr "Yhdistää" ++msgstr "Yhteydet" + + #: ../system-config-printer.py:637 + msgid "Makes" +@@ -878,9 +839,9 @@ msgid "Automatic rotation" + msgstr "Automaattinen kääntö" + + #: ../system-config-printer.py:972 +-#, fuzzy, python-format ++#, python-format + msgid "Printer Properties - `%s' on %s" +-msgstr "Tulostinraportti" ++msgstr "Tulostimen ominaisuudet – ”%s” koneella ”%s”" + + #. The Conflict button was pressed. + #: ../system-config-printer.py:979 +@@ -896,7 +857,7 @@ msgstr "" + #: ../system-config-printer.py:1197 + #, python-format + msgid "Printer configuration - %s" +-msgstr "Tulostinasetukset - %s" ++msgstr "Tulostimen asetukset – %s" + + #: ../system-config-printer.py:1200 + #, python-format +@@ -906,40 +867,37 @@ msgstr "Yhdistetty kohteeseen %s" + #. Update our copy of the printer's settings. + #: ../system-config-printer.py:1240 ../system-config-printer.py:2023 + msgid "obtaining queue details" +-msgstr "" ++msgstr "hae jonon tiedot" + + #: ../system-config-printer.py:1278 + msgid "Remove from Group" +-msgstr "" ++msgstr "Poista ryhmästä" + + #: ../system-config-printer.py:1344 +-#, fuzzy + msgid "Network printer (discovered)" +-msgstr "Uusi tulostin" ++msgstr "Verkkotulostin (löydetty)" + + #: ../system-config-printer.py:1347 + msgid "Network class (discovered)" +-msgstr "" ++msgstr "Verkkoluokka (löydetty)" + + #: ../system-config-printer.py:1353 ../system-config-printer.py:4018 + msgid "Fax" +-msgstr "" ++msgstr "Faksi" + + #: ../system-config-printer.py:1359 ../system-config-printer.py:1365 + #: ../troubleshoot/LocalOrRemote.py:30 +-#, fuzzy + msgid "Network printer" +-msgstr "Uusi tulostin" ++msgstr "Verkkotulostin" + + #: ../system-config-printer.py:1362 +-#, fuzzy + msgid "Network print share" +-msgstr "Uusi tulostin" ++msgstr "Verkkotulostusjako" + + #: ../system-config-printer.py:1491 ../glade/ConnectingDialog.glade.h:2 + #, no-c-format, python-format + msgid "Opening connection to %s" +-msgstr "" ++msgstr "Avataan yhteys palvelimelle %s" + + #: ../system-config-printer.py:1870 + msgid "Installable Options" +@@ -953,14 +911,14 @@ msgstr "Tulostimen asetukset" + #: ../system-config-printer.py:1905 + #, python-format + msgid "modifying class %s" +-msgstr "" ++msgstr "muoktataan luokkaa %s" + + #: ../system-config-printer.py:1907 ../system-config-printer.py:3001 + #: ../system-config-printer.py:3026 ../system-config-printer.py:6131 + #: ../system-config-printer.py:6143 ../system-config-printer.py:6161 +-#, fuzzy, python-format ++#, python-format + msgid "modifying printer %s" +-msgstr "Lisätään tulostinta" ++msgstr "muokataan tulostinta %s" + + #: ../system-config-printer.py:1922 + msgid "This will delete this class!" +@@ -975,42 +933,36 @@ msgstr "Jatketaanko silti?" + #. the server is publishing shared printers. Fetch the settings + #. now so that we can update the "not published" label if necessary. + #: ../system-config-printer.py:2011 ../system-config-printer.py:3184 +-#, fuzzy + msgid "fetching server settings" +-msgstr "Palvelimen perusasetukset" ++msgstr "haetaan palvelinasetuksia" + + #: ../system-config-printer.py:2081 +-#, fuzzy + msgid "Set Default Printer" +-msgstr "Oletustulostin" ++msgstr "Aseta oletustulostin" + + #: ../system-config-printer.py:2083 + msgid "Do you want to set this as the system-wide default printer?" +-msgstr "" ++msgstr "Haluatko asettaa tämän järjestelmänlaajuisesti oletustulostimeksi?" + + #: ../system-config-printer.py:2085 +-#, fuzzy + msgid "Set as the _system-wide default printer" +-msgstr "Tämä on oletustulostin." ++msgstr "Aseta _järjestelmänlaajuisesti oletustulostimeksi" + + #: ../system-config-printer.py:2087 + msgid "_Clear my personal default setting" +-msgstr "" ++msgstr "_Poista henkilökohtainen oletusasetukseni" + + #: ../system-config-printer.py:2088 +-#, fuzzy + msgid "Set as my _personal default printer" +-msgstr "Valitse oletustulostin" ++msgstr "Aseta _henkilökohtaiseksi oletustulostimekseni" + + #: ../system-config-printer.py:2093 +-#, fuzzy + msgid "setting default printer" +-msgstr "Valitse oletustulostin" ++msgstr "asetetaan oletustulostinta" + + #: ../system-config-printer.py:2150 +-#, fuzzy + msgid "printing test page" +-msgstr "Tulosta testisivu" ++msgstr "tulostetaan testisivu" + + #: ../system-config-printer.py:2163 ../system-config-printer.py:2198 + #: ../system-config-printer.py:5130 +@@ -1036,7 +988,7 @@ msgstr "Testisivu lähetetty työnä %d" + + #: ../system-config-printer.py:2184 + msgid "sending maintenance command" +-msgstr "" ++msgstr "lähetetään huoltokomentoa" + + #: ../system-config-printer.py:2192 + #, python-format +@@ -1052,7 +1004,7 @@ msgstr "Virhe" + + #: ../system-config-printer.py:2267 + msgid "There was a problem connecting to the CUPS server." +-msgstr "CUPS-palvelimeen yhdistämisessä oli ongelma." ++msgstr "CUPS-palvelimeen yhdistämisessä ilmeni ongelma." + + #: ../system-config-printer.py:2363 + #, python-format +@@ -1061,65 +1013,60 @@ msgstr "Asetuksella ”%s” on arvo ” + + #: ../system-config-printer.py:2447 + msgid "Marker levels are not reported for this printer." +-msgstr "" ++msgstr "Tämä tulostin ei ilmoita väriaineen määrää." + +-# tarkista + #: ../system-config-printer.py:2745 +-#, fuzzy + msgid "Cannot Rename" +-msgstr "_Vapauta" ++msgstr "Ei voida nimetä uudelleen" + + #: ../system-config-printer.py:2746 +-#, fuzzy + msgid "There are queued jobs." +-msgstr "Yhtään jonoa ei ole saatavilla." ++msgstr "Töitä on jonossa." + + #: ../system-config-printer.py:2804 +-#, fuzzy + msgid "renaming printer" +-msgstr "Lisätään tulostinta" ++msgstr "nimetään tulostinta uudelleen" + + #. for classes make sure all members + #. will get added + #: ../system-config-printer.py:2889 +-#, fuzzy + msgid "copying printer" +-msgstr "Lisätään tulostinta" ++msgstr "kopioidaan tulostin" + + #: ../system-config-printer.py:2953 +-#, fuzzy, python-format ++#, python-format + msgid "Really delete class `%s'?" +-msgstr "Haluatko varmasti poistaa luokan %s?" ++msgstr "Haluatko varmasti poistaa luokan ”%s”?" + + #: ../system-config-printer.py:2955 +-#, fuzzy, python-format ++#, python-format + msgid "Really delete printer `%s'?" +-msgstr "Haluatko varmasti poistaa tulostimen %s?" ++msgstr "Haluatko varmasti poistaa tulostimen ”%s”?" + + #: ../system-config-printer.py:2957 +-#, fuzzy + msgid "Really delete selected destinations?" +-msgstr "Haluatko varmasti poistaa tulostimen %s?" ++msgstr "Haluatko varmasti poistaa valitut kohteet?" + + #: ../system-config-printer.py:2978 +-#, fuzzy, python-format ++#, python-format + msgid "deleting printer %s" +-msgstr "Lisätään tulostinta" ++msgstr "poistetaan tulostin %s" + + #: ../system-config-printer.py:3051 + msgid "Publish Shared Printers" +-msgstr "" ++msgstr "Julkaise jaetut tulostimet" + + #: ../system-config-printer.py:3052 + msgid "" + "Shared printers are not available to other people unless the 'Publish shared " + "printers' option is enabled in the server settings." + msgstr "" ++"Jaetut tulostimet eivät ole muiden käytettävissä ellei ”Julkaise jaetut " ++"tulostimet” -valinta ole käytössä palvelinasetuksissa." + + #: ../system-config-printer.py:3245 +-#, fuzzy + msgid "modifying server settings" +-msgstr "Palvelimen perusasetukset" ++msgstr "muokataan palvelinasetuksia" + + #. We have just enabled print queue sharing. + #. Ideally, this is the time we would check the firewall +@@ -1129,17 +1076,19 @@ msgstr "Palvelimen perusasetukset + #. that now might be a good time to review the firewall settings. + #: ../system-config-printer.py:3270 + msgid "Review Firewall" +-msgstr "" ++msgstr "Tarkista palomuuri" + + #: ../system-config-printer.py:3271 + msgid "" + "You may need to adjust the firewall to allow network printing to this " + "computer." + msgstr "" ++"Palomuurin asetuksia on ehkä muutettava, jotta tulostaminen verkosta tälle " ++"koneelle olisi mahdollista." + + #: ../system-config-printer.py:3588 + msgid "Browsing not available (pysmbc not installed)" +-msgstr "" ++msgstr "Selaaminen ei ole mahdollista (pysmbc:tä ei ole asennettu)" + + #. SMB list columns + #: ../system-config-printer.py:3594 +@@ -1195,9 +1144,8 @@ msgid "Searching" + msgstr "Etsitään" + + #: ../system-config-printer.py:3861 +-#, fuzzy + msgid "Searching for downloadable drivers" +-msgstr "Etsitään ajureita" ++msgstr "Etsitään verkosta ladattavia ajureita" + + #: ../system-config-printer.py:3927 ../system-config-printer.py:4230 + msgid "Searching for drivers" +@@ -1208,15 +1156,16 @@ msgid "" + "This printer supports both printing and sending faxes. Which functionality " + "should be used for this queue?" + msgstr "" ++"Tämä tulostin tukee sekä tulostamista että faksien lähettämistä. Kumpaa " ++"toiminnallisuutta tässä jonossa tulisi käyttää?" + + #: ../system-config-printer.py:4412 + msgid "Searching for printers" + msgstr "Etsitään tulostimia" + + #: ../system-config-printer.py:4421 +-#, fuzzy + msgid "fetching device list" +-msgstr "Palvelimen perusasetukset" ++msgstr "haetaan laiteluetteloa" + + #: ../system-config-printer.py:4558 + msgid " (Current)" +@@ -1224,7 +1173,7 @@ msgstr " (Nykyinen)" + + #: ../system-config-printer.py:4589 + msgid "HP Printer (HPLIP)" +-msgstr "" ++msgstr "HP-tulostin (HPLIP)" + + #: ../system-config-printer.py:4624 + msgid "Other" +@@ -1234,33 +1183,32 @@ msgstr "Muu" + #. PhysicalDevice obj + #. Separator? + #: ../system-config-printer.py:4645 +-#, fuzzy + msgid "Network Printer" +-msgstr "Uusi tulostin" ++msgstr "Verkkotulostin" + + #: ../system-config-printer.py:4649 +-#, fuzzy + msgid "Find Network Printer" +-msgstr "Uusi tulostin" ++msgstr "Etsi verkkotulostin" + + #: ../system-config-printer.py:4691 ../system-config-printer.py:5088 + msgid "Scanning..." + msgstr "Haetaan..." + + #: ../system-config-printer.py:4746 ../system-config-printer.py:5406 +-#, fuzzy + msgid "No Print Shares" +-msgstr "Uusi tulostin" ++msgstr "Ei tulostinjakoja" + + #: ../system-config-printer.py:4747 + msgid "" + "There were no print shares found. Please check that the Samba service is " + "marked as trusted in your firewall configuration." + msgstr "" ++"Tulostinjakoja ei löytynyt. Tarkista että Samba-palvelu on merkitty " ++"luotetuksi palomuuriasetuksissa." + + #: ../system-config-printer.py:5008 ../system-config-printer.py:5069 + msgid "Print Share Verified" +-msgstr "" ++msgstr "Tulostinjako varmennettu" + + #: ../system-config-printer.py:5009 ../system-config-printer.py:5070 + msgid "This print share is accessible." +@@ -1271,24 +1219,25 @@ msgid "This print share is not accessibl + msgstr "Tämä tulostinjako ei ole käytettävissä." + + #: ../system-config-printer.py:5017 +-#, fuzzy + msgid "Print Share Inaccessible" +-msgstr "Tämä tulostinjako on käytettävissä." ++msgstr "Tämä tulostinjako ei ole käytettävissä" + + #: ../system-config-printer.py:5073 + msgid "Inaccessible" + msgstr "Ei käytettävissä" + + #: ../system-config-printer.py:5131 +-#, fuzzy, python-format ++#, python-format + msgid "It is not possible to obtain a list of queues from `%s'." +-msgstr "Tältä koneelta ei voi saada luetteloa jonoista." ++msgstr "Koneelta ”%s” ei voi saada luetteloa jonoista." + + #: ../system-config-printer.py:5133 + msgid "" + "Obtaining a list of queues is a CUPS extension to IPP. Network printers do " + "not support it." + msgstr "" ++"Jonoluettelon saaminen on IPP:n CUPS-laajennos. Verkkotulostimet eivät tue " ++"sitä." + + #: ../system-config-printer.py:5136 + msgid "No queues" +@@ -1325,21 +1274,19 @@ msgstr "Hardware Abstraction Layerin (HA + + #: ../system-config-printer.py:5407 + msgid "HPLIP cannot find the device." +-msgstr "" ++msgstr "HPLIP ei löydä laitetta." + + #: ../system-config-printer.py:5455 +-#, fuzzy + msgid "Not Found" +-msgstr "Ei löydy" ++msgstr "Ei löytynyt" + + #: ../system-config-printer.py:5456 + msgid "No printer was found at that address." +-msgstr "" ++msgstr "Tulostinta ei löytynyt annetusta osoitteesta." + + #: ../system-config-printer.py:5600 +-#, fuzzy + msgid "-- Select from search results --" +-msgstr "-- Valitse tulostimen malli --" ++msgstr "-- Valitse hakutuloksista --" + + #: ../system-config-printer.py:5602 + msgid "-- No matches found --" +@@ -1362,9 +1309,8 @@ msgid "Distributable" + msgstr "Jaettava" + + #: ../system-config-printer.py:5873 +-#, fuzzy + msgid ", " +-msgstr " " ++msgstr ", " + + #: ../system-config-printer.py:5878 + #, python-format +@@ -1372,14 +1318,16 @@ msgid "" + "\n" + "(%s)" + msgstr "" ++"\n" ++"(%s)" + + #: ../system-config-printer.py:5883 + msgid "No support contacts known" +-msgstr "" ++msgstr "Ei tunnettua tukisopimusta" + + #: ../system-config-printer.py:5887 ../system-config-printer.py:5900 + msgid "Not specified." +-msgstr "Ei määriteltyi." ++msgstr "Ei määritelty." + + #. Foomatic database problem of some sort. + #: ../system-config-printer.py:5940 +@@ -1389,7 +1337,7 @@ msgstr "Tietokantavirhe" + #: ../system-config-printer.py:5941 + #, python-format + msgid "The '%s' driver cannot be used with printer '%s %s'." +-msgstr "Ajuria ”%s” ei voi käyttää tulostimen ”%s %s” kanssa." ++msgstr "Ajuria ”%s” ei voida käyttää tulostimen ”%s %s” kanssa." + + #. This printer references some XML that is not + #. installed by default. Point the user at the +@@ -1406,7 +1354,7 @@ msgstr "PPD-virhe" + + #: ../system-config-printer.py:5960 + msgid "Failed to read PPD file. Possible reason follows:" +-msgstr "PPD-tiedoston lukeminen epäonnistui. Mahdollisia syitä:" ++msgstr "PPD-tiedoston lukeminen epäonnistui. Mahdollinen syy:" + + #. Failed to get PPD downloaded from OpenPrinting XXX + #: ../system-config-printer.py:5977 +@@ -1415,7 +1363,7 @@ msgstr "Ladattavissa olevat ajurit" + + #: ../system-config-printer.py:5978 + msgid "Failed to download PPD." +-msgstr "" ++msgstr "PPD-tiedoston lataaminen epäonnistui." + + #: ../system-config-printer.py:6011 ../system-config-printer.py:6049 + msgid "No Installable Options" +@@ -1430,13 +1378,13 @@ msgid "Adding printer" + msgstr "Lisätään tulostinta" + + #: ../system-config-printer.py:6101 +-#, fuzzy, python-format ++#, python-format + msgid "adding printer %s" +-msgstr "Lisätään tulostinta" ++msgstr "lisätään tulostin %s" + + #: ../system-config-printer.py:6247 + msgid "Would you like to print a test page?" +-msgstr "" ++msgstr "Haluatko tulostaa testisivun?" + + #: ../system-config-printer.py:6300 + msgid "Install driver" +@@ -1445,7 +1393,7 @@ msgstr "Asenna ajuri" + #: ../system-config-printer.py:6301 + #, python-format + msgid "Printer '%s' requires the %s package but it is not currently installed." +-msgstr "Tulostin ”%s” vaatii paketin ”%s”, mutta sitä ei ole asennettu." ++msgstr "Tulostin ”%s” vaatii paketin ”%s”, mutta se ei ole asennettuna." + + #: ../system-config-printer.py:6317 + msgid "Missing driver" +@@ -1457,7 +1405,7 @@ msgid "" + "Printer '%s' requires the '%s' program but it is not currently installed. " + "Please install it before using this printer." + msgstr "" +-"Tulostin ”%s” vaatii ohjelman ”%s”, mutta sitä ei ole asennettu. Asenna " ++"Tulostin ”%s” vaatii ohjelman ”%s”, mutta se ei ole asennettuna. Asenna " + "ohjelma ennen tämän tulostimen käyttöä." + + #: ../glade/AboutDialog.glade.h:1 +@@ -1465,9 +1413,8 @@ msgid "A CUPS configuration tool." + msgstr "CUPS-asetustyökalu." + + #: ../glade/AboutDialog.glade.h:2 +-#, fuzzy + msgid "Copyright © 2006-2008 Red Hat, Inc." +-msgstr "Tekijänoikeus © 2006-2007 Red Hat, Inc." ++msgstr "Tekijänoikeudet © 2006-2008 Red Hat, Inc." + + #: ../glade/AboutDialog.glade.h:3 + msgid "" +@@ -1509,34 +1456,29 @@ msgid "translator-credits" + msgstr "" + "Mikko Ikola, 2004.\n" + "Lauri Nurmi, 2004, 2007.\n" +-"Ville-Pekka Vainio, 2006-2008.\n" +-"Ilkka Tuohela, 2007." ++"Ville-Pekka Vainio, 2006-2009.\n" ++"Ilkka Tuohela, 2007.\n" ++"Esko Arajärvi, 2008." + + #: ../glade/ConnectDialog.glade.h:1 +-#, fuzzy + msgid "CUPS _server:" +-msgstr "CUPS-palvelin:" ++msgstr "CUPS-_palvelin:" + + #: ../glade/ConnectDialog.glade.h:2 + msgid "Connect to CUPS server" + msgstr "Yhdistä CUPS-palvelimelle" + + #: ../glade/ConnectDialog.glade.h:3 +-#, fuzzy + msgid "Require _encryption" +-msgstr "Vaadi salausta" ++msgstr "Vaadi _salaus" + + #: ../glade/ConnectingDialog.glade.h:3 +-#, fuzzy + msgid "Connecting to CUPS server" +-msgstr "" +-"Salasana vaaditaan\n" +-"\n" ++msgstr "Yhdistetään CUPS-palvelimeen" + + #: ../glade/ConnectingDialog.glade.h:4 +-#, fuzzy + msgid "Connecting to CUPS server" +-msgstr "Yhdistä CUPS-palvelimelle" ++msgstr "Yhdistetään CUPS-palvelimeen" + + #: ../glade/InstallDialog.glade.h:1 + msgid "_Install" +@@ -1555,11 +1497,9 @@ msgid "_File" + msgstr "_Tiedosto" + + #: ../glade/JobsWindow.glade.h:3 +-#, fuzzy + msgid "_Job" +-msgstr "Työ" ++msgstr "_Työ" + +-# tarkista + #: ../glade/JobsWindow.glade.h:4 + msgid "_Refresh" + msgstr "_Päivitä" +@@ -1577,9 +1517,8 @@ msgid "New name for the printer" + msgstr "Tulostimen uusi nimi" + + #: ../glade/NewPrinterWindow.glade.h:1 +-#, fuzzy + msgid "Authentication" +-msgstr "Todennus vaaditaan" ++msgstr "Tunnistautuminen" + + #: ../glade/NewPrinterWindow.glade.h:2 + msgid "Description" +@@ -1594,9 +1533,8 @@ msgid "Enter device URI" + msgstr "Syötä laitteen osoite" + + #: ../glade/NewPrinterWindow.glade.h:5 +-#, fuzzy + msgid "HP Printer (HPLIP) via network" +-msgstr "Tulostimen nimi" ++msgstr "HP-tulostin (HPLIP) verkon kautta" + + #: ../glade/NewPrinterWindow.glade.h:6 + msgid "IPP Printer" +@@ -1619,18 +1557,16 @@ msgid "Location (optional)" + msgstr "Sijainti (valinnainen)" + + #: ../glade/NewPrinterWindow.glade.h:11 +-#, fuzzy + msgid "Network Printer" +-msgstr "Uusi tulostin" ++msgstr "Verkkotulostin" + + #: ../glade/NewPrinterWindow.glade.h:12 + msgid "Note" + msgstr "Huomautus" + + #: ../glade/NewPrinterWindow.glade.h:13 +-#, fuzzy + msgid "Output Quality" +-msgstr "Tila" ++msgstr "Tulosteen laatu" + + #: ../glade/NewPrinterWindow.glade.h:14 + msgid "Printer Name" +@@ -1653,46 +1589,28 @@ msgid "smb://[workgroup/]server[:port + msgstr "smb://[työryhmä/]palvelin[:portti]/tulostin" + + #: ../glade/NewPrinterWindow.glade.h:19 +-#, fuzzy + msgid "Choose Class Members" +-msgstr "" +-"Salasana vaaditaan\n" +-"\n" ++msgstr "Valitse luokan jäsenet" + + #: ../glade/NewPrinterWindow.glade.h:20 +-#, fuzzy + msgid "Choose Driver" +-msgstr "" +-"Salasana vaaditaan\n" +-"\n" ++msgstr "Valitse ajuri" + + #: ../glade/NewPrinterWindow.glade.h:21 +-#, fuzzy + msgid "Describe Printer" +-msgstr "" +-"Salasana vaaditaan\n" +-"\n" ++msgstr "Kuvaile tulostinta" + + #: ../glade/NewPrinterWindow.glade.h:22 +-#, fuzzy + msgid "Existing Settings" +-msgstr "" +-"Salasana vaaditaan\n" +-"\n" ++msgstr "Nykyiset asetukset" + + #: ../glade/NewPrinterWindow.glade.h:23 +-#, fuzzy + msgid "Installable Options" +-msgstr "" +-"Salasana vaaditaan\n" +-"\n" ++msgstr "Asennettavat valinnat" + + #: ../glade/NewPrinterWindow.glade.h:24 +-#, fuzzy + msgid "Select Device" +-msgstr "" +-"Salasana vaaditaan\n" +-"\n" ++msgstr "Valitse ajuri" + + #: ../glade/NewPrinterWindow.glade.h:25 + msgid "Baud Rate" +@@ -1707,9 +1625,8 @@ msgid "Comments..." + msgstr "Kommentit..." + + #: ../glade/NewPrinterWindow.glade.h:28 +-#, fuzzy + msgid "Connection" +-msgstr "Yhdistää" ++msgstr "Yhteys" + + #: ../glade/NewPrinterWindow.glade.h:29 + msgid "Data Bits" +@@ -1756,8 +1673,8 @@ msgid "" + msgstr "" + "Oletus\n" + "Ei mitään\n" +-"Pariton\n" +-"Parillinen" ++"Parittomat\n" ++"Parilliset" + + #: ../glade/NewPrinterWindow.glade.h:46 + msgid "" +@@ -1813,11 +1730,11 @@ msgstr "Valitulle tulostimelle on ladatt + + #: ../glade/NewPrinterWindow.glade.h:61 + msgid "Free software" +-msgstr "" ++msgstr "Vapaa ohjelmisto" + + #: ../glade/NewPrinterWindow.glade.h:62 + msgid "Graphics:" +-msgstr "" ++msgstr "Grafiikka:" + + #: ../glade/NewPrinterWindow.glade.h:63 + msgid "Host:" +@@ -1825,11 +1742,11 @@ msgstr "Tietokone:" + + #: ../glade/NewPrinterWindow.glade.h:64 + msgid "Human-readable description such as \"HP LaserJet with Duplexer\"" +-msgstr "Selväkielinen kuvaus, kuten \"HP LaserJet\"" ++msgstr "Selväkielinen kuvaus, kuten ”HP LaserJet”" + + #: ../glade/NewPrinterWindow.glade.h:65 + msgid "Human-readable location such as \"Lab 1\"" +-msgstr "Selväkielinen sijainti, kuten \"Huone 1\"" ++msgstr "Selväkielinen sijainti, kuten ”Huone 1”" + + #: ../glade/NewPrinterWindow.glade.h:66 + msgid "IPP" +@@ -1840,32 +1757,29 @@ msgid "LPD" + msgstr "LPD" + + #: ../glade/NewPrinterWindow.glade.h:68 +-#, fuzzy + msgid "License:" + msgstr "Lisenssi:" + + #: ../glade/NewPrinterWindow.glade.h:69 + #, fuzzy + msgid "Line art:" +-msgstr "Tulostimen tilat:" ++msgstr "Tulostimen tila:" + + #: ../glade/NewPrinterWindow.glade.h:70 + msgid "Local Driver" + msgstr "Paikallinen ajuri" + + #: ../glade/NewPrinterWindow.glade.h:71 +-#, fuzzy + msgid "Make and model:" +-msgstr "Merkki ja malli" ++msgstr "Merkki ja malli:" + + #: ../glade/NewPrinterWindow.glade.h:72 + msgid "Manufacturer" +-msgstr "" ++msgstr "Valmistaja" + + #: ../glade/NewPrinterWindow.glade.h:73 +-#, fuzzy + msgid "Network" +-msgstr "Uusi tulostin" ++msgstr "Verkko" + + #: ../glade/NewPrinterWindow.glade.h:75 + msgid "No, I do not accept this license" +@@ -1877,11 +1791,11 @@ msgstr "Pariteetti" + + #: ../glade/NewPrinterWindow.glade.h:78 + msgid "Patented algorithms" +-msgstr "" ++msgstr "Patentoituja algoritmeja" + + #: ../glade/NewPrinterWindow.glade.h:79 + msgid "Photo:" +-msgstr "" ++msgstr "Valokuva:" + + #: ../glade/NewPrinterWindow.glade.h:80 + msgid "Port number:" +@@ -1906,9 +1820,8 @@ msgid "Probe" + msgstr "Tunnista" + + #: ../glade/NewPrinterWindow.glade.h:84 +-#, fuzzy + msgid "Prompt user if authentication is required" +-msgstr "Todennus vaaditaan" ++msgstr "Kysy käyttäjältä, jos vaaditaan tunnistautumista" + + #: ../glade/NewPrinterWindow.glade.h:85 + msgid "Provide PPD file" +@@ -1943,27 +1856,24 @@ msgid "Serial" + msgstr "Sarja" + + #: ../glade/NewPrinterWindow.glade.h:93 +-#, fuzzy + msgid "Set authentication details now" +-msgstr "Todennus vaaditaan" ++msgstr "Aseta tunnistautumistiedot nyt" + + #: ../glade/NewPrinterWindow.glade.h:94 + msgid "Short name for this printer such as \"laserjet\"" +-msgstr "" ++msgstr "Tämän tulostimen lyhyt nimi, kuten ”laserjet”" + + #: ../glade/NewPrinterWindow.glade.h:95 + msgid "Supplier:" +-msgstr "Toimittaja" ++msgstr "Toimittaja:" + + #: ../glade/NewPrinterWindow.glade.h:96 +-#, fuzzy + msgid "Support:" +-msgstr "Toimittaja" ++msgstr "Tuki:" + + #: ../glade/NewPrinterWindow.glade.h:97 +-#, fuzzy + msgid "Text:" +-msgstr "Oletukset" ++msgstr "Teksti:" + + #: ../glade/NewPrinterWindow.glade.h:98 + msgid "" +@@ -1986,8 +1896,7 @@ msgid "" + "of the driver's supplier." + msgstr "" + "Nämä ajurit eivät tule käyttöjärjestelmän toimittajalta eikä toimittajan " +-"kaupallinen tuki kata niitä. Katso ajurin toimittajan tuki- ja " +-"lisenssiehdot." ++"kaupallinen tuki kata niitä. Katso ajurin toimittajan tuki- ja lisenssiehdot." + + #: ../glade/NewPrinterWindow.glade.h:100 + msgid "" +@@ -2049,13 +1958,12 @@ msgstr "_Varmenna..." + #: ../glade/NewPrinterWindow.glade.h:112 + #: ../glade/PrinterPropertiesDialog.glade.h:128 + msgid "move left" +-msgstr "" ++msgstr "siirrä vasemmalle" + + #: ../glade/NewPrinterWindow.glade.h:113 + #: ../glade/PrinterPropertiesDialog.glade.h:129 +-#, fuzzy + msgid "move right" +-msgstr "Tekijänoikeudet" ++msgstr "siirrä oikealle" + + #: ../glade/PrinterPropertiesDialog.glade.h:1 + msgid " " +@@ -2078,15 +1986,12 @@ msgstr "" + "16" + + #: ../glade/PrinterPropertiesDialog.glade.h:8 +-#, fuzzy + msgid "72 points per inch" +-msgstr "" +-"pistettä\n" +-"(72 pistettä tuumaa kohti)" ++msgstr "72 pistettä tuumalla" + + #: ../glade/PrinterPropertiesDialog.glade.h:9 + msgid "Banner" +-msgstr "Palkki" ++msgstr "Erotinsivu" + + #: ../glade/PrinterPropertiesDialog.glade.h:10 + msgid "Common Options" +@@ -2097,9 +2002,8 @@ msgid "Image Options" + msgstr "Kuva-asetukset" + + #: ../glade/PrinterPropertiesDialog.glade.h:12 +-#, fuzzy + msgid "Ink/Toner Levels" +-msgstr "Palkki" ++msgstr "Musteen/väriaineen määrät" + + #: ../glade/PrinterPropertiesDialog.glade.h:13 + msgid "Other Options (Advanced)" +@@ -2107,7 +2011,7 @@ msgstr "Lisäasetukset" + + #: ../glade/PrinterPropertiesDialog.glade.h:14 + msgid "Policies" +-msgstr "Menettelytavat" ++msgstr "Käytännöt" + + #: ../glade/PrinterPropertiesDialog.glade.h:15 + msgid "Settings" +@@ -2118,9 +2022,8 @@ msgid "State" + msgstr "Tila" + + #: ../glade/PrinterPropertiesDialog.glade.h:17 +-#, fuzzy + msgid "Status Messages" +-msgstr "Viesti" ++msgstr "Tilaviestit" + + #: ../glade/PrinterPropertiesDialog.glade.h:18 + msgid "Tests and Maintenance" +@@ -2156,7 +2059,7 @@ msgstr "Salli tulostus kaikille muille p + + #: ../glade/PrinterPropertiesDialog.glade.h:26 + msgid "Bottom margin:" +-msgstr "Alamariginaali:" ++msgstr "Alamarginaali:" + + #: ../glade/PrinterPropertiesDialog.glade.h:27 + msgid "Brightness:" +@@ -2168,7 +2071,7 @@ msgstr "Muuta..." + + #: ../glade/PrinterPropertiesDialog.glade.h:29 + msgid "Characters per inch:" +-msgstr "Merkkejä tuumaa kohti:" ++msgstr "Merkkejä tuumalla:" + + #. Not more than 25 characters + #: ../glade/PrinterPropertiesDialog.glade.h:31 +@@ -2197,7 +2100,7 @@ msgstr "Käytössä" + + #: ../glade/PrinterPropertiesDialog.glade.h:38 + msgid "Ending Banner:" +-msgstr "Lopetusbanneri:" ++msgstr "Loppusivu:" + + #: ../glade/PrinterPropertiesDialog.glade.h:39 + msgid "Error Policy: \t" +@@ -2221,7 +2124,7 @@ msgstr "Sävynsäätö:" + + #: ../glade/PrinterPropertiesDialog.glade.h:44 + msgid "Ink/Toner Levels" +-msgstr "" ++msgstr "Musteen/väriaineen määrät" + + #: ../glade/PrinterPropertiesDialog.glade.h:45 + msgid "Installed Options" +@@ -2261,7 +2164,7 @@ msgstr "" + + #: ../glade/PrinterPropertiesDialog.glade.h:57 + msgid "Lines per inch:" +-msgstr "&Rivejä tuumaa kohti:" ++msgstr "Viivaa tuumalla:" + + #: ../glade/PrinterPropertiesDialog.glade.h:58 + msgid "Location:" +@@ -2269,7 +2172,7 @@ msgstr "Sijainti:" + + #: ../glade/PrinterPropertiesDialog.glade.h:59 + msgid "Make and Model:" +-msgstr "Merkki ja malli" ++msgstr "Merkki ja malli:" + + #: ../glade/PrinterPropertiesDialog.glade.h:60 + msgid "Media:" +@@ -2287,9 +2190,7 @@ msgstr "Peilaa" + msgid "More" + msgstr "Lisää" + +-# Jonkun pitäisi tarkastaa... + #: ../glade/PrinterPropertiesDialog.glade.h:64 +-#, fuzzy + msgid "" + "None\n" + "Staple\n" +@@ -2335,7 +2236,7 @@ msgstr "" + "Nidonta (ylävasen)\n" + "Nidonta (alavasen)\n" + "Nidonta (yläoikea)\n" +-"Nidonta (alavasen)\n" ++"Nidonta (alaoikea)\n" + "Reunaommel (vasen)\n" + "Reunaommel (ylä)\n" + "Reunaommel (oikea)\n" +@@ -2408,13 +2309,12 @@ msgid "Print Test Page" + msgstr "Tulosta testisivu" + + #: ../glade/PrinterPropertiesDialog.glade.h:110 +-#, fuzzy + msgid "Printer Properties" +-msgstr "Tulostinraportti" ++msgstr "Tulostimen ominaisuudet" + + #: ../glade/PrinterPropertiesDialog.glade.h:111 + msgid "Printer State:" +-msgstr "Tulostimen tilat:" ++msgstr "Tulostimen tila:" + + #: ../glade/PrinterPropertiesDialog.glade.h:112 + msgid "Reset" +@@ -2464,12 +2364,11 @@ msgstr "" + + #: ../glade/PrinterPropertiesDialog.glade.h:122 + msgid "Starting Banner:" +-msgstr "Aloitusbanneri:" ++msgstr "Alkusivu:" + + #: ../glade/PrinterPropertiesDialog.glade.h:123 +-#, fuzzy + msgid "There are no status messages for this printer." +-msgstr "Tulostimen uusi nimi" ++msgstr "Tällä tulostimella ei ole tilaviestejä." + + # This will have to be checked! + #: ../glade/PrinterPropertiesDialog.glade.h:124 +@@ -2499,24 +2398,20 @@ msgid "points" + msgstr "pistettä" + + #: ../glade/PrinterPropertiesDialog.glade.h:132 +-#, fuzzy + msgid "user" +-msgstr "Käyttäjät" ++msgstr "käyttäjä" + + #: ../glade/PrintersWindow.glade.h:1 +-#, fuzzy + msgid "Adjust server settings" +-msgstr "Palvelimen perusasetukset" ++msgstr "Säädä palvelinasetuksia" + + #: ../glade/PrintersWindow.glade.h:2 +-#, fuzzy + msgid "Choose a different CUPS server" +-msgstr "Yhdistä toiseen tulostuspalvelimeen" ++msgstr "Valitse toinen tulostuspalvelin" + + #: ../glade/PrintersWindow.glade.h:3 +-#, fuzzy + msgid "Show printer groups" +-msgstr "Näytä _tulostimen tila" ++msgstr "Näytä tulostinryhmät" + + #: ../glade/PrintersWindow.glade.h:4 + msgid "Show printers shared by other systems" +@@ -2527,103 +2422,89 @@ msgid "System-Config-Printer" + msgstr "Aseta tulostimet" + + #: ../glade/PrintersWindow.glade.h:6 +-#, fuzzy + msgid "_Class" +-msgstr "Uusi luokka" ++msgstr "_Luokka" + + #: ../glade/PrintersWindow.glade.h:7 +-#, fuzzy + msgid "_Connect..." +-msgstr "Yhdistää" ++msgstr "_Yhdistä" + + #: ../glade/PrintersWindow.glade.h:8 + msgid "_Discovered Printers" +-msgstr "" ++msgstr "_Löydetyt tulostimet" + + #: ../glade/PrintersWindow.glade.h:9 + msgid "_Group" +-msgstr "" ++msgstr "_Ryhmä" + + #: ../glade/PrintersWindow.glade.h:10 + msgid "_Groups" +-msgstr "" ++msgstr "_Ryhmät" + + #: ../glade/PrintersWindow.glade.h:11 + msgid "_Help" + msgstr "_Ohje" + + #: ../glade/PrintersWindow.glade.h:12 +-#, fuzzy + msgid "_New" +-msgstr "_Näytä" ++msgstr "_Uusi" + + #: ../glade/PrintersWindow.glade.h:13 +-#, fuzzy + msgid "_Printer" +-msgstr "Tulostin" ++msgstr "_Tulostin" + + #: ../glade/PrintersWindow.glade.h:14 +-#, fuzzy + msgid "_Server" + msgstr "_Palvelin" + + #: ../glade/PrintersWindow.glade.h:15 +-#, fuzzy + msgid "_Settings..." +-msgstr "Asetukset" ++msgstr "_Asetukset..." + + #: ../glade/PrintersWindow.glade.h:16 + msgid "_Troubleshoot" +-msgstr "" ++msgstr "_Vianetsintä" + + #: ../glade/ServerSettingsDialog.glade.h:1 + msgid "Basic Server Settings" + msgstr "Palvelimen perusasetukset" + + #: ../glade/ServerSettingsDialog.glade.h:2 +-#, fuzzy + msgid "Allow _remote administration" +-msgstr "Salli etäylläpito" ++msgstr "Salli _etäylläpito" + + #: ../glade/ServerSettingsDialog.glade.h:3 +-#, fuzzy + msgid "Allow _users to cancel any job (not just their own)" + msgstr "" +-"Salli käyttäjien peruuttaa mikä tahansa työ (ei pelkästään heidän omiaan)" ++"Salli _käyttäjien peruuttaa mikä tahansa työ (ei pelkästään heidän omiaan)" + + #: ../glade/ServerSettingsDialog.glade.h:4 +-#, fuzzy + msgid "Allow printing from the _Internet" +-msgstr "Salli tulostus Internetistä" ++msgstr "Salli tulostus _Internetistä" + + #: ../glade/ServerSettingsDialog.glade.h:5 +-#, fuzzy + msgid "Basic Server Settings" +-msgstr "Palvelimen perusasetukset" ++msgstr "Palvelimen perusasetukset" + + #: ../glade/ServerSettingsDialog.glade.h:6 +-#, fuzzy + msgid "Save _debugging information for troubleshooting" +-msgstr "Tallenna ohjelmavirheiden jäljitystiedot vianetsintää varten" ++msgstr "Tallenna _ohjelmavirheiden jäljitystiedot vianetsintää varten" + + #: ../glade/ServerSettingsDialog.glade.h:7 +-#, fuzzy + msgid "_Publish shared printers connected to this system" +-msgstr "Jaa tähän järjestelmään kytketyt julkiset kirjoittimet" ++msgstr "_Julkaise tähän järjestelmään kytketyt jaetut tulostimet" + + #: ../glade/ServerSettingsDialog.glade.h:8 +-#, fuzzy + msgid "_Show printers shared by other systems" +-msgstr "Näytä muiden järjestelmien jakamat kirjoittimet" ++msgstr "_Näytä muiden järjestelmien jakamat kirjoittimet" + + #: ../glade/SMBBrowseDialog.glade.h:1 + msgid "SMB Browser" + msgstr "SMB-selain" + + #: ../glade/statusicon_popupmenu.glade.h:1 +-#, fuzzy + msgid "_Configure Printers" +-msgstr "Määrittele tulostimia" ++msgstr "_Muokkaa tulostimien asetuksia" + + #: ../glade/statusicon_popupmenu.glade.h:2 + msgid "_Hide" +@@ -2635,7 +2516,7 @@ msgstr "Odota, ole hyvä" + + #: ../system-config-printer.desktop.in.h:1 + msgid "Configure printers" +-msgstr "Määrittele tulostimia" ++msgstr "Muokkaa tulostimien asetuksia" + + #: ../system-config-printer.desktop.in.h:2 + msgid "Printing" +@@ -2643,7 +2524,7 @@ msgstr "Tulostus" + + #: ../statereason.py:85 + msgid "Toner low" +-msgstr "Väriaine on vähissä" ++msgstr "Väriaine vähissä" + + #: ../statereason.py:86 + #, python-format +@@ -2652,7 +2533,7 @@ msgstr "Tulostimen ”%s” väriaine on + + #: ../statereason.py:87 + msgid "Toner empty" +-msgstr "Väriaine on loppu" ++msgstr "Väriaine lopussa" + + #: ../statereason.py:88 + #, python-format +@@ -2661,7 +2542,7 @@ msgstr "Tulostimen ”%s” väriaine on + + #: ../statereason.py:89 + msgid "Cover open" +-msgstr "Kansi on auki" ++msgstr "Kansi auki" + + #: ../statereason.py:90 + #, python-format +@@ -2670,7 +2551,7 @@ msgstr "Tulostimen ”%s” kansi on auk + + #: ../statereason.py:91 + msgid "Door open" +-msgstr "Luukku on auki" ++msgstr "Luukku auki" + + #: ../statereason.py:92 + #, python-format +@@ -2679,7 +2560,7 @@ msgstr "Tulostimen ”%s” luukku on au + + #: ../statereason.py:93 + msgid "Paper low" +-msgstr "Paperi on vähissä" ++msgstr "Paperi vähissä" + + #: ../statereason.py:94 + #, python-format +@@ -2688,7 +2569,7 @@ msgstr "Paperi on vähissä tulostimessa + + #: ../statereason.py:95 + msgid "Out of paper" +-msgstr "Paperi on loppu" ++msgstr "Paperi lopussa" + + #: ../statereason.py:96 + #, python-format +@@ -2697,7 +2578,7 @@ msgstr "Paperi on loppu tulostimesta ” + + #: ../statereason.py:97 + msgid "Ink low" +-msgstr "Muste on vähissä" ++msgstr "Muste vähissä" + + #: ../statereason.py:98 + #, python-format +@@ -2706,7 +2587,7 @@ msgstr "Tulostimen ”%s” muste on vä + + #: ../statereason.py:99 + msgid "Ink empty" +-msgstr "Muste on lopussa" ++msgstr "Muste lopussa" + + #: ../statereason.py:100 + #, python-format +@@ -2714,14 +2595,13 @@ msgid "Printer '%s' has no ink left." + msgstr "Tulostimen ”%s” muste on lopussa." + + #: ../statereason.py:101 +-#, fuzzy + msgid "Printer off-line" +-msgstr "Tulostimen asetukset" ++msgstr "Ei yhteyttä tulostimeen" + + #: ../statereason.py:102 +-#, fuzzy, python-format ++#, python-format + msgid "Printer `%s' is currently off-line." +-msgstr "Paperi on loppu tulostimesta ”%s”." ++msgstr "Tulostimeen ”%s” saada tällä hetkellä yhteyttä." + + #: ../statereason.py:103 + msgid "Not connected?" +@@ -2737,9 +2617,9 @@ msgid "Printer error" + msgstr "Tulostinvirhe" + + #: ../statereason.py:106 +-#, fuzzy, python-format ++#, python-format + msgid "There is a problem on printer `%s'." +-msgstr "Tulostimen ”%s” luukku on auki." ++msgstr "Tulostimessa ”%s” on ongelma." + + #: ../statereason.py:117 + msgid "Printer report" +@@ -2755,329 +2635,336 @@ msgid "Printer '%s': '%s'." + msgstr "Tulostin ”%s”: ”%s”." + + #: ../timedops.py:100 ../timedops.py:168 +-#, fuzzy + msgid "Please wait" + msgstr "Odota, ole hyvä" + + #: ../timedops.py:106 ../timedops.py:175 +-#, fuzzy + msgid "Gathering information" +-msgstr "Sijainti" ++msgstr "Kerätään tietoja" + + #: ../ToolbarSearchEntry.py:73 +-#, fuzzy + msgid "_Filter:" +-msgstr "_Tiedosto" ++msgstr "_Suodin:" + + #: ../troubleshoot/__init__.py:54 + msgid "Printing troubleshooter" +-msgstr "" ++msgstr "Tulostusongelmien ratkaisija " + + #: ../troubleshoot/base.py:33 + msgid "" + "To start this tool, select System->Administration->Printing from the main " + "menu." + msgstr "" ++"Tämä työkalu voidaan käynnistää valitsemalla päävalikosta " ++"Järjestelmä→Ylläpito→Tulostus." + + #: ../troubleshoot/CheckLocalServerPublishing.py:28 + msgid "Server Not Exporting Printers" +-msgstr "" ++msgstr "Palvelin ei tarjoa tulostimia" + + #: ../troubleshoot/CheckLocalServerPublishing.py:29 + msgid "" + "Although one or more printers are marked as being shared, this print server " + "is not exporting shared printers to the network." + msgstr "" ++"Vaikka yksi tai useampia tulostimia on merkitty jaettaviksi, tämä " ++"tulostuspalvelin ei tarjoa jaettuja tulostimia verkkoon." + + #: ../troubleshoot/CheckLocalServerPublishing.py:33 + msgid "" + "Enable the 'Publish shared printers connected to this system' option in the " + "server settings using the printing administration tool." + msgstr "" ++"Ota valitsin ”Julkaise tähän järjestelmään kytketyt jaetut tulostimet” " ++"käyttöön palvelimen asetuksista käyttäen tulostuksen ylläpitotyökalua." + + #: ../troubleshoot/CheckPPDSanity.py:44 ../applet.py:147 + msgid "Install" + msgstr "Asenna" + + #: ../troubleshoot/CheckPPDSanity.py:96 +-#, fuzzy + msgid "Invalid PPD File" +-msgstr "Anna PPD-tiedosto" ++msgstr "Virheellinen PPD-tiedosto" + + #: ../troubleshoot/CheckPPDSanity.py:106 + #, python-format + msgid "" + "The PPD file for printer `%s' does not conform to the specification. " + "Possible reason follows:" +-msgstr "" ++msgstr "Tulostimen ”%s” PPD-tiedosto ei vastaa määrittelyä. Mahdollinen syy:" + + #. Perhaps cupstestppd is not in the path. + #: ../troubleshoot/CheckPPDSanity.py:112 +-#, fuzzy, python-format ++#, python-format + msgid "There is a problem with the PPD file for printer `%s'." +-msgstr "Tulostimen ”%s” luukku on auki." ++msgstr "Tulostimen ”%s” PPD-tiedostossa on ongelma." + + #: ../troubleshoot/CheckPPDSanity.py:122 +-#, fuzzy + msgid "Missing Printer Driver" + msgstr "Tulostinajuri puuttuu" + + #: ../troubleshoot/CheckPPDSanity.py:131 +-#, fuzzy, python-format ++#, python-format + msgid "Printer `%s' requires the %s package but it is not currently installed." +-msgstr "Tulostin ”%s” vaatii paketin ”%s”, mutta sitä ei ole asennettu." ++msgstr "Tulostin ”%s” vaatii paketin ”%s”, mutta se ei ole asennettuna." + + #: ../troubleshoot/CheckPPDSanity.py:136 +-#, fuzzy, python-format ++#, python-format + msgid "" + "Printer `%s' requires the `%s' program but it is not currently installed." +-msgstr "Tulostin ”%s” vaatii paketin ”%s”, mutta sitä ei ole asennettu." ++msgstr "Tulostin ”%s” vaatii ohjelman ”%s”, mutta se ei ole asennettuna." + + #: ../troubleshoot/ChooseNetworkPrinter.py:29 +-#, fuzzy + msgid "Choose Network Printer" +-msgstr "Uusi tulostin" ++msgstr "Valitse verkkotulostin" + + #: ../troubleshoot/ChooseNetworkPrinter.py:30 + msgid "" + "Please select the network printer you are trying to use from the list below. " + "If it does not appear in the list, select 'Not listed'." + msgstr "" ++"Valitse alla olevasta luettelosta verkkotulostin, jota yrität käyttää. Jos " ++"sitä ei löydy luettelosta, valitse ”Ei luettelossa”." + + #: ../troubleshoot/ChooseNetworkPrinter.py:39 + #: ../troubleshoot/ChoosePrinter.py:40 ../troubleshoot/DeviceListed.py:38 +-#, fuzzy + msgid "Information" +-msgstr "Sijainti" ++msgstr "Tietoja" + + #: ../troubleshoot/ChooseNetworkPrinter.py:75 + #: ../troubleshoot/ChoosePrinter.py:64 ../troubleshoot/DeviceListed.py:70 +-#, fuzzy + msgid "Not listed" +-msgstr "Ei kytketty" ++msgstr "Ei luettelossa" + + #: ../troubleshoot/ChoosePrinter.py:30 +-#, fuzzy + msgid "Choose Printer" +-msgstr "Kopioi tulostin" ++msgstr "Valitse tulostin" + + #: ../troubleshoot/ChoosePrinter.py:31 + msgid "" + "Please select the printer you are trying to use from the list below. If it " + "does not appear in the list, select 'Not listed'." + msgstr "" ++"Valitse alla olevasta luettelosta tulostin, jota yrität käyttää. Jos sitä ei " ++"löydy luettelosta, valitse ”Ei luettelossa”." + + #: ../troubleshoot/DeviceListed.py:30 +-#, fuzzy + msgid "Choose Device" +-msgstr "Vaihda laitteen osoitetta" ++msgstr "Valitse laite" + + #: ../troubleshoot/DeviceListed.py:31 + msgid "" + "Please select the device you want to use from the list below. If it does not " + "appear in the list, select 'Not listed'." + msgstr "" ++"Valitse alla olevasta luettelosta laite, jota yrität käyttää. Jos sitä ei " ++"löydy luettelosta, valitse ”Ei luettelossa”." + + #: ../troubleshoot/ErrorLogCheckpoint.py:31 + msgid "Debugging" +-msgstr "" ++msgstr "Virheidenjäljitys" + + #: ../troubleshoot/ErrorLogCheckpoint.py:32 + msgid "" + "I would like to enable debugging output from the CUPS scheduler. This may " + "cause the scheduler to restart. Click the button below to enable debugging." + msgstr "" ++"Haluan, että CUPSin ajastin tulostaa virheidenjäljitysviestejä. Tämä saattaa " ++"aiheuttaa ajastimen uudelleenkäynnistyksen. Ota virheidenjäljitys käyttöön " ++"napsauttamalla alla olevaa nappia." + + #: ../troubleshoot/ErrorLogCheckpoint.py:36 + msgid "Enable Debugging" +-msgstr "" ++msgstr "Ota virheidenjäljitys käyttöön" + + #: ../troubleshoot/ErrorLogCheckpoint.py:211 + msgid "Debug logging enabled." +-msgstr "" ++msgstr "Virheidenjäljitysviestit otettu käyttöön." + + #: ../troubleshoot/ErrorLogCheckpoint.py:213 + msgid "Debug logging was already enabled." +-msgstr "" ++msgstr "Virheidenjäljitysviestit olivat jo käytössä." + + #: ../troubleshoot/ErrorLogParse.py:29 + msgid "Error log messages" +-msgstr "" ++msgstr "Virhelokin viestit" + + #: ../troubleshoot/ErrorLogParse.py:30 + msgid "There are messages in the error log." +-msgstr "" ++msgstr "Virhelokissa on viestejä." + + #: ../troubleshoot/Locale.py:29 + msgid "Incorrect Page Size" +-msgstr "" ++msgstr "Virheellinen sivun koko" + + #: ../troubleshoot/Locale.py:30 + msgid "" + "The page size for the print job was not the printer's default page size. If " + "this is not intentional it may cause alignment problems." + msgstr "" ++"Tulostustyön sivun koko poikkesi tulostimen oletussivukoosta. Jos tämä ei " ++"ole tarkoituksellista, siitä saattaa seurata asetteluongelmia." + + #: ../troubleshoot/Locale.py:43 +-#, fuzzy + msgid "Print job page size:" +-msgstr "Tulosta testisivu" ++msgstr "Tulostustyön sivukoko:" + + #: ../troubleshoot/Locale.py:48 +-#, fuzzy + msgid "Printer page size:" +-msgstr "Tulostimen tilat:" ++msgstr "Tulostimen sivukoko:" + + #: ../troubleshoot/LocalOrRemote.py:26 +-#, fuzzy + msgid "Printer Location" +-msgstr "Tulostimen asetukset" ++msgstr "Tulostimen sijainti" + + #: ../troubleshoot/LocalOrRemote.py:27 +-#, fuzzy + msgid "Is the printer connected to this computer or available on the network?" +-msgstr "Rinnakkaisporttiin liitetty tulostin." ++msgstr "" ++"Onko tulostin kytketty tähän tietokoneeseen tai käytettävissä verkossa?" + + #: ../troubleshoot/LocalOrRemote.py:29 +-#, fuzzy + msgid "Locally connected printer" +-msgstr "Haluatko varmasti poistaa tulostimen %s?" ++msgstr "Paikallisesti kytketty tulostin" + + #: ../troubleshoot/NetworkCUPSPrinterShared.py:28 + msgid "Queue Not Shared" +-msgstr "" ++msgstr "Jonoa ei jaeta" + + #: ../troubleshoot/NetworkCUPSPrinterShared.py:29 + msgid "The CUPS printer on the server is not shared." +-msgstr "" ++msgstr "Palvelimen CUPS-tulostinta ei ole jaettu." + + #: ../troubleshoot/PrinterStateReasons.py:29 +-#, fuzzy + msgid "Status Messages" +-msgstr "Viesti" ++msgstr "Tilaviestit" + + #: ../troubleshoot/PrinterStateReasons.py:30 + msgid "There are status messages associated with this queue." +-msgstr "" ++msgstr "Tähän jonoon liittyy tilaviestejä." + + #: ../troubleshoot/PrinterStateReasons.py:58 +-#, fuzzy, python-format ++#, python-format + msgid "The printer's state message is: `%s'." +-msgstr "Tulostimen tilat:" ++msgstr "Tulostimen tilaviesti on: ”%s”." + + #: ../troubleshoot/PrinterStateReasons.py:83 + msgid "Errors are listed below:" +-msgstr "" ++msgstr "Virheet on lueteltu alla:" + + #: ../troubleshoot/PrinterStateReasons.py:88 + msgid "Warnings are listed below:" +-msgstr "" ++msgstr "Varoitukset on lueteltu alla:" + + #: ../troubleshoot/PrintTestPage.py:62 +-#, fuzzy + msgid "Test Page" +-msgstr "Tulosta testisivu" ++msgstr "Testisivu" + + #: ../troubleshoot/PrintTestPage.py:63 + msgid "" + "Now print a test page. If you are having problems printing a specific " + "document, print that document now and mark the print job below." + msgstr "" ++"Tulosta nyt testisivu. Jos jonkin tietyn asiakirjan tulostuksessa on " ++"ongelmia, tulosta se nyt ja merkitse tulostustyö alla." + + #: ../troubleshoot/PrintTestPage.py:75 + msgid "Cancel All Jobs" +-msgstr "" ++msgstr "Peru kaikki työt" + + #: ../troubleshoot/PrintTestPage.py:81 +-#, fuzzy + msgid "Test" +-msgstr "Oletukset" ++msgstr "Testi" + + #: ../troubleshoot/PrintTestPage.py:111 + msgid "Did the marked print jobs print correctly?" +-msgstr "" ++msgstr "Tulostuivatko merkityt tulostustyöt oikein?" + + #: ../troubleshoot/PrintTestPage.py:118 + msgid "Yes" +-msgstr "" ++msgstr "Kyllä" + + #: ../troubleshoot/PrintTestPage.py:119 +-#, fuzzy + msgid "No" +-msgstr "Ei yhtään" ++msgstr "Ei" + + #: ../troubleshoot/PrintTestPage.py:143 + #, python-format + msgid "Remember to load paper of type '%s' into the printer first." +-msgstr "" ++msgstr "Muista ladata ”%s” -tyyppistä paperia ensin tulostimeen." + + #: ../troubleshoot/PrintTestPage.py:399 + msgid "Error submitting test page" +-msgstr "" ++msgstr "Virhe lähetettäessä testisivua" + + #: ../troubleshoot/QueueNotEnabled.py:56 + #: ../troubleshoot/QueueRejectingJobs.py:66 + #, python-format + msgid "The reason given is: `%s'." +-msgstr "" ++msgstr "Annettu syy oli: ”%s”." + + #: ../troubleshoot/QueueNotEnabled.py:58 + msgid "This may be due to the printer being disconnected or switched off." + msgstr "" ++"Tämä saattaa johtua siitä, että tulostin ei ole kytkettynä tai se on pois " ++"päältä." + + #: ../troubleshoot/QueueNotEnabled.py:62 + msgid "Queue Not Enabled" +-msgstr "" ++msgstr "Jono ei käytössä" + + #: ../troubleshoot/QueueNotEnabled.py:63 + #, python-format + msgid "The queue `%s' is not enabled." +-msgstr "" ++msgstr "Jono ”%s” ei ole käytössä." + + #: ../troubleshoot/QueueNotEnabled.py:71 + msgid "" + "To enable it, select the `Enabled' checkbox in the `Policies' tab for the " + "printer in the printer administration tool." + msgstr "" ++"Ottaaksesi sen käyttöön valitse ”Käytössä”-valintaruutu tulostimen " ++"”Käytännöt”-välilehdeltä tulostimen ylläpitotyökalussa." + + #: ../troubleshoot/QueueRejectingJobs.py:31 + msgid "Queue Rejecting Jobs" +-msgstr "" ++msgstr "Jono ei ota vastaan töitä" + + #: ../troubleshoot/QueueRejectingJobs.py:63 + #, python-format + msgid "The queue `%s' is rejecting jobs." +-msgstr "" ++msgstr "Jono ”%s” ei ota töitä vastaan." + + #: ../troubleshoot/QueueRejectingJobs.py:70 + msgid "" + "To make the queue accept jobs, select the `Accepting Jobs' checkbox in the " + "`Policies' tab for the printer in the printer administration tool." + msgstr "" ++"Jono saadaan ottamaan vastaan töitä valitsemalla ”Hyväksyy uusia töitä”-" ++"valintaruutu tulostimen ”Käytännöt”-välilehdeltä tulostimen " ++"ylläpitotyökalussa." + + #: ../troubleshoot/RemoteAddress.py:26 +-#, fuzzy + msgid "Remote Address" +-msgstr "Etätulostimet" ++msgstr "Etäosoite" + + #: ../troubleshoot/RemoteAddress.py:27 + msgid "" + "Please enter as many details as you can about the network address of this " + "printer." + msgstr "" ++"Syötä mahdollisimman paljon tietoja tämän tulostimen verkko-osoitteesta." + + #: ../troubleshoot/RemoteAddress.py:35 +-#, fuzzy + msgid "Server name:" +-msgstr "Käyttäjätunnus:" ++msgstr "Palvelimen nimi:" + + #: ../troubleshoot/RemoteAddress.py:42 + msgid "Server IP address:" +-msgstr "" ++msgstr "Palvelimen IP-osoite:" + + #: ../troubleshoot/SchedulerNotRunning.py:28 + msgid "CUPS Service Stopped" +-msgstr "" ++msgstr "CUPS-palvelu pysäytettynä" + + #: ../troubleshoot/SchedulerNotRunning.py:29 + msgid "" +@@ -3085,15 +2972,16 @@ msgid "" + "choose System->Administration->Services from the main menu and look for the " + "`cups' service." + msgstr "" ++"CUPS-tulostusjono ei näytä olevan käynnissä. Korjataksesi tämän valitse " ++"Järjestelmä→Ylläpito→Palvelut päävalikosta ja etsi ”cups”-palvelu." + + #: ../troubleshoot/ServerFirewalled.py:26 + msgid "Check Server Firewall" +-msgstr "" ++msgstr "Tarkista palvelimen palomuuri" + + #: ../troubleshoot/ServerFirewalled.py:27 +-#, fuzzy + msgid "It is not possible to connect to the server." +-msgstr "CUPS-palvelimeen yhdistämisessä oli ongelma." ++msgstr "Palvelimeen ei voida ottaa yhteyttä." + + #: ../troubleshoot/ServerFirewalled.py:42 + #, python-format +@@ -3101,34 +2989,41 @@ msgid "" + "Please check to see if a firewall or router configuration is blocking TCP " + "port %d on server `%s'." + msgstr "" ++"Tarkista estääkö palomuuri tai reititin liikenteen TCP-porttiin %d " ++"palvelimella ”%s”." + + #: ../troubleshoot/Shrug.py:26 + msgid "Sorry!" +-msgstr "" ++msgstr "Pahoittelut!" + + #: ../troubleshoot/Shrug.py:27 + msgid "" + "I have not been able to work out what the problem is, but I have collected " + "some useful information to put in a bug report." + msgstr "" ++"Ongelmaa ei ole saatu ratkaistua, mutta virheraporttia varten on kerätty " ++"joitain hyödyllisiä tietoja." + ++# paremmin? + #: ../troubleshoot/Shrug.py:32 + msgid "Diagnostic Output (Advanced)" +-msgstr "" ++msgstr "Selvityksen tuloste (Edistynyt)" + + #: ../troubleshoot/Welcome.py:43 + msgid "Trouble-shooting Printing" +-msgstr "" ++msgstr "Tulostuksen vianetsintä" + + #: ../troubleshoot/Welcome.py:45 + msgid "" + "In the next few screens I will ask you some questions about your problem " + "with printing. Based on your answers I will try to suggest a solution." + msgstr "" ++"Muutamalla seuraavalla ruudulla kysytään tulostusongelmaasi liittyviä " ++"kysymyksiä. Ongelmaan yritetään löytää ratkaisu vastaustesi avulla. " + + #: ../troubleshoot/Welcome.py:49 + msgid "Click 'Forward' to begin." +-msgstr "" ++msgstr "Napsauta ”Eteenpäin” aloittaaksesi." + + #: ../applet.py:134 + msgid "Printer added" +@@ -3145,7 +3040,7 @@ msgstr "Asenna tulostinajuri" + #: ../applet.py:141 + #, python-format + msgid "`%s' requires driver installation: %s." +-msgstr "”%s” vaatii ajurin asentamista: %s.." ++msgstr "”%s” vaatii ajurin asentamista: %s." + + #: ../applet.py:153 + #, python-format +@@ -3153,18 +3048,17 @@ msgid "`%s' is ready for printing." + msgstr "”%s” on valmiina tulostamaan." + + #: ../applet.py:156 ../applet.py:167 +-#, fuzzy + msgid "Print test page" + msgstr "Tulosta testisivu" + + #: ../applet.py:158 + msgid "Configure" +-msgstr "Aseta" ++msgstr "Muokkaa asetuksia" + + #: ../applet.py:163 + #, python-format + msgid "`%s' has been added, using the `%s' driver." +-msgstr "”%s” on lisätty, käyttäen ajuria ”%s”." ++msgstr "”%s” on lisätty käyttäen ajuria ”%s”." + + #: ../applet.py:169 + msgid "Find driver" +@@ -3172,7 +3066,7 @@ msgstr "Etsi ajuri" + + #: ../print-applet.desktop.in.h:1 + msgid "Print Queue Applet" +-msgstr "Tulostusjono-sovelma" ++msgstr "Tulostusjonosovelma" + + #: ../print-applet.desktop.in.h:2 + msgid "System tray icon for managing print jobs" +@@ -3180,7 +3074,7 @@ msgstr "Ilmoitusalueen kuvake tulostust + + #: ../manage-print-jobs.desktop.in.h:1 + msgid "Cancel, pause, resume or reprint jobs" +-msgstr "Peruuta, aseta tauolle, jatka tai uudelleentulosta töitä" ++msgstr "Peruuta, aseta tauolle, jatka tai tulosta uudelleen töitä" + + #: ../manage-print-jobs.desktop.in.h:2 + msgid "Manage Print Jobs" +@@ -3190,12 +3084,6 @@ msgstr "Hallitse tulostustöitä" + msgid "Select default printer" + msgstr "Valitse oletustulostin" + +-#~ msgid "Show _printer status" +-#~ msgstr "Näytä _tulostimen tila" +- +-#~ msgid "Printer status" +-#~ msgstr "Tulostimen tila" +- + #~ msgid "1 hour and 1 minute ago" + #~ msgstr "1 tunti ja 1 minuutti sitten" + +@@ -3208,14 +3096,6 @@ msgstr "Valitse oletustulostin" + #~ msgid "%d hours and %d minutes ago" + #~ msgstr "%d tuntia ja %d minuuttia sitten" + +-#, fuzzy +-#~ msgid " (" +-#~ msgstr " " +- +-#, fuzzy +-#~ msgid "Recommended Driver" +-#~ msgstr "Valittu ajuri" +- + #~ msgid "" + #~ "Connecting to server:\n" + #~ "%s" +@@ -3223,13 +3103,91 @@ msgstr "Valitse oletustulostin" + #~ "Yhdistetään palvelimeen:\n" + #~ "%s" + ++#~ msgid "the printer's manufacturer" ++#~ msgstr "tulostimen valmistaja" ++ ++#~ msgid " (%s)" ++#~ msgstr " (%s)" ++ ++#~ msgid " (" ++#~ msgstr " (" ++ ++#~ msgid "non-free software" ++#~ msgstr "epävapaa ohjelmisto" ++ ++#~ msgid "driver contains (possibly) patented algorithms" ++#~ msgstr "ajuri sisältää (mahdollisesti) patentoituja algoritmeja" ++ ++#~ msgid ")" ++#~ msgstr ")" ++ ++#~ msgid "Line Art: %s/100, " ++#~ msgstr "Viivapiirto: %s/100, " ++ ++#~ msgid "Photo: %s/100, " ++#~ msgstr "Kuva: %s/100, " ++ ++#~ msgid "Text: %s/100, " ++#~ msgstr "Teksti: %s/100, " ++ ++#~ msgid "Recommended Driver" ++#~ msgstr "Suositeltu ajuri" ++ ++#~ msgid "Connecting" ++#~ msgstr "Yhdistetään" ++ + #~ msgid "" + #~ "Connecting to Server:\n" + #~ "%s\n" + #~ msgstr "" +-#~ "Yhdistää palvelimelle:\n" ++#~ "Yhdistetään palvelimelle:\n" + #~ "%s\n" + ++#~ msgid "" ++#~ "Create a class from the selected printers (for failover or load-balancing)" ++#~ msgstr "" ++#~ "Luo luokka valituista tulostimista (kuorman jakamiseksi tai " ++#~ "virhetilanteiden varalle)" ++ ++#~ msgid "Set As Default" ++#~ msgstr "Aseta oletukseksi" ++ ++#~ msgid "_Enabled" ++#~ msgstr "_Käytössä" ++ ++#~ msgid "" ++#~ "I would like to disable debugging output from the CUPS scheduler. This " ++#~ "may cause the scheduler to restart. Click the button below to disable " ++#~ "debugging." ++#~ msgstr "" ++#~ "Haluan, että CUPSin ajastin ei tulosta virheidenjäljitysviestejä. Tämä " ++#~ "saattaa aiheuttaa ajastimen uudelleenkäynnistyksen. Poista " ++#~ "virheidenjäljitys käytöstä napsauttamalla alla olevaa nappia." ++ ++#~ msgid "Disable Debugging" ++#~ msgstr "Poista virheidenjäljitys käytöstä" ++ ++#~ msgid "Debug logging disabled." ++#~ msgstr "Virheidenjäljitysviestit poistettu käytöstä." ++ ++#~ msgid "Printer status" ++#~ msgstr "Tulostimen tila" ++ ++#~ msgid "Remote class" ++#~ msgstr "Etäluokka" ++ ++#~ msgid "Remote printer" ++#~ msgstr "Etätulostin" ++ ++#~ msgid "Local class" ++#~ msgstr "Paikallinen luokka" ++ ++#~ msgid "Local printer" ++#~ msgstr "Paikallinen tulostin" ++ ++#~ msgid "Verified" ++#~ msgstr "Tarkistettu" ++ + #~ msgid "Download Printer Driver" + #~ msgstr "Lataa tulostinajuri" + +@@ -3242,14 +3200,6 @@ msgstr "Valitse oletustulostin" + #~ msgid "Select Connection" + #~ msgstr "Valitse yhteys" + +-#, fuzzy +-#~ msgid "Set As Default" +-#~ msgstr "_Aseta oletustulostimeksi" +- +-#, fuzzy +-#~ msgid "_Enabled" +-#~ msgstr "Käytössä" +- + #~ msgid "" + #~ "Apply changes?\n" + #~ "\n" +@@ -3259,44 +3209,26 @@ msgstr "Valitse oletustulostin" + #~ "\n" + #~ "Kaikki tekemäsi muutokset hylätään ellet hyväksy niitä." + +-#~ msgid "_Do not apply" +-#~ msgstr "_Älä hyväksy" +- +-#~ msgid "Verified" +-#~ msgstr "Tarkistettu" +- +-#, fuzzy +-#~ msgid "Remote class" +-#~ msgstr "Etäluokat" +- +-#, fuzzy +-#~ msgid "Remote printer" +-#~ msgstr "Etätulostimet" +- +-#, fuzzy +-#~ msgid "Local class" +-#~ msgstr "Paikalliset luokat" +- +-#, fuzzy +-#~ msgid "Local printer" +-#~ msgstr "Paikalliset tulostimet" +- + #~ msgid "New Clas_s" + #~ msgstr "Uusi _luokka" + + #~ msgid "New _Printer" + #~ msgstr "Uusi t_ulostin:" + +-#, fuzzy + #~ msgid "_Disable" +-#~ msgstr "Jaettava" ++#~ msgstr "_Poista käytöstä" ++ ++#~ msgid "_Do not apply" ++#~ msgstr "_Älä hyväksy" + + #~ msgid "_Edit" + #~ msgstr "_Muokkaa" + +-#, fuzzy + #~ msgid "_Server Settings..." +-#~ msgstr "Palvelinvalinnat" ++#~ msgstr "_Palvelinasetukset..." ++ ++#~ msgid "Debug logging was already disabled." ++#~ msgstr "Virheidenjäljitysviestit olivat jo poissa käytöstä." + + #~ msgid "Create a new printer group" + #~ msgstr "Luo uusi tulostinryhmä" +diff -up system-config-printer-1.1.3/po/ko.po.git-1.1.x system-config-printer-1.1.3/po/ko.po +--- system-config-printer-1.1.3/po/ko.po.git-1.1.x 2009-02-03 12:33:33.000000000 +0000 ++++ system-config-printer-1.1.3/po/ko.po 2009-02-05 10:52:40.000000000 +0000 +@@ -7,15 +7,15 @@ msgid "" + msgstr "" + "Project-Id-Version: system-config-printer.1.1.x\n" + "Report-Msgid-Bugs-To: https://bugzilla.redhat.com/bugzilla\n" +-"POT-Creation-Date: 2009-02-03 12:31+0000\n" +-"PO-Revision-Date: 2009-01-29 17:10+1000\n" ++"POT-Creation-Date: 2009-01-31 01:18+0000\n" ++"PO-Revision-Date: 2009-02-03 15:21+1000\n" + "Last-Translator: Eunju Kim \n" + "Language-Team: Korean \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" + "Content-Transfer-Encoding: 8bit\n" + "X-Generator: KBabel 1.11.4\n" +-"Plural-Forms: nplurals=2; plural=(n!=1);\n" ++"Plural-Forms: nplurals=2; plural=(n!=1);\n\n" + "\n" + + #: ../AdvancedServerSettings.py:41 +@@ -47,7 +47,7 @@ msgstr "서버로 가기" + msgid "" + "Usually print servers broadcast their queues. Specify print servers below " + "to periodically ask for queues instead." +-msgstr "" ++msgstr "주로 프린트 서버는 대기열을 브로드캐스트합니다. 아래의 프린트 서브를 지정하여 주기적으로 대기열을 요청합니다. " + + #: ../AdvancedServerSettings.py:214 + msgid "Enter IP address" +@@ -114,8 +114,7 @@ msgstr "CUPS 서버 오류 " + msgid "" + "The password may be incorrect, or the server may be configured to deny " + "remote administration." +-msgstr "" +-"암호가 틀리거나 또는 서버에서 원격 관리 거부가 설정되었을 수 도 있습니다." ++msgstr "암호가 틀리거나 또는 서버에서 원격 관리 거부가 설정되었을 수 도 있습니다." + + #: ../errordialogs.py:72 + msgid "Bad request" +@@ -160,23 +159,22 @@ msgid "_New Group from Selection" + msgstr "" + + #: ../GroupsPane.py:98 ../system-config-printer.py:387 +-#, fuzzy + msgid "_Rename" +-msgstr "취소(_R)" ++msgstr "이름 변경(_R) " + + #: ../GroupsPane.py:170 + msgid "The item could not be renamed." +-msgstr "" ++msgstr "이 항목 이름을 변경할 수 없습니다. " + + #: ../GroupsPane.py:171 + #, python-format + msgid "The name \"%s\" is already in use. Please use a different name." +-msgstr "" ++msgstr "\"%s\"라는 이름은 이미 사용되고 있습니다. 다른 이름을 사용하시기 바랍니다. " + + #: ../GroupsPane.py:290 + #, python-format + msgid "Are you sure you want to permanently delete \"%s\"?" +-msgstr "" ++msgstr "정말로 \"%s\"을(를) 영구 삭제하시겠습니까? " + + #: ../GroupsPane.py:296 + msgid "" +@@ -245,7 +243,7 @@ msgstr "상태" + #: ../jobviewer.py:252 + #, python-format + msgid "my jobs on %s" +-msgstr "" ++msgstr "%s에서의 내 작업 " + + #: ../jobviewer.py:254 + msgid "my jobs" +@@ -262,7 +260,7 @@ msgstr "문서 인쇄 상태 (%s)" + + #: ../jobviewer.py:390 ../jobviewer.py:455 ../jobviewer.py:456 + #: ../jobviewer.py:496 ../jobviewer.py:604 ../jobviewer.py:758 +-#: ../jobviewer.py:1232 ../jobviewer.py:1233 ../system-config-printer.py:2528 ++#: ../jobviewer.py:1231 ../jobviewer.py:1232 ../system-config-printer.py:2528 + #: ../glade/NewPrinterWindow.glade.h:105 + #: ../troubleshoot/ChooseNetworkPrinter.py:101 + #: ../troubleshoot/ChooseNetworkPrinter.py:102 +@@ -382,14 +380,12 @@ msgid "authenticating job" + msgstr "인증 작업 " + + #: ../jobviewer.py:688 +-#, fuzzy + msgid "Authentication Required" +-msgstr "인증" ++msgstr "인증 필요 " + + #: ../jobviewer.py:689 +-#, fuzzy + msgid "Job requires authentication to proceed." +-msgstr "인증" ++msgstr "작업 진행을 위해 인증이 필요합니다. " + + #: ../jobviewer.py:697 + msgid "Authenticate" +@@ -400,78 +396,77 @@ msgstr "인증 " + msgid "Authentication required for printing document `%s' (job %d)" + msgstr "" + +-#: ../jobviewer.py:932 ++#: ../jobviewer.py:931 + msgid "Cancel Job" + msgstr "작업 취소 " + +-#: ../jobviewer.py:946 ++#: ../jobviewer.py:945 + msgid "Do you really want to cancel this job?" + msgstr "정말로 작업을 취소하시겠습니까? " + +-#: ../jobviewer.py:974 ++#: ../jobviewer.py:973 + msgid "canceling job" + msgstr "작업 취소 중 " + +-#: ../jobviewer.py:998 ++#: ../jobviewer.py:997 + msgid "holding job" + msgstr "" + +-#: ../jobviewer.py:1022 ++#: ../jobviewer.py:1021 + msgid "releasing job" + msgstr "" + +-#: ../jobviewer.py:1132 ++#: ../jobviewer.py:1131 + msgid "No documents queued" + msgstr "대기 상태에 있는 문서가 없음 " + +-#: ../jobviewer.py:1134 ++#: ../jobviewer.py:1133 + msgid "1 document queued" + msgstr "1개의 문서가 대기 상태에 있음 " + +-#: ../jobviewer.py:1136 ++#: ../jobviewer.py:1135 + #, python-format + msgid "%d documents queued" + msgstr "%d 문서가 대기 상태에 있음 " + +-#: ../jobviewer.py:1234 ++#: ../jobviewer.py:1233 + #, python-format + msgid "Job %d completed" + msgstr "%d 작업 완료 " + +-#: ../jobviewer.py:1235 ++#: ../jobviewer.py:1234 + #, python-format + msgid "Document `%s' has finished printing on `%s'." + msgstr "" + +-#: ../jobviewer.py:1383 +-#, fuzzy, python-format ++#: ../jobviewer.py:1371 ++#, python-format + msgid "There was a problem sending document `%s' (job %d) to the printer." +-msgstr "CUPS 서버로 연결하는 도중 오류가 발생했습니다." ++msgstr "`%s' 문서 (작업 %d)를 프린터로 보내는 도중 문제가 발생했습니다. " + +-#: ../jobviewer.py:1386 ++#: ../jobviewer.py:1374 + #, python-format + msgid "There was a problem processing document `%s' (job %d)." +-msgstr "" ++msgstr "`%s' 문서 (작업 %d)를 처리하는 도중 문제가 발생했습니다. " + + #. Give up and use the provided message untranslated. +-#: ../jobviewer.py:1392 ++#: ../jobviewer.py:1380 + #, python-format + msgid "There was a problem printing document `%s' (job %d): `%s'." +-msgstr "" ++msgstr "`%s' 문서 (작업 %d)를 인쇄하는 도중 문제가 발생했습니다: `%s'." + +-#: ../jobviewer.py:1399 ../jobviewer.py:1415 +-#, fuzzy ++#: ../jobviewer.py:1387 ../jobviewer.py:1403 + msgid "Print Error" +-msgstr "프린터 오류 " ++msgstr "인쇄 오류 " + +-#: ../jobviewer.py:1400 ++#: ../jobviewer.py:1388 + msgid "_Diagnose" +-msgstr "" ++msgstr "진단(_D) " + +-#: ../jobviewer.py:1421 ++#: ../jobviewer.py:1409 + #, python-format + msgid "The printer called `%s' has been disabled." +-msgstr "" ++msgstr "`%s'(이)라는 프린터는 비활성화되었습니다. " + + #: ../my-default-printer.py:137 ../my-default-printer.desktop.in.h:1 + msgid "Default Printer" +@@ -513,9 +508,8 @@ msgid "Default behavior" + msgstr "기본 프린터" + + #: ../ppdippstr.py:45 +-#, fuzzy + msgid "Authenticated" +-msgstr "인증 " ++msgstr "인증됨 " + + #: ../ppdippstr.py:50 ../system-config-printer.py:5839 + msgid "None" +@@ -596,7 +590,7 @@ msgstr "" + + #: ../ppdippstr.py:85 + msgid "Media source" +-msgstr "" ++msgstr "미디어 소스 " + + #: ../ppdippstr.py:86 + #, fuzzy +@@ -758,9 +752,8 @@ msgid "Set As De_fault" + msgstr "기본 설정(_S)" + + #: ../system-config-printer.py:397 +-#, fuzzy + msgid "_Create class" +-msgstr "원격 클래스" ++msgstr "클래스 생성(_C) " + + #: ../system-config-printer.py:399 + #, fuzzy +@@ -769,7 +762,7 @@ msgstr "새 프린터" + + #: ../system-config-printer.py:401 + msgid "_Add to Group" +-msgstr "" ++msgstr "그룹에 추가(_A) " + + #: ../system-config-printer.py:403 + msgid "Save Results as _Group" +@@ -924,14 +917,14 @@ msgstr "프린터 옵션" + #: ../system-config-printer.py:1905 + #, python-format + msgid "modifying class %s" +-msgstr "" ++msgstr "%s 클래스 수정 중 " + + #: ../system-config-printer.py:1907 ../system-config-printer.py:3001 + #: ../system-config-printer.py:3026 ../system-config-printer.py:6131 + #: ../system-config-printer.py:6143 ../system-config-printer.py:6161 +-#, fuzzy, python-format ++#, python-format + msgid "modifying printer %s" +-msgstr "프린터 설정" ++msgstr "%s 프린터 수정 " + + #: ../system-config-printer.py:1922 + msgid "This will delete this class!" +@@ -956,12 +949,11 @@ msgstr "기본 프린터 설정 " + + #: ../system-config-printer.py:2083 + msgid "Do you want to set this as the system-wide default printer?" +-msgstr "" ++msgstr "이를 시스템 전역 기본값 프린터로 설정하시겠습니까? " + + #: ../system-config-printer.py:2085 +-#, fuzzy + msgid "Set as the _system-wide default printer" +-msgstr "기본 프린터입니다" ++msgstr "시스템-전역 기본값 프린터로 설정(_S) " + + #: ../system-config-printer.py:2087 + msgid "_Clear my personal default setting" +@@ -1768,8 +1760,7 @@ msgid "Flow Control" + msgstr "흐름 제어" + + #: ../glade/NewPrinterWindow.glade.h:60 +-msgid "" +-"For the printer you have selected there are drivers available for download." ++msgid "For the printer you have selected there are drivers available for download." + msgstr "" + + #: ../glade/NewPrinterWindow.glade.h:61 +@@ -2429,8 +2420,7 @@ msgstr "새 프린터 이름" + + #: ../glade/PrinterPropertiesDialog.glade.h:124 + msgid "To add a new option, enter its name in the box below and click to add." +-msgstr "" +-"새 옵션을 추가하려면 아래 박스에 옵션 이름을 입력하고 추가 버튼을 클릭합니다." ++msgstr "새 옵션을 추가하려면 아래 박스에 옵션 이름을 입력하고 추가 버튼을 클릭합니다." + + #: ../glade/PrinterPropertiesDialog.glade.h:125 + msgid "Top margin:" +@@ -2542,8 +2532,7 @@ msgstr "원격 관리 허용 " + #: ../glade/ServerSettingsDialog.glade.h:3 + #, fuzzy + msgid "Allow _users to cancel any job (not just their own)" +-msgstr "" +-"사용자에게 (실행중인 자신의 작업뿐 만 아니라)실행중인 모든 작업의 취소를 허용" ++msgstr "사용자에게 (실행중인 자신의 작업뿐 만 아니라)실행중인 모든 작업의 취소를 허용" + + #: ../glade/ServerSettingsDialog.glade.h:4 + #, fuzzy +@@ -2551,14 +2540,12 @@ msgid "Allow printing from the _Internet + msgstr "다음의 사용자를 제외하고 모두 인쇄할 수 있습니다: " + + #: ../glade/ServerSettingsDialog.glade.h:5 +-#, fuzzy + msgid "Basic Server Settings" +-msgstr "기본 서버 세팅" ++msgstr "기본 서버 설정 " + + #: ../glade/ServerSettingsDialog.glade.h:6 +-#, fuzzy + msgid "Save _debugging information for troubleshooting" +-msgstr "장애 추적에 대한 오류 수정 정보를 저장" ++msgstr "문제 해결을 위해 디버깅 정보 저장(_D) " + + #: ../glade/ServerSettingsDialog.glade.h:7 + #, fuzzy +@@ -2566,18 +2553,16 @@ msgid "_Publish shared printers connecte + msgstr "이 시스템과 연결된 프린터 공유하기" + + #: ../glade/ServerSettingsDialog.glade.h:8 +-#, fuzzy + msgid "_Show printers shared by other systems" +-msgstr "다른 시스템과 공유된 프린터 보기" ++msgstr "다른 시스템에 의해 공유된 프린터 보기(_S) " + + #: ../glade/SMBBrowseDialog.glade.h:1 + msgid "SMB Browser" + msgstr "" + + #: ../glade/statusicon_popupmenu.glade.h:1 +-#, fuzzy + msgid "_Configure Printers" +-msgstr "프린터 설정" ++msgstr "프린터 설정(_C) " + + #: ../glade/statusicon_popupmenu.glade.h:2 + msgid "_Hide" +@@ -2668,14 +2653,13 @@ msgid "Printer '%s' has no ink left." + msgstr "프린터 '%s'에 잉크가 없습니다. " + + #: ../statereason.py:101 +-#, fuzzy + msgid "Printer off-line" +-msgstr "프린터 옵션" ++msgstr "프린터 오프라인 " + + #: ../statereason.py:102 +-#, fuzzy, python-format ++#, python-format + msgid "Printer `%s' is currently off-line." +-msgstr "프린터 '%s'에 용지가 없습니다." ++msgstr "현재 `%s' 프린터는 오프라인 상태입니다. " + + #: ../statereason.py:103 + msgid "Not connected?" +@@ -2691,9 +2675,9 @@ msgid "Printer error" + msgstr "프린터 오류" + + #: ../statereason.py:106 +-#, fuzzy, python-format ++#, python-format + msgid "There is a problem on printer `%s'." +-msgstr "프린터 '%s'의 뚜껑이 열려있습니다." ++msgstr "`%s' 프린터에 문제가 있습니다. " + + #: ../statereason.py:117 + msgid "Printer report" +@@ -2713,14 +2697,12 @@ msgid "Please wait" + msgstr "" + + #: ../timedops.py:106 ../timedops.py:175 +-#, fuzzy + msgid "Gathering information" +-msgstr "위치" ++msgstr "정보 수집 " + + #: ../ToolbarSearchEntry.py:73 +-#, fuzzy + msgid "_Filter:" +-msgstr "파일(_F)" ++msgstr "필터(_F): " + + #: ../troubleshoot/__init__.py:54 + msgid "Printing troubleshooter" +@@ -2749,14 +2731,12 @@ msgid "" + msgstr "" + + #: ../troubleshoot/CheckPPDSanity.py:44 ../applet.py:147 +-#, fuzzy + msgid "Install" +-msgstr "설치(_I)" ++msgstr "설치 " + + #: ../troubleshoot/CheckPPDSanity.py:96 +-#, fuzzy + msgid "Invalid PPD File" +-msgstr "PPD 파일 제공 " ++msgstr "잘못된 PPD 파일 " + + #: ../troubleshoot/CheckPPDSanity.py:106 + #, python-format +@@ -2767,14 +2747,13 @@ msgstr "" + + #. Perhaps cupstestppd is not in the path. + #: ../troubleshoot/CheckPPDSanity.py:112 +-#, fuzzy, python-format ++#, python-format + msgid "There is a problem with the PPD file for printer `%s'." +-msgstr "프린터 '%s'의 뚜껑이 열려있습니다." ++msgstr "`%s' 프린터의 PPD 파일에 문제가 있습니다. " + + #: ../troubleshoot/CheckPPDSanity.py:122 +-#, fuzzy + msgid "Missing Printer Driver" +-msgstr "프린터 드라이버가 없음" ++msgstr "프린터 드라이버가 없음 " + + #: ../troubleshoot/CheckPPDSanity.py:131 + #, fuzzy, python-format +@@ -2783,14 +2762,12 @@ msgstr "프린터 '%s'는 %s 패키지 + + #: ../troubleshoot/CheckPPDSanity.py:136 + #, fuzzy, python-format +-msgid "" +-"Printer `%s' requires the `%s' program but it is not currently installed." ++msgid "Printer `%s' requires the `%s' program but it is not currently installed." + msgstr "프린터 '%s'는 %s 패키지가 필요하나 이는 현재 설치되어 있지 않습니다." + + #: ../troubleshoot/ChooseNetworkPrinter.py:29 +-#, fuzzy + msgid "Choose Network Printer" +-msgstr "새 프린터" ++msgstr "네트워크 프린터 선택 " + + #: ../troubleshoot/ChooseNetworkPrinter.py:30 + msgid "" +@@ -2800,20 +2777,17 @@ msgstr "" + + #: ../troubleshoot/ChooseNetworkPrinter.py:39 + #: ../troubleshoot/ChoosePrinter.py:40 ../troubleshoot/DeviceListed.py:38 +-#, fuzzy + msgid "Information" +-msgstr "위치" ++msgstr "정보 " + + #: ../troubleshoot/ChooseNetworkPrinter.py:75 + #: ../troubleshoot/ChoosePrinter.py:64 ../troubleshoot/DeviceListed.py:70 +-#, fuzzy + msgid "Not listed" +-msgstr "접속되지 않음" ++msgstr "목록에 없음 " + + #: ../troubleshoot/ChoosePrinter.py:30 +-#, fuzzy + msgid "Choose Printer" +-msgstr "프린터 복사" ++msgstr "프린터 선택 " + + #: ../troubleshoot/ChoosePrinter.py:31 + msgid "" +@@ -2822,9 +2796,8 @@ msgid "" + msgstr "" + + #: ../troubleshoot/DeviceListed.py:30 +-#, fuzzy + msgid "Choose Device" +-msgstr "URI 장치 변경" ++msgstr "장치 선택 " + + #: ../troubleshoot/DeviceListed.py:31 + msgid "" +@@ -2834,7 +2807,7 @@ msgstr "" + + #: ../troubleshoot/ErrorLogCheckpoint.py:31 + msgid "Debugging" +-msgstr "" ++msgstr "디버깅 " + + #: ../troubleshoot/ErrorLogCheckpoint.py:32 + msgid "" +@@ -2864,7 +2837,7 @@ msgstr "" + + #: ../troubleshoot/Locale.py:29 + msgid "Incorrect Page Size" +-msgstr "" ++msgstr "잘못된 페이지 크기 " + + #: ../troubleshoot/Locale.py:30 + msgid "" +@@ -2873,29 +2846,24 @@ msgid "" + msgstr "" + + #: ../troubleshoot/Locale.py:43 +-#, fuzzy + msgid "Print job page size:" +-msgstr "테스트 페이지 인쇄" ++msgstr "인쇄 작업 페이지 크기: " + + #: ../troubleshoot/Locale.py:48 +-#, fuzzy + msgid "Printer page size:" +-msgstr "프린터 관련사항: " ++msgstr "프린터 페이지 크기: " + + #: ../troubleshoot/LocalOrRemote.py:26 +-#, fuzzy + msgid "Printer Location" +-msgstr "프린터 옵션" ++msgstr "프린터 위치 " + + #: ../troubleshoot/LocalOrRemote.py:27 +-#, fuzzy + msgid "Is the printer connected to this computer or available on the network?" +-msgstr "프린터가 병렬 포트에 연결되어 있습니다." ++msgstr "프린터가 컴퓨터에 연결되어 있습니까 아니면 네트워크에서 사용 가능합니까? " + + #: ../troubleshoot/LocalOrRemote.py:29 +-#, fuzzy + msgid "Locally connected printer" +-msgstr "정말로 프린터 %s(을)를 삭제하시겠습니까?" ++msgstr "로컬로 연결된 프린터 " + + #: ../troubleshoot/NetworkCUPSPrinterShared.py:28 + msgid "Queue Not Shared" +@@ -2906,18 +2874,17 @@ msgid "The CUPS printer on the server is + msgstr "" + + #: ../troubleshoot/PrinterStateReasons.py:29 +-#, fuzzy + msgid "Status Messages" +-msgstr "메세지" ++msgstr "상태 메세지" + + #: ../troubleshoot/PrinterStateReasons.py:30 + msgid "There are status messages associated with this queue." + msgstr "" + + #: ../troubleshoot/PrinterStateReasons.py:58 +-#, fuzzy, python-format ++#, python-format + msgid "The printer's state message is: `%s'." +-msgstr "프린터 관련사항: " ++msgstr "프린터 상태 메세지: `%s'." + + #: ../troubleshoot/PrinterStateReasons.py:83 + msgid "Errors are listed below:" +@@ -2928,9 +2895,8 @@ msgid "Warnings are listed below:" + msgstr "" + + #: ../troubleshoot/PrintTestPage.py:62 +-#, fuzzy + msgid "Test Page" +-msgstr "테스트 페이지 인쇄" ++msgstr "테스트 페이지 " + + #: ../troubleshoot/PrintTestPage.py:63 + msgid "" +@@ -2943,9 +2909,8 @@ msgid "Cancel All Jobs" + msgstr "" + + #: ../troubleshoot/PrintTestPage.py:81 +-#, fuzzy + msgid "Test" +-msgstr "다시 설정" ++msgstr "테스트 " + + #: ../troubleshoot/PrintTestPage.py:111 + msgid "Did the marked print jobs print correctly?" +@@ -3009,9 +2974,8 @@ msgid "" + msgstr "" + + #: ../troubleshoot/RemoteAddress.py:26 +-#, fuzzy + msgid "Remote Address" +-msgstr "원격 프린터" ++msgstr "원격 주소 " + + #: ../troubleshoot/RemoteAddress.py:27 + msgid "" +@@ -3020,9 +2984,8 @@ msgid "" + msgstr "" + + #: ../troubleshoot/RemoteAddress.py:35 +-#, fuzzy + msgid "Server name:" +-msgstr "사용자 이름:" ++msgstr "서버 이름:" + + #: ../troubleshoot/RemoteAddress.py:42 + msgid "Server IP address:" +@@ -3044,9 +3007,8 @@ msgid "Check Server Firewall" + msgstr "" + + #: ../troubleshoot/ServerFirewalled.py:27 +-#, fuzzy + msgid "It is not possible to connect to the server." +-msgstr "CUPS 서버로 연결하는 도중 오류가 발생했습니다." ++msgstr "서버로 연결할 수 없습니다. " + + #: ../troubleshoot/ServerFirewalled.py:42 + #, python-format +@@ -3092,9 +3054,8 @@ msgid "Missing printer driver" + msgstr "프린터 드라이버가 없음" + + #: ../applet.py:140 +-#, fuzzy + msgid "Install printer driver" +-msgstr "드라이버 설치" ++msgstr "프린터 드라이버 설치 " + + #: ../applet.py:141 + #, python-format +@@ -3107,9 +3068,8 @@ msgid "`%s' is ready for printing." + msgstr "`%s'이(가) 인쇄할 준비가 되어 있습니다." + + #: ../applet.py:156 ../applet.py:167 +-#, fuzzy + msgid "Print test page" +-msgstr "테스트 페이지 인쇄" ++msgstr "테스트 페이지 인쇄 " + + #: ../applet.py:158 + msgid "Configure" +@@ -3144,8 +3104,3 @@ msgstr "인쇄 작업 관리" + msgid "Select default printer" + msgstr "기본 프린터 선택" + +-#~ msgid "Show _printer status" +-#~ msgstr "프린터 상태 보기(_P)" +- +-#~ msgid "Printer status" +-#~ msgstr "프린터 상태" +diff -up system-config-printer-1.1.3/system-config-printer.py.git-1.1.x system-config-printer-1.1.3/system-config-printer.py +--- system-config-printer-1.1.3/system-config-printer.py.git-1.1.x 2009-02-03 12:30:29.000000000 +0000 ++++ system-config-printer-1.1.3/system-config-printer.py 2009-02-05 10:52:40.000000000 +0000 +@@ -2003,7 +2003,7 @@ class GUI(GtkGUI, monitor.Watcher): + self.cups._end_operation () + self.changed = set() # of options + +- if not self.__dict__.has_key ("server_settings"): ++ if not self.cups._use_pk and not self.__dict__.has_key ("server_settings"): + # We can authenticate with the server correctly at this point, + # but we have never fetched the server settings to see whether + # the server is publishing shared printers. Fetch the settings diff --git a/system-config-printer.spec b/system-config-printer.spec index 77e5cee..68f6832 100644 --- a/system-config-printer.spec +++ b/system-config-printer.spec @@ -7,13 +7,14 @@ Summary: A printer administration tool Name: system-config-printer Version: 1.1.3 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2+ URL: http://cyberelk.net/tim/software/system-config-printer/ Group: System Environment/Base Source0: http://cyberelk.net/tim/data/system-config-printer/1.1/system-config-printer-%{version}.tar.bz2 Source1: http://cyberelk.net/tim/data/pycups/pycups-%{pycups_version}.tar.bz2 Source2: http://cyberelk.net/tim/data/pysmbc/pysmbc-%{pysmbc_version}.tar.bz2 +Patch1: system-config-printer-git-1.1.x.patch BuildRequires: cups-devel >= 1.2 BuildRequires: python-devel >= 2.4 @@ -62,6 +63,7 @@ the configuration tool. %prep %setup -q -a 1 -a 2 +%patch1 -p1 -b .git-1.1.x %build %configure @@ -162,6 +164,9 @@ rm -rf %buildroot exit 0 %changelog +* Thu Feb 5 2009 Tim Waugh 1.1.3-2 +- Added in cups-pk-helper support from upstream. + * Tue Feb 3 2009 Tim Waugh 1.1.3-1 - Requires python-sexy. - 1.1.3.