# translation of libDrakX-standalone-bs.po to Bosnian # translation of bs.po to Bosanski # translation of DrakX-bs.po to Bosanski # Copyright (C) 2001, 2003, 2004, 2005, 2006. Free Software Foundation, Inc. # Amila Akagić , 06. 2001. # Vedran Ljubovic , 2002, 2003, 2004, 2005, 2006. # msgid "" msgstr "" "Project-Id-Version: libDrakX-standalone-bs\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2009-02-13 16:30+0100\n" "PO-Revision-Date: 2006-09-09 19:47+0200\n" "Last-Translator: Vedran Ljubovic \n" "Language-Team: Bosnian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.10.2\n" #: drakauth:24 drakauth:26 draksec:163 #, c-format msgid "Authentication" msgstr "Baza korisnika" #: drakauth:37 drakclock:111 drakclock:125 drakdvb:72 drakfont:213 #: drakfont:226 drakfont:264 draksplash:202 finish-install:119 logdrake:170 #: logdrake:445 logdrake:450 scannerdrake:59 scannerdrake:101 scannerdrake:142 #: scannerdrake:200 scannerdrake:259 scannerdrake:729 scannerdrake:740 #: scannerdrake:879 scannerdrake:890 scannerdrake:960 #, c-format msgid "Error" msgstr "Greška" #: drakboot:53 #, c-format msgid "No bootloader found, creating a new configuration" msgstr "Nije pronađen bootloader, pravim novu konfiguraciju" #: drakboot:88 harddrake2:197 harddrake2:198 logdrake:71 #, c-format msgid "/_File" msgstr "/_Datoteka" #: drakboot:89 logdrake:77 #, c-format msgid "/File/_Quit" msgstr "/Datoteka/_Izlaz" #: drakboot:89 harddrake2:198 logdrake:77 #, c-format msgid "Q" msgstr "Q" #: drakboot:129 #, c-format msgid "Text only" msgstr "Samo tekst" #: drakboot:130 #, c-format msgid "Verbose" msgstr "Opširno" #: drakboot:131 #, c-format msgid "Silent" msgstr "Bez ispisa" #: drakboot:137 drakbug:254 drakdvb:57 drakfont:682 drakperm:376 drakperm:386 #: drakups:27 harddrake2:516 localedrake:43 notify-x11-free-driver-switch:15 #: scannerdrake:51 scannerdrake:54 scannerdrake:297 scannerdrake:302 #: scannerdrake:954 #, c-format msgid "Warning" msgstr "Upozorenje" #: drakboot:138 #, c-format msgid "" "Your system bootloader is not in framebuffer mode. To activate graphical " "boot, select a graphic video mode from the bootloader configuration tool." msgstr "" "Vaš sistemski bootloader nije u framebuffer modu. Da aktivirate grafički " "boot, izaberite grafički video režim iz alata za podešavanje bootloadera." #: drakboot:139 #, c-format msgid "Do you want to configure it now?" msgstr "Želite li ga sada podesiti ?" #: drakboot:148 #, c-format msgid "Install themes" msgstr "Instaliraj teme" #: drakboot:150 #, c-format msgid "Graphical boot theme selection" msgstr "Izbor grafičke boot teme" #: drakboot:153 #, c-format msgid "Graphical boot mode:" msgstr "Režim grafičkog pokretanja:" #: drakboot:155 #, c-format msgid "Theme" msgstr "Tema" #: drakboot:158 #, c-format msgid "" "Display theme\n" "under console" msgstr "" "Tema prikaza\n" "pod konzolom" #: drakboot:163 draksplash:26 #, c-format msgid "Create new theme" msgstr "Napravi novu temu" #: drakboot:195 #, c-format msgid "Default user" msgstr "Korisnik" #: drakboot:196 #, c-format msgid "Default desktop" msgstr "Desktop" #: drakboot:199 #, c-format msgid "No, I do not want autologin" msgstr "Ne, ne želim da se automatski prijavim" #: drakboot:200 #, c-format msgid "Yes, I want autologin with this (user, desktop)" msgstr "" "Da, želim da se automatski prijavim sa ovim vrijednostima (korisnik, desktop)" #: drakboot:207 #, c-format msgid "System mode" msgstr "Sistemske opcije" #: drakboot:210 #, c-format msgid "Launch the graphical environment when your system starts" msgstr "Pokreni X-Window sistem na startu" #: drakboot:262 #, c-format msgid "Boot Style Configuration" msgstr "Konfiguracija stila boota" #: drakboot:264 drakboot:268 #, c-format msgid "Video mode" msgstr "Video režim" #: drakboot:265 #, c-format msgid "" "Please choose a video mode, it will be applied to each of the boot entries " "selected below.\n" "Be sure your video card supports the mode you choose." msgstr "" "Molim izaberite video režim, on će biti primjenjen na svaku od boot stavki " "izabranih ispod.\n" "Provjerite da li vaša video kartica podržava taj režim prije nego što " "izaberete!" #: drakbug:65 drakbug:152 #, c-format msgid "The \"%s\" program has crashed with the following error:" msgstr "" #: drakbug:76 #, c-format msgid "Mandriva Linux Bug Report Tool" msgstr "Mandriva Linux alat za prijavu bugova" #: drakbug:81 #, c-format msgid "Mandriva Linux Control Center" msgstr "Mandriva Linux Kontrolni centar" #: drakbug:82 #, c-format msgid "First Time Wizard" msgstr "Čarobnjak za prvo pokretanje" #: drakbug:83 #, c-format msgid "Synchronization tool" msgstr "Alat za sinhroniziranje" #: drakbug:84 drakbug:216 #, c-format msgid "Standalone Tools" msgstr "Samostalni alati" #: drakbug:86 drakbug:87 #, c-format msgid "Mandriva Online" msgstr "Mandriva Online" #: drakbug:88 #, c-format msgid "Remote Control" msgstr "Udaljena kontrola" #: drakbug:89 #, c-format msgid "Software Manager" msgstr "Upravljanje programima" #: drakbug:90 #, c-format msgid "Windows Migration tool" msgstr "Alat za Windows migraciju" #: drakbug:91 #, c-format msgid "Configuration Wizards" msgstr "Čarobnjaci za podešavanje" #: drakbug:113 #, c-format msgid "Select Mandriva Tool:" msgstr "Izaberite Mandriva alat:" #: drakbug:114 #, c-format msgid "" "or Application Name\n" "(or Full Path):" msgstr "" "ili Ime programa\n" "(ili puni put):" #: drakbug:117 #, c-format msgid "Find Package" msgstr "Nađi paket" #: drakbug:119 #, c-format msgid "Package: " msgstr "Paket:" #: drakbug:120 #, c-format msgid "Kernel:" msgstr "Kernel:" #: drakbug:151 #, c-format msgid "The \"%s\" program has segfaulted with the following error:" msgstr "" #: drakbug:155 #, c-format msgid "Its GDB trace is:" msgstr "" #: drakbug:158 #, fuzzy, c-format msgid "" "To submit a bug report, click on the report button. \n" "This will open a web browser window on %s where you'll find a form to fill " "in. The information displayed above will be transferred to that server" msgstr "" "Da prijavite bug, kliknite na dugme Prijavi.\n" "Ovo će otvoriti prozor web browsera na adresi %s gdje ćete pronaći formular " "koji treba popuniti. Gore prikazane informacije će biti poslane na taj " "server.\n" "Korisne stvari koje možete uključiti u vaš izvještaj su izlaz naredbe " "lspcidrake -vdrake -v, verzija kernela i sadržaj datoteke /proc/cpuinfo." #: drakbug:160 #, c-format msgid "" "It would be very useful to attach to your report the output of the following " "command: %s." msgid_plural "" "Things useful to attach to your report are the output of the following " "commands: %s." msgstr[0] "" msgstr[1] "" #: drakbug:163 #, c-format msgid "'%s'" msgstr "" #: drakbug:166 #, fuzzy, c-format msgid "You should also attach the following files: %s as well as %s." msgstr "Trebate instalirati sljedeće pakete: %s" #: drakbug:173 #, c-format msgid "Please describe what you were doing when it crashed:" msgstr "" #: drakbug:185 drakperm:136 #, c-format msgid "Help" msgstr "Pomoć" #: drakbug:189 #, c-format msgid "Report" msgstr "Izvještaj" #: drakbug:190 drakfont:506 #, c-format msgid "Close" msgstr "Zatvori" #: drakbug:223 #, c-format msgid "Not installed" msgstr "Nije instaliran" #: drakbug:236 #, c-format msgid "Package not installed" msgstr "Paket nije instaliran" #: drakbug:255 #, c-format msgid "" "You must type in what you were doing when this bug happened in order to " "enable us to reproduce this bug and to increase the odds of fixing it" msgstr "" #: drakbug:256 #, c-format msgid "Thanks." msgstr "" #: drakclock:30 draksec:169 #, c-format msgid "Date, Clock & Time Zone Settings" msgstr "Postavke datuma, sata i vremenske zone" #: drakclock:39 #, c-format msgid "not defined" msgstr "nije definisana" #: drakclock:41 #, c-format msgid "Change Time Zone" msgstr "Promijenite vremensku zonu" #: drakclock:44 #, c-format msgid "Timezone - DrakClock" msgstr "Vremenska zona - DrakClock" #: drakclock:44 #, c-format msgid "Which is your timezone?" msgstr "Koja je vaša vremenska zona?" #: drakclock:45 #, c-format msgid "GMT - DrakClock" msgstr "GMT - DrakClock" #: drakclock:45 #, c-format msgid "Is your hardware clock set to GMT?" msgstr "Da li je vaš hardverski sat podešen na GMT?" #: drakclock:70 #, c-format msgid "Network Time Protocol" msgstr "Network Time Protocol" #: drakclock:72 #, c-format msgid "" "Your computer can synchronize its clock\n" " with a remote time server using NTP" msgstr "" "Vaš računar može sinhronizovati svoj sat\n" "sa vremenskim serverom koristeći NTP" #: drakclock:73 #, c-format msgid "Enable Network Time Protocol" msgstr "Uključi Network Time Protocol" #: drakclock:81 #, c-format msgid "Server:" msgstr "Server:" #: drakclock:95 #, c-format msgid "Timezone" msgstr "Vremenska zona" #: drakclock:111 #, c-format msgid "Please enter a valid NTP server address." msgstr "Molim unesite ispravnu adresu NTP servera." #: drakclock:126 #, c-format msgid "Could not synchronize with %s." msgstr "Ne mogu sinhronizovati sa %s." #: drakclock:127 drakdvb:122 draksplash:125 logdrake:175 scannerdrake:491 #, c-format msgid "Quit" msgstr "Izlaz" #: drakclock:128 #, c-format msgid "Retry" msgstr "Pokušaj ponovo" #: drakclock:151 drakclock:161 #, c-format msgid "Reset" msgstr "Poništi" #: drakdvb:30 #, fuzzy, c-format msgid "DVB" msgstr "DVD" #: drakdvb:39 harddrake2:100 #, c-format msgid "Channel" msgstr "Kanal" #: drakdvb:57 #, c-format msgid "%s already exists and its contents will be lost" msgstr "" #: drakdvb:72 #, c-format msgid "Could not get the list of available channels" msgstr "" #: drakdvb:78 draksec:73 drakups:99 harddrake2:370 scannerdrake:66 #: scannerdrake:70 scannerdrake:78 scannerdrake:319 scannerdrake:368 #: scannerdrake:504 scannerdrake:508 scannerdrake:530 service_harddrake:264 #, c-format msgid "Please wait" msgstr "Molim sačekajte" #: drakdvb:82 #, c-format msgid "Detecting DVB channels, this will take a few minutes" msgstr "" #: drakdvb:83 drakfont:572 drakfont:652 drakfont:736 draksplash:213 #: drakups:217 logdrake:175 #, c-format msgid "Cancel" msgstr "Odustani" #: drakdvb:121 #, fuzzy, c-format msgid "Detect Channels" msgstr "Kanal" #: drakdvb:123 #, fuzzy, c-format msgid "View Channel" msgstr "Kanal" #: drakedm:41 #, c-format msgid "GDM (GNOME Display Manager)" msgstr "GDM (GNOME Display Manager)" #: drakedm:42 #, c-format msgid "KDM (KDE Display Manager)" msgstr "KDM (KDE Display Manager)" #: drakedm:43 #, c-format msgid "XDM (X Display Manager)" msgstr "XDM (X Display Manager)" #: drakedm:54 #, c-format msgid "Choosing a display manager" msgstr "Izbor display managera" #: drakedm:55 #, c-format msgid "" "X11 Display Manager allows you to graphically log\n" "into your system with the X Window System running and supports running\n" "several different X sessions on your local machine at the same time." msgstr "" "X11 Display Manager vam omogućuje da se grafički prijavite na vaš sistem uz " "pokretanje X Window Systema, a podržava i nekoliko različitih X sesija na " "vašem lokalnom računaru u isto vrijeme." #: drakedm:74 #, c-format msgid "The change is done, do you want to restart the dm service?" msgstr "Izmjena je primijenjena, želite li sada restartovati servis dm?" #: drakedm:75 #, c-format msgid "" "You are going to close all running programs and lose your current session. " "Are you really sure that you want to restart the dm service?" msgstr "" "Sada ćete zatvoriti sve pokrenute programe i izgubiti vašu sesiju. Da li ste " "stvarno sigurni da želite restartovati dm servis ?" #: drakfont:187 #, c-format msgid "Search installed fonts" msgstr "Pretraži instalirane fontove" #: drakfont:189 #, c-format msgid "Unselect fonts installed" msgstr "Isključi instalirane fontove" #: drakfont:213 #, c-format msgid "No fonts found" msgstr "Nije pronađen nijedan font" #: drakfont:217 #, c-format msgid "parse all fonts" msgstr "obradi sve fontove" #: drakfont:222 drakfont:263 drakfont:338 drakfont:379 drakfont:383 #: drakfont:409 drakfont:427 drakfont:435 #, c-format msgid "done" msgstr "gotovo" #: drakfont:226 #, c-format msgid "Could not find any font in your mounted partitions" msgstr "Ne mogu naći nijedan font na montiranim particijama" #: drakfont:261 #, c-format msgid "Reselect correct fonts" msgstr "Ponovo izaberi ispravne fontove" #: drakfont:264 #, c-format msgid "Could not find any font.\n" msgstr "Ne mogu naći nijedan font.\n" #: drakfont:274 #, c-format msgid "Search for fonts in installed list" msgstr "Pretraži fontove na listi instaliranih" #: drakfont:298 #, c-format msgid "%s fonts conversion" msgstr "konverzija %s fontova" #: drakfont:336 #, c-format msgid "Fonts copy" msgstr "Kopiranje fontova" #: drakfont:339 #, c-format msgid "True Type fonts installation" msgstr "Instalacija True Type fontova" #: drakfont:347 #, c-format msgid "please wait during ttmkfdir..." msgstr "molim sačekajte tokom ttmkfdir..." #: drakfont:348 #, c-format msgid "True Type install done" msgstr "Završena True Type instalacija" #: drakfont:354 drakfont:369 #, c-format msgid "type1inst building" msgstr "type1inst kreiranje" #: drakfont:363 #, c-format msgid "Ghostscript referencing" msgstr "Ghostscript referenciranje" #: drakfont:380 #, c-format msgid "Suppress Temporary Files" msgstr "Onemogući privremene datoteke" #: drakfont:425 drakfont:431 #, c-format msgid "Suppress Fonts Files" msgstr "Onemogući datoteke fontova" #: drakfont:439 #, c-format msgid "" "Before installing any fonts, be sure that you have the right to use and " "install them on your system.\n" "\n" "You can install the fonts the normal way. In rare cases, bogus fonts may " "hang up your X Server." msgstr "" "Before installing any fonts, be sure that you have the right to use and " "install them on your system.\n" "\n" "You can install the fonts the normal way. In rare cases, bogus fonts may " "hang up your X Server." #: drakfont:478 #, c-format msgid "Font Installation" msgstr "Instalacija fontova" #: drakfont:489 #, c-format msgid "DrakFont" msgstr "DrakFont" #: drakfont:490 drakfont:642 #, c-format msgid "Font List" msgstr "Lista fontova" #: drakfont:493 #, c-format msgid "Get Windows Fonts" msgstr "Preuzmi Windows fontove" #: drakfont:499 #, c-format msgid "About" msgstr "O programu" #: drakfont:500 drakfont:541 #, c-format msgid "Options" msgstr "Opcije" #: drakfont:501 drakfont:721 #, c-format msgid "Uninstall" msgstr "Deinstaliraj" #: drakfont:502 #, c-format msgid "Import" msgstr "Uvezi" #: drakfont:520 #, c-format msgid "Drakfont" msgstr "Drakfont" #: drakfont:522 harddrake2:235 #, c-format msgid "Copyright (C) %s by Mandriva" msgstr "Copyright (C) %s Mandriva" #: drakfont:524 #, c-format msgid "Font installer." msgstr "Instalacija fontova." #: drakfont:526 harddrake2:239 #, c-format msgid "Mandriva Linux" msgstr "Mandriva Linux" #. -PO: put here name(s) and email(s) of translator(s) (eg: "John Smith ") #. -PO: put here name(s) and email(s) of translator(s) (eg: "John Smith ") #: drakfont:533 harddrake2:244 #, c-format msgid "_: Translator(s) name(s) & email(s)\n" msgstr "Vedran Ljubovic \n" #: drakfont:543 #, c-format msgid "Choose the applications that will support the fonts:" msgstr "Izaberite programe koji će podržavati fontove :" #: drakfont:554 #, c-format msgid "Ghostscript" msgstr "Ghostscript" #: drakfont:555 #, c-format msgid "OpenOffice.org" msgstr "OpenOffice.org" #: drakfont:556 #, c-format msgid "Abiword" msgstr "Abiword" #: drakfont:557 #, c-format msgid "Generic Printers" msgstr "Razni štampači" #: drakfont:562 drakfont:572 draksplash:213 drakups:210 #, c-format msgid "Ok" msgstr "U redu" #: drakfont:571 #, c-format msgid "Select the font file or directory and click on 'Add'" msgstr "Izaberite font datoteku ili direktorij i kliknite na 'Dodaj'" #: drakfont:572 #, c-format msgid "File Selection" msgstr "Izbor datoteka" #: drakfont:576 #, c-format msgid "Fonts" msgstr "Slova" #: drakfont:640 draksec:165 #, c-format msgid "Import fonts" msgstr "Uvoz fontova" #: drakfont:646 drakups:299 drakups:361 drakups:381 #, c-format msgid "Add" msgstr "Dodaj" #: drakfont:647 drakfont:735 drakups:301 drakups:363 drakups:383 #, c-format msgid "Remove" msgstr "Ukloni" #: drakfont:653 #, c-format msgid "Install" msgstr "Instalacija" #: drakfont:684 #, c-format msgid "Are you sure you want to uninstall the following fonts?" msgstr "Da li ste sigurni da želite deinstalirati sljedeće fontove?" #: drakfont:688 draksec:60 harddrake2:324 #, c-format msgid "Yes" msgstr "Da" #: drakfont:690 draksec:59 harddrake2:325 #, c-format msgid "No" msgstr "Ne" #: drakfont:729 #, c-format msgid "Unselect All" msgstr "Ništa izabrano" #: drakfont:732 #, c-format msgid "Select All" msgstr "Sve izabrano" #: drakfont:749 #, c-format msgid "Importing fonts" msgstr "Uvoz fontova" #: drakfont:753 drakfont:773 #, c-format msgid "Initial tests" msgstr "Probni inicijali" #: drakfont:754 #, c-format msgid "Copy fonts on your system" msgstr "Kopiraj fontove na sistem" #: drakfont:755 #, c-format msgid "Install & convert Fonts" msgstr "Instaliraj i konvertuj fontove" #: drakfont:756 #, c-format msgid "Post Install" msgstr "Post Install" #: drakfont:768 #, fuzzy, c-format msgid "Removing fonts" msgstr "Uvoz fontova" #: drakfont:774 #, c-format msgid "Remove fonts on your system" msgstr "Pobriši fontove sa mog sistema" #: drakfont:775 #, c-format msgid "Post Uninstall" msgstr "Post Uninstall" #: drakhelp:17 #, c-format msgid "" " drakhelp 0.1\n" "Copyright (C) %s Mandriva.\n" "This is free software and may be redistributed under the terms of the GNU " "GPL.\n" "\n" "Usage: \n" msgstr "" " drakhelp 0.1\n" "Copyright (C) %s Mandriva.\n" "Ovo je slobodan softver i može se distribuirati pod uslovima GNU GPLa.\n" "\n" "Upotreba: \n" #: drakhelp:22 #, c-format msgid " --help - display this help \n" msgstr " --help - prikazuje ovu pomoć \n" #: drakhelp:23 #, c-format msgid "" " --id - load the html help page which refers to id_label\n" msgstr "" " --id - učitaj HTML help stranicu koja se odnosi na " "id_label\n" #: drakhelp:24 #, c-format msgid "" " --doc - link to another web page ( for WM welcome " "frontend)\n" msgstr "" " --doc - link na drugu web stranicu ( za WM pozdravni " "ekran)\n" #: drakhelp:52 #, c-format msgid "Mandriva Linux Help Center" msgstr "Mandriva Linux Centar za pomoć" #: drakhelp:52 #, c-format msgid "No Help entry for %s\n" msgstr "Nema Pomoći za %s\n" #: drakperm:23 #, c-format msgid "System settings" msgstr "Sistemske postavke" #: drakperm:24 #, c-format msgid "Custom settings" msgstr "Vlastite postavke" #: drakperm:25 #, c-format msgid "Custom & system settings" msgstr "Vlastite i sistemske postavke" #: drakperm:33 #, c-format msgid "Security Permissions" msgstr "Sigurnosne permisije" #: drakperm:45 #, c-format msgid "Editable" msgstr "Izmjenljivo" #: drakperm:50 drakperm:320 #, c-format msgid "Path" msgstr "Staza" #: drakperm:50 drakperm:249 #, c-format msgid "User" msgstr "Korisnik" #: drakperm:50 drakperm:249 #, c-format msgid "Group" msgstr "Grupa" #: drakperm:50 drakperm:109 drakperm:332 draksec:180 #, c-format msgid "Permissions" msgstr "Privilegije" #: drakperm:60 #, c-format msgid "Add a new rule" msgstr "Dodaj novo pravilo" #: drakperm:67 drakperm:102 drakperm:128 #, c-format msgid "Edit current rule" msgstr "Izmijeni trenutno pravilo" #: drakperm:110 #, c-format msgid "" "Here you can see files to use in order to fix permissions, owners, and " "groups via msec.\n" "You can also edit your own rules which will owerwrite the default rules." msgstr "" "Ovdje možete pregledati datoteke koje se koriste radi promjene privilegija, " "vlasnika i grupa putem msec-a.\n" "Možete također stvoriti vaša vlastita pravila koja će prepisati ranije " "podešena pravila." #: drakperm:112 #, c-format msgid "" "The current security level is %s.\n" "Select permissions to see/edit" msgstr "" "Trenutni nivo sigurnisti je %s.\n" "Izaberite koje privilegije želite vidjeti/izmijeniti" #: drakperm:124 #, c-format msgid "Up" msgstr "Gore" #: drakperm:124 #, c-format msgid "Move selected rule up one level" msgstr "Pomjeri izabrano pravilo za jedan nivo gore" #: drakperm:125 #, c-format msgid "Down" msgstr "Dolje" #: drakperm:125 #, c-format msgid "Move selected rule down one level" msgstr "Pomjeri izabrano pravilo dole za jedan nivo" #: drakperm:126 #, c-format msgid "Add a rule" msgstr "Dodaj pravilo" #: drakperm:126 #, c-format msgid "Add a new rule at the end" msgstr "Dodaj novo pravilo na kraj" #: drakperm:127 #, c-format msgid "Delete" msgstr "Obriši" #: drakperm:127 #, c-format msgid "Delete selected rule" msgstr "Obriši izabrano pravilo" #: drakperm:128 drakups:300 drakups:362 drakups:382 #, c-format msgid "Edit" msgstr "Izmijeni" #: drakperm:241 #, c-format msgid "browse" msgstr "pregledaj" #: drakperm:246 #, c-format msgid "user" msgstr "korisnik" #: drakperm:246 #, c-format msgid "group" msgstr "grupa" #: drakperm:246 #, c-format msgid "other" msgstr "ostali" #: drakperm:249 #, c-format msgid "Other" msgstr "Ostalo" #: drakperm:251 #, c-format msgid "Read" msgstr "Čitaj" #. -PO: here %s will be either "user", "group" or "other" #: drakperm:254 #, c-format msgid "Enable \"%s\" to read the file" msgstr "Omogući \"%s\" da čita datoteku" #: drakperm:258 #, c-format msgid "Write" msgstr "Zapiši" #. -PO: here %s will be either "user", "group" or "other" #: drakperm:261 #, c-format msgid "Enable \"%s\" to write the file" msgstr "Omogući \"%s\" da piše u datoteku" #: drakperm:265 #, c-format msgid "Execute" msgstr "Izvrši" #. -PO: here %s will be either "user", "group" or "other" #: drakperm:268 #, c-format msgid "Enable \"%s\" to execute the file" msgstr "Uključite \"%s\" da izvršite datoteku" #: drakperm:271 #, c-format msgid "Sticky-bit" msgstr "Sticky-bit" #: drakperm:271 #, c-format msgid "" "Used for directory:\n" " only owner of directory or file in this directory can delete it" msgstr "" "Koristi se za direktorij:\n" " samo vlasnik tog direktorija ili datoteke u ovom direktoriju ga može " "obrisati" #: drakperm:272 #, c-format msgid "Set-UID" msgstr "Set-UID" #: drakperm:272 #, c-format msgid "Use owner id for execution" msgstr "Koristi id vlasnika za izvršavanje" #: drakperm:273 #, c-format msgid "Set-GID" msgstr "Set-GID" #: drakperm:273 #, c-format msgid "Use group id for execution" msgstr "Koristi id grupe za izvršavanje" #: drakperm:290 #, c-format msgid "User:" msgstr "Korisnik :" #: drakperm:291 #, c-format msgid "Group:" msgstr "Grupa :" #: drakperm:295 #, c-format msgid "Current user" msgstr "Trenutni korisnik" #: drakperm:296 #, c-format msgid "When checked, owner and group will not be changed" msgstr "Kada je uključeno, vlasnik i grupa se ne mogu promijeniti" #: drakperm:306 #, c-format msgid "Path selection" msgstr "Izbor staze" #: drakperm:326 #, c-format msgid "Property" msgstr "Osobina" #: drakperm:376 #, c-format msgid "" "The first character of the path must be a slash (\"/\"):\n" "\"%s\"" msgstr "" "Prvi karakter puta mora biti slash (\"/\"):\n" "\"%s\"" #: drakperm:386 #, c-format msgid "Both the username and the group must valid!" msgstr "I korisničko ime i grupa moraju biti ispravni!" #: drakperm:387 #, c-format msgid "User: %s" msgstr "Korisnik: %s" #: drakperm:388 #, c-format msgid "Group: %s" msgstr "Grupa: %s" #: draksec:54 #, c-format msgid "ALL" msgstr "SVE" #: draksec:55 #, c-format msgid "LOCAL" msgstr "LOCAL" #: draksec:56 #, c-format msgid "NONE" msgstr "NIŠTA" #: draksec:57 #, c-format msgid "Default" msgstr "Default" #: draksec:58 #, c-format msgid "Ignore" msgstr "Ignoriši" #: draksec:91 #, c-format msgid "Security Level and Checks" msgstr "Nivo sigurnosti i provjere" #: draksec:114 #, c-format msgid "Configure authentication required to access Mandriva tools" msgstr "" #: draksec:117 #, c-format msgid "No password" msgstr "Bez šifre" #: draksec:118 #, c-format msgid "Root password" msgstr "" #: draksec:119 #, c-format msgid "User password" msgstr "" #: draksec:149 draksec:203 #, c-format msgid "Software Management" msgstr "Programi" #: draksec:150 #, fuzzy, c-format msgid "Mandriva Update" msgstr "Mandriva Online" #: draksec:151 #, c-format msgid "Software Media Manager" msgstr "Upravitelj medijima softvera" #: draksec:152 #, c-format msgid "Configure 3D Desktop effects" msgstr "Podesite 3D desktop efekte" #: draksec:153 #, fuzzy, c-format msgid "Graphical Server Configuration" msgstr "Podešavanje Mail obavijesti" #: draksec:154 #, fuzzy, c-format msgid "Mouse Configuration" msgstr "Ručno podešavanje" #: draksec:155 #, fuzzy, c-format msgid "Keyboard Configuration" msgstr "Podešavanje hardvera" #: draksec:156 #, fuzzy, c-format msgid "UPS Configuration" msgstr "Podešavanje UPS drajvera" #: draksec:157 #, fuzzy, c-format msgid "Network Configuration" msgstr "Postavke upozorenja" #: draksec:158 #, c-format msgid "Hosts definitions" msgstr "Hosts definicije" #: draksec:159 #, fuzzy, c-format msgid "Network Center" msgstr "Mreža i Internet" #: draksec:160 #, c-format msgid "VPN" msgstr "" #: draksec:161 #, c-format msgid "Proxy Configuration" msgstr "Podešavanje proxy-ja" #: draksec:162 #, fuzzy, c-format msgid "Connection Sharing" msgstr "Konekcija" #: draksec:164 #, c-format msgid "Backups" msgstr "Backup" #: draksec:166 logdrake:52 #, c-format msgid "Logs" msgstr "Logovi" #: draksec:167 #, c-format msgid "Services" msgstr "Servisi" #: draksec:168 #, fuzzy, c-format msgid "Users" msgstr "Korisnik" #: draksec:170 #, fuzzy, c-format msgid "Boot Configuration" msgstr "Postavke upozorenja" #: draksec:204 #, c-format msgid "Hardware" msgstr "Hardware" #: draksec:205 #, fuzzy, c-format msgid "Network" msgstr "Mrežne opcije" #: draksec:206 #, c-format msgid "System" msgstr "Sistem" #: draksec:207 #, c-format msgid "Boot" msgstr "Boot" #: draksound:48 #, c-format msgid "No Sound Card detected!" msgstr "Nije izabrana zvučna kartica!" #. -PO: keep the double empty lines between sections, this is formatted a la LaTeX #: draksound:51 #, c-format msgid "" "No Sound Card has been detected on your machine. Please verify that a Linux-" "supported Sound Card is correctly plugged in.\n" "\n" "\n" "You can visit our hardware database at:\n" "\n" "\n" "http://www.mandrivalinux.com/en/hardware.php3" msgstr "" "Nije pronađena nijedna zvučna kartica na vašoj mašini. Molim provjerite da " "li je ispravno spojena zvučna kartica koja je podržana pod Linuxom.\n" "\n" "\n" "Možete posjetiti našu bazu hardvera na:\n" "\n" "\n" "http://www.mandrivalinux.com/en/hardware.php3" #: draksound:58 #, c-format msgid "" "\n" "\n" "\n" "Note: if you've an ISA PnP sound card, you'll have to use the alsaconf or " "the sndconfig program. Just type \"alsaconf\" or \"sndconfig\" in a console." msgstr "" "\n" "\n" "\n" "Napomena: ako imate ISA PnP zvučnu karticu, moraćete koristiti alsaconf ili " "sndconfig program. Samo ukucajte \"alsaconf\" ili \"sndconfig\" na konzoli." #: draksplash:33 #, c-format msgid "X coordinate of text box" msgstr "X koordinata tekstualnog polja" #: draksplash:34 #, c-format msgid "Y coordinate of text box" msgstr "Y koordinata tekstualnog polja" #: draksplash:35 #, c-format msgid "Text box width" msgstr "Širina tekstualnog polja" #: draksplash:36 #, c-format msgid "Text box height" msgstr "Visina tekstualnog polja" #: draksplash:37 #, c-format msgid "" "The progress bar X coordinate\n" "of its upper left corner" msgstr "" "X koordinata indikatora napretka \n" "tj. njegovog gornjeg lijevog ugla" #: draksplash:38 #, c-format msgid "" "The progress bar Y coordinate\n" "of its upper left corner" msgstr "" "Y koordinata indikatora napretka \n" "tj. njegovog gornjeg lijevog ugla" #: draksplash:39 #, c-format msgid "The width of the progress bar" msgstr "Širina indikatora napretka" #: draksplash:40 #, c-format msgid "The height of the progress bar" msgstr "Visina indikatora napretka" #: draksplash:41 #, c-format msgid "X coordinate of the text" msgstr "X koordinata teksta" #: draksplash:42 #, c-format msgid "Y coordinate of the text" msgstr "Y koordinata teksta" #: draksplash:43 #, c-format msgid "Text box transparency" msgstr "Prozirnost tekstualnog polja" #: draksplash:44 #, c-format msgid "Progress box transparency" msgstr "Prozirnost indikatora napretka" #: draksplash:45 #, c-format msgid "Text size" msgstr "Veličina teksta" #: draksplash:62 #, c-format msgid "Progress Bar" msgstr "" #: draksplash:65 #, c-format msgid "Choose progress bar color 1" msgstr "Izaberite boju 1 indikatora napretka" #: draksplash:67 #, c-format msgid "Choose progress bar color 2" msgstr "Izaberite boju 2 indikatora napretka" #: draksplash:69 #, c-format msgid "Choose progress bar background" msgstr "Izaberite pozadinu indikatora napretka" #: draksplash:72 #, c-format msgid "Gradient type" msgstr "Vrsta prelaza boja" #: draksplash:78 #, fuzzy, c-format msgid "Text" msgstr "Samo tekst" #: draksplash:80 #, c-format msgid "Choose text color" msgstr "Izaberite boju teksta" #: draksplash:83 draksplash:102 #, c-format msgid "Choose picture" msgstr "Izaberite sliku" #: draksplash:87 #, c-format msgid "Silent bootsplash" msgstr "Startni ekran bez poruka" #: draksplash:90 #, c-format msgid "Choose text zone color" msgstr "Izaberite boju tekst zone" #: draksplash:93 #, c-format msgid "Text color" msgstr "Boja teksta" #: draksplash:97 #, c-format msgid "Background color" msgstr "Boja pozadine" #: draksplash:103 #, c-format msgid "Verbose bootsplash" msgstr "Startni ekran sa porukama" #: draksplash:110 #, c-format msgid "Theme name" msgstr "Naziv teme" #: draksplash:115 #, c-format msgid "Final resolution" msgstr "Krajnja rezolucija" #: draksplash:119 #, c-format msgid "Display logo on Console" msgstr "Prikaži logo na konzoli" #: draksplash:124 #, c-format msgid "Save theme" msgstr "Snimi temu" #: draksplash:187 #, c-format msgid "Please enter a theme name" msgstr "Molimo unesite naziv teme" #: draksplash:190 #, c-format msgid "Please select a splash image" msgstr "Molim izaberite sliku za startni ekran" #: draksplash:193 #, c-format msgid "saving Bootsplash theme..." msgstr "snimam Bootsplash temu..." #: draksplash:202 #, c-format msgid "Unable to load image file %s" msgstr "Ne mogu učitati sliku %s" #: draksplash:213 #, c-format msgid "choose image" msgstr "izaberite sliku" #: draksplash:228 #, c-format msgid "Color selection" msgstr "Izbor boje" #: drakups:71 #, c-format msgid "Connected through a serial port or an usb cable" msgstr "Spojen putem serijskog porta ili USB kabla" #: drakups:72 #, c-format msgid "Manual configuration" msgstr "Ručno podešavanje" #: drakups:78 #, c-format msgid "Add an UPS device" msgstr "Dodaj UPS uređaj" #: drakups:81 #, c-format msgid "" "Welcome to the UPS configuration utility.\n" "\n" "Here, you'll add a new UPS to your system.\n" msgstr "" "Dobro došli u program za podešavanje UPSa.\n" "\n" "Ovdje možete dodati novi UPS na vaš sistem.\n" #: drakups:88 #, c-format msgid "" "We're going to add an UPS device.\n" "\n" "Do you want to autodetect UPS devices connected to this machine or to " "manually select them?" msgstr "" "Sada ćemo dodati UPS uređaj.\n" "\n" "Želite li da probam automatski otkriti UPS uređaje spojene na ovaj računar " "ili da ih ručno izaberete?" #: drakups:91 #, c-format msgid "Autodetection" msgstr "Auto prepoznavanje" #: drakups:99 harddrake2:370 #, c-format msgid "Detection in progress" msgstr "Detekcija u toku" #: drakups:118 drakups:157 logdrake:457 logdrake:463 #, c-format msgid "Congratulations" msgstr "Čestitamo" #: drakups:119 #, c-format msgid "The wizard successfully added the following UPS devices:" msgstr "Čarobnjak je uspješno dodao sljedeće UPS uređaje:" #: drakups:121 #, c-format msgid "No new UPS devices was found" msgstr "Nije pronađen nijedan novi UPS uređaj" #: drakups:126 drakups:138 #, c-format msgid "UPS driver configuration" msgstr "Podešavanje UPS drajvera" #: drakups:126 #, c-format msgid "Please select your UPS model." msgstr "Molim izaberite vaš UPS model." #: drakups:127 #, c-format msgid "Manufacturer / Model:" msgstr "Proizvođač / model:" #: drakups:138 #, c-format msgid "" "We are configuring the \"%s\" UPS from \"%s\".\n" "Please fill in its name, its driver and its port." msgstr "" "Sada podešavamo UPS \"%s\" od \"%s\".\n" "Molim unesite njegovo ime, drajver i port." #: drakups:143 #, c-format msgid "Name:" msgstr "Ime:" #: drakups:143 #, c-format msgid "The name of your ups" msgstr "Naziv vašeg UPSa" #: drakups:144 #, c-format msgid "Driver:" msgstr "Drajver:" #: drakups:144 #, c-format msgid "The driver that manages your ups" msgstr "Drajver koji upravlja vašim UPSom" #: drakups:145 #, c-format msgid "Port:" msgstr "Port:" #: drakups:147 #, c-format msgid "The port on which is connected your ups" msgstr "Port na koji je spojen vaš UPS" #: drakups:157 #, c-format msgid "The wizard successfully configured the new \"%s\" UPS device." msgstr "Čarobnjak je uspješno podesio novi \"%s\" UPS uređaj." #: drakups:248 #, c-format msgid "UPS devices" msgstr "UPS uređaji" #: drakups:249 drakups:268 drakups:284 harddrake2:88 harddrake2:114 #: harddrake2:121 #, c-format msgid "Name" msgstr "Ime" #: drakups:249 harddrake2:136 #, c-format msgid "Driver" msgstr "Drajver" #: drakups:249 harddrake2:54 #, c-format msgid "Port" msgstr "Port" #: drakups:267 #, c-format msgid "UPS users" msgstr "UPS korisnici" #: drakups:283 #, c-format msgid "Access Control Lists" msgstr "Liste kontrole pristupa" #: drakups:284 #, c-format msgid "IP address" msgstr "IP adresa" #: drakups:284 #, c-format msgid "IP mask" msgstr "IP maska" #: drakups:296 #, c-format msgid "Rules" msgstr "Pravila" #: drakups:297 #, c-format msgid "Action" msgstr "Akcija" #: drakups:297 harddrake2:85 #, c-format msgid "Level" msgstr "Nivo" #: drakups:297 #, c-format msgid "ACL name" msgstr "Naziv ACLa" #: drakups:297 finish-install:171 #, c-format msgid "Password" msgstr "Šifra" #: drakups:329 #, c-format msgid "UPS Management" msgstr "Upravljanje UPSom" #: drakups:333 drakups:342 #, c-format msgid "DrakUPS" msgstr "DrakUPS" #: drakups:339 #, c-format msgid "Welcome to the UPS configuration tools" msgstr "Dobrodošli u alate za podešavanje UPSa" #: drakxtv:67 #, c-format msgid "No TV Card detected!" msgstr "Nije detektovana TV kartica!" #. -PO: keep the double empty lines between sections, this is formatted a la LaTeX #: drakxtv:69 #, c-format msgid "" "No TV Card has been detected on your machine. Please verify that a Linux-" "supported Video/TV Card is correctly plugged in.\n" "\n" "\n" "You can visit our hardware database at:\n" "\n" "\n" "http://www.mandrivalinux.com/en/hardware.php3" msgstr "" "Na vašem računaru nije detektovana TV kartica. Molim provjerite da li je " "ispravno priključena Video/TV kartica koja je podržana pod Linuxom.\n" "\n" "\n" "Možete posjetiti našu bazu hardvera na:\n" "\n" "\n" "http://www.mandrivalinux.com/en/hardware.php3" #: finish-install:56 #, c-format msgid "Keyboard" msgstr "Tastatura" #: finish-install:57 #, c-format msgid "Please, choose your keyboard layout." msgstr "Molim izaberite izgled vaše tastature." #: finish-install:169 finish-install:187 finish-install:199 #, c-format msgid "Encrypted home partition" msgstr "" #: finish-install:169 #, c-format msgid "Please enter a password for the %s user" msgstr "" #: finish-install:172 #, c-format msgid "Password (again)" msgstr "Šifra (ponovo)" #: finish-install:187 #, c-format msgid "Creating encrypted home partition" msgstr "" #: finish-install:199 #, c-format msgid "Formatting encrypted home partition" msgstr "" #: harddrake2:28 #, c-format msgid "Alternative drivers" msgstr "Alternativni drajveri" #: harddrake2:29 #, c-format msgid "the list of alternative drivers for this sound card" msgstr "spisak alternativnih drajvera za ovu zvučnu karticu" #: harddrake2:31 harddrake2:123 #, c-format msgid "Bus" msgstr "Sabirnica" #: harddrake2:32 #, c-format msgid "" "this is the physical bus on which the device is plugged (eg: PCI, USB, ...)" msgstr "" "ovo je fizička sabirnica na koju je uređaj priključen (npr: PCI, USB, ...)" #: harddrake2:34 harddrake2:149 #, c-format msgid "Bus identification" msgstr "Identifikacija sabirnice (busa)" #: harddrake2:35 #, c-format msgid "" "- PCI and USB devices: this lists the vendor, device, subvendor and " "subdevice PCI/USB ids" msgstr "" "- PCI i USB uređaji: ovo će izlistati PCI/USB id-ove za; vendor, device, " "subvendor i subdevice" #: harddrake2:37 #, c-format msgid "Location on the bus" msgstr "Lokacija na sabirnici" #: harddrake2:38 #, c-format msgid "" "- pci devices: this gives the PCI slot, device and function of this card\n" "- eide devices: the device is either a slave or a master device\n" "- scsi devices: the scsi bus and the scsi device ids" msgstr "" "- pci devices: ovo daje PCI slot, uređaj i funkciju ove kartice\n" "- eide devices: uređaj može biti master ili slave\n" "- scsi devices: SCSI id-ovi za: bus i device" #: harddrake2:41 #, c-format msgid "Drive capacity" msgstr "Kapacitet uređaja" #: harddrake2:41 #, c-format msgid "special capacities of the driver (burning ability and or DVD support)" msgstr "posebne mogućnosti drajvera (mogućnost prženja i/ili podrška za DVD)" #: harddrake2:42 #, c-format msgid "Description" msgstr "Opis" #: harddrake2:42 #, c-format msgid "this field describes the device" msgstr "ovo polje opisuje uređaj" #: harddrake2:43 #, c-format msgid "Old device file" msgstr "Stara datoteka uređaja" #: harddrake2:44 #, c-format msgid "old static device name used in dev package" msgstr "staro statičko ime uređaja koje koristi dev paket" #. -PO: here "module" is the "jargon term" for a kernel driver #: harddrake2:47 #, c-format msgid "Module" msgstr "Modul" #: harddrake2:47 #, c-format msgid "the module of the GNU/Linux kernel that handles the device" msgstr "modul Linux kernela koji upravlja uređajem" #: harddrake2:48 #, c-format msgid "Extended partitions" msgstr "Proširene particije" #: harddrake2:48 #, c-format msgid "the number of extended partitions" msgstr "broj proširenih particija" #: harddrake2:49 #, c-format msgid "Geometry" msgstr "Geometrija" #: harddrake2:49 #, c-format msgid "Cylinder/head/sectors geometry of the disk" msgstr "CHS (cilindar/glava/sektor) geometrija diska" #: harddrake2:50 #, c-format msgid "Disk controller" msgstr "Disk kontroler" #: harddrake2:50 #, c-format msgid "the disk controller on the host side" msgstr "disk kontroler na strani računara" #: harddrake2:51 #, fuzzy, c-format msgid "Identifier" msgstr "Identifikator diska" #: harddrake2:51 #, fuzzy, c-format msgid "usually the device serial number" msgstr "obično serijski broj diska" #: harddrake2:52 #, c-format msgid "Media class" msgstr "Klasa medija" #: harddrake2:52 #, c-format msgid "class of hardware device" msgstr "klasa hardverskog uređaja" #: harddrake2:53 harddrake2:86 #, c-format msgid "Model" msgstr "Model" #: harddrake2:53 #, c-format msgid "hard disk model" msgstr "model hard diska" #: harddrake2:54 #, c-format msgid "network printer port" msgstr "port mrežnog štampača" #: harddrake2:55 #, c-format msgid "Primary partitions" msgstr "Primarne particije" #: harddrake2:55 #, c-format msgid "the number of the primary partitions" msgstr "broj primarnih particija" #: harddrake2:56 harddrake2:91 #, c-format msgid "Vendor" msgstr "Proizvođač" #: harddrake2:56 #, c-format msgid "the vendor name of the device" msgstr "naziv proizvođača uređaja" #: harddrake2:57 #, c-format msgid "PCI domain" msgstr "" #: harddrake2:57 #, fuzzy, c-format msgid "the PCI domain of the device" msgstr "naziv proizvođača uređaja" #: harddrake2:58 #, c-format msgid "Bus PCI #" msgstr "Bus PCI #" #: harddrake2:58 #, c-format msgid "the PCI bus on which the device is plugged" msgstr "PCI sabirnica na koju je uređaj priključen" #: harddrake2:59 #, c-format msgid "PCI device #" msgstr "PCI uređaj #" #: harddrake2:59 #, c-format msgid "PCI device number" msgstr "Broj PCI uređaja" #: harddrake2:60 #, c-format msgid "PCI function #" msgstr "PCI funkcija #" #: harddrake2:60 #, c-format msgid "PCI function number" msgstr "Broj PCI funkcije" #: harddrake2:61 #, c-format msgid "Vendor ID" msgstr "ID proizvođača" #: harddrake2:61 #, c-format msgid "this is the standard numerical identifier of the vendor" msgstr "ovo je standardni numerički identifikator proizvođača" #: harddrake2:62 #, c-format msgid "Device ID" msgstr "ID uređaja" #: harddrake2:62 #, c-format msgid "this is the numerical identifier of the device" msgstr "ovo je numerički identifikator uređaja" #: harddrake2:63 #, c-format msgid "Sub vendor ID" msgstr "Pod-ID proizvođača" #: harddrake2:63 #, c-format msgid "this is the minor numerical identifier of the vendor" msgstr "ovo je manji numerički identifikator proizvođača" #: harddrake2:64 #, c-format msgid "Sub device ID" msgstr "Pod-ID uređaja" #: harddrake2:64 #, c-format msgid "this is the minor numerical identifier of the device" msgstr "ovo je manji numerički identifikator uređaja" #: harddrake2:65 #, c-format msgid "Device USB ID" msgstr "USB ID uređaja" #: harddrake2:65 #, c-format msgid ".." msgstr ".." #: harddrake2:69 #, c-format msgid "Bogomips" msgstr "Bogomips" #: harddrake2:69 #, c-format msgid "" "the GNU/Linux kernel needs to run a calculation loop at boot time to " "initialize a timer counter. Its result is stored as bogomips as a way to " "\"benchmark\" the cpu." msgstr "" "GNU/Linux kernel mora izvršiti proračunsku petlju prilikom boot-a kako bi " "inicijalizirao tajmer. Rezultat rada te petlje se prikazuje u vidu " "bogomipsa, kao jedan neprecizan pokazatelj brzine CPUa." #: harddrake2:70 #, c-format msgid "Cache size" msgstr "Veličina cache-a" #: harddrake2:70 #, c-format msgid "size of the (second level) cpu cache" msgstr "veličina CPU keša (drugog nivoa)" #. -PO: here "comas" is the medical coma, not the lexical coma!! #: harddrake2:73 #, c-format msgid "Coma bug" msgstr "Coma bug" #: harddrake2:73 #, c-format msgid "whether this cpu has the Cyrix 6x86 Coma bug" msgstr "da li ovaj CPU ima Cyrix 6x86 Coma bug" #: harddrake2:74 #, c-format msgid "Cpuid family" msgstr "Cpuid familija" #: harddrake2:74 #, c-format msgid "family of the cpu (eg: 6 for i686 class)" msgstr "familija CPUa (npr: 6 za i686 generaciju)" #: harddrake2:75 #, c-format msgid "Cpuid level" msgstr "Nivo cpuid-a" #: harddrake2:75 #, c-format msgid "information level that can be obtained through the cpuid instruction" msgstr "nivo informacija koje se mogu dobiti cpuid instrukcijom" #: harddrake2:76 #, c-format msgid "Frequency (MHz)" msgstr "Frekvencija (MHz)" #: harddrake2:76 #, c-format msgid "" "the CPU frequency in MHz (Megahertz which in first approximation may be " "coarsely assimilated to number of instructions the cpu is able to execute " "per second)" msgstr "" "frekvencija CPUa u MHz (Megaherc je jedinica koja se može približno " "usporediti sa brojem instrukcija koje CPU izvršava u sekundi)" #: harddrake2:77 #, c-format msgid "Flags" msgstr "Flagovi" #: harddrake2:77 #, c-format msgid "CPU flags reported by the kernel" msgstr "CPU flagovi koje je prijavio kernel" #: harddrake2:78 #, c-format msgid "Fdiv bug" msgstr "Fdiv bug" #: harddrake2:79 #, c-format msgid "" "Early Intel Pentium chips manufactured have a bug in their floating point " "processor which did not achieve the required precision when performing a " "Floating point DIVision (FDIV)" msgstr "" "Rani Intel Pentium procesori imaju bug u numeričkom koprocesoru koji ne " "postiže potrebnu preciznost prilikom izvršavanja dijeljenja sa tekućim " "zarezom (FDIV)" #: harddrake2:80 #, c-format msgid "Is FPU present" msgstr "Da li postoji FPU" #: harddrake2:80 #, c-format msgid "yes means the processor has an arithmetic coprocessor" msgstr "da znači da procesor ima aritmetički koprocesor" #: harddrake2:81 #, c-format msgid "Whether the FPU has an irq vector" msgstr "Da li FPU ima IRQ vektor" #: harddrake2:81 #, c-format msgid "yes means the arithmetic coprocessor has an exception vector attached" msgstr "da znači da aritmetički koprocesor ima priključen exception vector" #: harddrake2:82 #, c-format msgid "F00f bug" msgstr "F00F bug" #: harddrake2:82 #, c-format msgid "early pentiums were buggy and freezed when decoding the F00F bytecode" msgstr "" "rani Pentium procesori imaju bug koji izaziva smrzavanje sistema prilikom " "dekodiranja F00F bytecode-a" #: harddrake2:83 #, c-format msgid "Halt bug" msgstr "Halt bug" #: harddrake2:84 #, c-format msgid "" "Some of the early i486DX-100 chips cannot reliably return to operating mode " "after the \"halt\" instruction is used" msgstr "" "Neki rani i486DX-100 chipovi se ne mogu pouzdano vratiti u radni način nakon " "korištenja instrukcije \"halt\"" #: harddrake2:85 #, c-format msgid "sub generation of the cpu" msgstr "podgeneracija procesora" #: harddrake2:86 #, c-format msgid "generation of the cpu (eg: 8 for Pentium III, ...)" msgstr "generacija procesora (npr: 8 za Pentium III, ...)" #: harddrake2:87 #, c-format msgid "Model name" msgstr "Naziv modela" #: harddrake2:87 #, c-format msgid "official vendor name of the cpu" msgstr "zvanično ime proizvođača procesora" #: harddrake2:88 #, c-format msgid "the name of the CPU" msgstr "naziv procesora" #: harddrake2:89 #, c-format msgid "Processor ID" msgstr "ID procesora" #: harddrake2:89 #, c-format msgid "the number of the processor" msgstr "broj procesora" #: harddrake2:90 #, c-format msgid "Model stepping" msgstr "Model stepping" #: harddrake2:90 #, c-format msgid "stepping of the cpu (sub model (generation) number)" msgstr "stepping procesora (broj pod-modela / generacije)" #: harddrake2:91 #, c-format msgid "the vendor name of the processor" msgstr "naziv proizvođača procesora" #: harddrake2:92 #, c-format msgid "Write protection" msgstr "Zaštita od pisanja" #: harddrake2:92 #, c-format msgid "" "the WP flag in the CR0 register of the cpu enforce write protection at the " "memory page level, thus enabling the processor to prevent unchecked kernel " "accesses to user memory (aka this is a bug guard)" msgstr "" "WP flag u CR0 registru CPUa prisiljava zaštitu od pisanja na nivou " "memorijske stranice, čime je uključeno sprječavanje od neprovjerenih " "pristupa kernela u korisničku memoriju (drugim riječima, ovo je zaštita od " "bugova)" #: harddrake2:96 #, c-format msgid "Floppy format" msgstr "Format diskete" #: harddrake2:96 #, c-format msgid "format of floppies supported by the drive" msgstr "format disketa koje podržava jedinica" #: harddrake2:100 #, c-format msgid "EIDE/SCSI channel" msgstr "EIDE/SCSI channel" #: harddrake2:101 #, c-format msgid "Disk identifier" msgstr "Identifikator diska" #: harddrake2:101 #, c-format msgid "usually the disk serial number" msgstr "obično serijski broj diska" #: harddrake2:102 #, c-format msgid "Logical unit number" msgstr "Broj logičke jedinice" #: harddrake2:102 #, c-format msgid "" "the SCSI target number (LUN). SCSI devices connected to a host are uniquely " "identified by a\n" "channel number, a target id and a logical unit number" msgstr "" "SCSI odredišni broj (LUN). SCSI uređaji spojeni na računar su jedinstveno " "identificirani\n" "brojem kanala, odredišnim IDom i brojem logične jedinice" #. -PO: here, "size" is the size of the ram chip (eg: 128Mo, 256Mo, ...) #: harddrake2:109 #, c-format msgid "Installed size" msgstr "Instalirana veličina" #: harddrake2:109 #, c-format msgid "Installed size of the memory bank" msgstr "Instalirana veličina memorijske banke" #: harddrake2:110 #, c-format msgid "Enabled Size" msgstr "Omogućena veličina" #: harddrake2:110 #, c-format msgid "Enabled size of the memory bank" msgstr "Omogućena veličina memorijske banke" #: harddrake2:111 harddrake2:120 #, c-format msgid "Type" msgstr "Vrsta" #: harddrake2:111 #, c-format msgid "type of the memory device" msgstr "vrsta memorijskog uređaja" #: harddrake2:112 #, c-format msgid "Speed" msgstr "Brzina" #: harddrake2:112 #, c-format msgid "Speed of the memory bank" msgstr "Brzina memorijske banke" #: harddrake2:113 #, c-format msgid "Bank connections" msgstr "Veze memorijske banke" #: harddrake2:114 #, c-format msgid "Socket designation of the memory bank" msgstr "Oznaka podnožja (socketa) memorijske banke" #: harddrake2:118 #, c-format msgid "Device file" msgstr "Datoteka uređaja" #: harddrake2:118 #, c-format msgid "" "the device file used to communicate with the kernel driver for the mouse" msgstr "" "datoteka uređaja koja se koristi za komunikaciju sa kernelskim drajverom miša" #: harddrake2:119 #, c-format msgid "Emulated wheel" msgstr "Simulirani točkić" #: harddrake2:119 #, c-format msgid "whether the wheel is emulated or not" msgstr "da li je točkić simuliran ili ne" #: harddrake2:120 #, c-format msgid "the type of the mouse" msgstr "vrsta miša" #: harddrake2:121 #, c-format msgid "the name of the mouse" msgstr "naziv miša" #: harddrake2:122 #, c-format msgid "Number of buttons" msgstr "Broj dugmadi" #: harddrake2:122 #, c-format msgid "the number of buttons the mouse has" msgstr "broj dugmadi koje ima miš" #: harddrake2:123 #, c-format msgid "the type of bus on which the mouse is connected" msgstr "vrsta sabirnice na koju je spojen miš" #: harddrake2:124 #, c-format msgid "Mouse protocol used by X11" msgstr "Protokol miša koji koristi X11" #: harddrake2:124 #, c-format msgid "the protocol that the graphical desktop use with the mouse" msgstr "protokol koji koristi grafički desktop sa mišem" #: harddrake2:131 harddrake2:140 harddrake2:147 harddrake2:155 harddrake2:335 #, c-format msgid "Identification" msgstr "Identifikacija" #: harddrake2:132 harddrake2:148 #, c-format msgid "Connection" msgstr "Konekcija" #: harddrake2:141 #, c-format msgid "Performances" msgstr "Performanse" #: harddrake2:142 #, c-format msgid "Bugs" msgstr "Bugovi" #: harddrake2:143 #, c-format msgid "FPU" msgstr "FPU" #: harddrake2:150 #, c-format msgid "Device" msgstr "Uređaj" #: harddrake2:151 #, c-format msgid "Partitions" msgstr "Particije" #: harddrake2:156 #, c-format msgid "Features" msgstr "Osobine" #. -PO: please keep all "/" characters !!! #: harddrake2:179 logdrake:78 #, c-format msgid "/_Options" msgstr "/_Opcije" #: harddrake2:180 harddrake2:209 logdrake:80 #, c-format msgid "/_Help" msgstr "/_Pomoć" #: harddrake2:184 #, c-format msgid "/Autodetect _printers" msgstr "/Automatski prepoznaj štam_pače" #: harddrake2:185 #, c-format msgid "/Autodetect _modems" msgstr "/Automatski prepoznaj _modeme" #: harddrake2:186 #, c-format msgid "/Autodetect _jaz drives" msgstr "/Automatski prepoznaj _jaz uređaje" #: harddrake2:187 #, c-format msgid "/Autodetect parallel _zip drives" msgstr "/Autodetektuj paralelne _ZIP uređaje" #: harddrake2:191 #, c-format msgid "Hardware Configuration" msgstr "Podešavanje hardvera" #: harddrake2:198 #, c-format msgid "/_Quit" msgstr "/_Izlaz" #: harddrake2:211 #, c-format msgid "/_Fields description" msgstr "/_Opis polja" #: harddrake2:213 #, c-format msgid "Harddrake help" msgstr "Harddrake pomoć" #: harddrake2:214 #, c-format msgid "" "Description of the fields:\n" "\n" msgstr "" "Opis polja:\n" "\n" #: harddrake2:222 #, c-format msgid "Select a device!" msgstr "Izaberite uređaj !" #: harddrake2:222 #, c-format msgid "" "Once you've selected a device, you'll be able to see the device information " "in fields displayed on the right frame (\"Information\")" msgstr "" "Nakon što izaberete uređaj, moći ćete vidjeti informacije o uređaju u " "poljima u desnom okviru (\"Informacije\")" #: harddrake2:228 #, c-format msgid "/_Report Bug" msgstr "/_Prijavi grešku" #: harddrake2:230 #, c-format msgid "/_About..." msgstr "/_O programu..." #: harddrake2:233 #, c-format msgid "Harddrake" msgstr "Harddrake" #: harddrake2:237 #, c-format msgid "This is HardDrake, a %s hardware configuration tool." msgstr "Ovo je HardDrake, %s alat za podešavanje hardvera." #: harddrake2:270 #, c-format msgid "Detected hardware" msgstr "Pronađeni hardver" #: harddrake2:273 scannerdrake:286 #, c-format msgid "Information" msgstr "Informacije" #: harddrake2:275 #, c-format msgid "Set current driver options" msgstr "Podesite opcije trenutnog drajvera" #: harddrake2:282 #, c-format msgid "Run config tool" msgstr "Pokreni alat za podešavanje" #: harddrake2:302 #, c-format msgid "" "Click on a device in the left tree in order to display its information here." msgstr "Kliknite na uređaj u drvetu lijevo da dobijete informacije o njemu." #: harddrake2:322 notify-x11-free-driver-switch:13 #, c-format msgid "unknown" msgstr "nepoznat" #: harddrake2:323 #, c-format msgid "Unknown" msgstr "Nepoznat" #: harddrake2:343 #, c-format msgid "Misc" msgstr "Razno" #: harddrake2:418 #, c-format msgid "secondary" msgstr "sekundarni" #: harddrake2:418 #, c-format msgid "primary" msgstr "primarni" #: harddrake2:422 #, c-format msgid "burner" msgstr "pržilica" #: harddrake2:422 #, c-format msgid "DVD" msgstr "DVD" #: harddrake2:474 #, c-format msgid "Unknown/Others" msgstr "Nepoznat/Ostali" #: harddrake2:516 #, c-format msgid "The following packages need to be installed:\n" msgstr "Sljedeći paketi trebaju biti instalirani:\n" #: localedrake:38 #, c-format msgid "LocaleDrake" msgstr "LocaleDrake" #: localedrake:44 #, c-format msgid "You should install the following packages: %s" msgstr "Trebate instalirati sljedeće pakete: %s" #. -PO: the following is used to combine packages names. eg: "initscripts, harddrake, yudit" #: localedrake:47 #, c-format msgid ", " msgstr ", " #: logdrake:51 #, c-format msgid "Mandriva Linux Tools Logs" msgstr "Dnevnici Mandriva Linux alata" #: logdrake:65 #, c-format msgid "Show only for the selected day" msgstr "Prikaži samo za izabrani dan" #: logdrake:72 #, c-format msgid "/File/_New" msgstr "/Datoteka/_Nova" #: logdrake:72 #, c-format msgid "N" msgstr "N" #: logdrake:73 #, c-format msgid "/File/_Open" msgstr "/Datoteka/_Otvori" #: logdrake:73 #, c-format msgid "O" msgstr "O" #: logdrake:74 #, c-format msgid "/File/_Save" msgstr "/Datoteka/_Sačuvaj" #: logdrake:74 #, c-format msgid "S" msgstr "S" #: logdrake:75 #, c-format msgid "/File/Save _As" msgstr "/Datoteka/Sačuvaj K_ao" #: logdrake:76 #, c-format msgid "/File/-" msgstr "/Datoteka/-" #: logdrake:79 #, c-format msgid "/Options/Test" msgstr "/Opcije/Test" #: logdrake:81 #, c-format msgid "/Help/_About..." msgstr "/Pomoć/_O programu..." #: logdrake:110 #, c-format msgid "" "_:this is the auth.log log file\n" "Authentication" msgstr "Authentication" #: logdrake:111 #, c-format msgid "" "_:this is the user.log log file\n" "User" msgstr "User" #: logdrake:112 #, c-format msgid "" "_:this is the /var/log/messages log file\n" "Messages" msgstr "Messages" #: logdrake:113 #, c-format msgid "" "_:this is the /var/log/syslog log file\n" "Syslog" msgstr "Syslog" #: logdrake:117 #, c-format msgid "search" msgstr "pretraživanje" #: logdrake:129 #, c-format msgid "A tool to monitor your logs" msgstr "Alat za pregled vaših logova" #: logdrake:131 #, c-format msgid "Settings" msgstr "Podešavanja" #: logdrake:134 #, c-format msgid "Matching" msgstr "Odgovara" #: logdrake:135 #, c-format msgid "but not matching" msgstr "but not matching" #: logdrake:138 #, c-format msgid "Choose file" msgstr "Izaberi datoteku" #: logdrake:150 #, c-format msgid "Calendar" msgstr "Kalendar" #: logdrake:159 #, c-format msgid "Content of the file" msgstr "Sadržaj datoteke" #: logdrake:163 logdrake:407 #, c-format msgid "Mail alert" msgstr "Mail obavijest" #: logdrake:170 #, c-format msgid "The alert wizard has failed unexpectedly:" msgstr "Čarobnjak za upozorenja je neočekivano pao:" #: logdrake:174 #, c-format msgid "Save" msgstr "Snimi" #: logdrake:222 #, c-format msgid "please wait, parsing file: %s" msgstr "molim sačekajte, parsiram datoteku: %s" #: logdrake:244 #, c-format msgid "Sorry, log file isn't available!" msgstr "" #: logdrake:292 #, c-format msgid "Error while opening \"%s\" log file: %s\n" msgstr "" #: logdrake:385 #, c-format msgid "Apache World Wide Web Server" msgstr "Apache World Wide Web Server" #: logdrake:386 #, c-format msgid "Domain Name Resolver" msgstr "Domain Name Resolver" #: logdrake:387 #, c-format msgid "Ftp Server" msgstr "FTP server" #: logdrake:388 #, c-format msgid "Postfix Mail Server" msgstr "Postfix mail server" #: logdrake:389 #, c-format msgid "Samba Server" msgstr "Samba server" #: logdrake:390 #, c-format msgid "SSH Server" msgstr "SSH server" #: logdrake:391 #, c-format msgid "Webmin Service" msgstr "Webmin servis" #: logdrake:392 #, c-format msgid "Xinetd Service" msgstr "Xinetd servis" #: logdrake:401 #, c-format msgid "Configure the mail alert system" msgstr "Podesi sistem za e-mail obavještenja" #: logdrake:402 #, c-format msgid "Stop the mail alert system" msgstr "Zaustavi sistem za e-mail obavještenja" #: logdrake:410 #, c-format msgid "Mail alert configuration" msgstr "Podešavanje Mail obavijesti" #: logdrake:411 #, c-format msgid "" "Welcome to the mail configuration utility.\n" "\n" "Here, you'll be able to set up the alert system.\n" msgstr "" "Dobro došli u program za podešavanje maila.\n" "\n" "Ovdje možete podesiti sistem obavještavanja.\n" #: logdrake:414 #, c-format msgid "What do you want to do?" msgstr "Šta želite uraditi?" #: logdrake:421 #, c-format msgid "Services settings" msgstr "Postavke servisa" #: logdrake:422 #, c-format msgid "" "You will receive an alert if one of the selected services is no longer " "running" msgstr "Primićete obavještenje ako neki od izabranih servisa prestane raditi" #: logdrake:429 #, c-format msgid "Load setting" msgstr "Podešavanje opterećenja" #: logdrake:430 #, c-format msgid "You will receive an alert if the load is higher than this value" msgstr "" "Primićete upozorenje ako je opterećenje (system load) veće od ove vrijednosti" #: logdrake:431 #, c-format msgid "" "_: load here is a noun, the load of the system\n" "Load" msgstr "Opterećenje" #: logdrake:436 #, c-format msgid "Alert configuration" msgstr "Postavke upozorenja" #: logdrake:437 #, c-format msgid "Please enter your email address below " msgstr "Molim unesite vašu email adresu ispod" #: logdrake:438 #, c-format msgid "and enter the name (or the IP) of the SMTP server you wish to use" msgstr "i unesite ime (ili IP adresu) SMTP servera kojeg želite koristiti" #: logdrake:445 #, c-format msgid "\"%s\" neither is a valid email nor is an existing local user!" msgstr "\"%s\" nije ni ispravna e-mail adresa ni postojeći lokalni korisnik!" #: logdrake:450 #, c-format msgid "" "\"%s\" is a local user, but you did not select a local smtp, so you must use " "a complete email address!" msgstr "" "\"%s\" je lokalni korisnik, ali niste izabrali lokalni SMTP, tako da morate " "unijeti kompletnu e-mail adresu!" #: logdrake:457 #, c-format msgid "The wizard successfully configured the mail alert." msgstr "Čarobnjak je uspješno podesio e-mail obavještenja." #: logdrake:463 #, c-format msgid "The wizard successfully disabled the mail alert." msgstr "Čarobnjak je uspješno isključio e-mail obavještenja." #: logdrake:522 #, c-format msgid "Save as.." msgstr "Sačuvaj kao..." #: notify-x11-free-driver-switch:15 #, c-format msgid "" "The proprietary driver for your graphic card can not be found, the system is " "now using the free software driver (%s)." msgstr "" #: scannerdrake:51 #, c-format msgid "" "SANE packages need to be installed to use scanners.\n" "\n" "Do you want to install the SANE packages?" msgstr "" "SANE paket treba biti instaliran da biste mogli koristiti skenere.\n" "\n" "Da li želite instalirati SANE pakete?" #: scannerdrake:55 #, c-format msgid "Aborting Scannerdrake." msgstr "Prekidam Scannerdrake." #: scannerdrake:60 #, c-format msgid "" "Could not install the packages needed to set up a scanner with Scannerdrake." msgstr "" "Ne mogu instalirati pakete koji su potrebni za podešavanje skenera pomoću " "Scannerdrake-a." #: scannerdrake:61 #, c-format msgid "Scannerdrake will not be started now." msgstr "Sada će biti pokrenut Scannerdrake." #: scannerdrake:67 scannerdrake:505 #, c-format msgid "Searching for configured scanners..." msgstr "Tražim podešene skenere ..." #: scannerdrake:71 scannerdrake:509 #, c-format msgid "Searching for new scanners..." msgstr "Tražim nove skenere ..." #: scannerdrake:79 scannerdrake:531 #, c-format msgid "Re-generating list of configured scanners..." msgstr "Regeneriram listu podešenih skenera ..." #: scannerdrake:101 #, c-format msgid "The %s is not supported by this version of %s." msgstr "%s nije podržan na ovoj verziji %s." #: scannerdrake:104 scannerdrake:115 #, c-format msgid "Confirmation" msgstr "Potvrda" #: scannerdrake:104 #, c-format msgid "%s found on %s, configure it automatically?" msgstr "%s je pronađen na %s, da ga podesim automatski?" #: scannerdrake:116 #, c-format msgid "%s is not in the scanner database, configure it manually?" msgstr "%s nije u bazi skenera, želite li ga ručno podesiti?" #: scannerdrake:130 #, c-format msgid "Scanner configuration" msgstr "Postavke skenera" #: scannerdrake:131 #, c-format msgid "Select a scanner model (Detected model: %s, Port: %s)" msgstr "Izaberite model skenera (otkriven model: %s, port: %s)" #: scannerdrake:133 #, c-format msgid "Select a scanner model (Detected model: %s)" msgstr "Izaberite model skenera (otkriven model: %s)" #: scannerdrake:134 #, c-format msgid "Select a scanner model (Port: %s)" msgstr "Izaberite model skenera (port: %s)" #: scannerdrake:136 scannerdrake:139 #, c-format msgid " (UNSUPPORTED)" msgstr " (NIJE PODRŽANO)" #: scannerdrake:142 #, c-format msgid "The %s is not supported under Linux." msgstr "%s nije podržan na Linuxu." #: scannerdrake:169 scannerdrake:183 #, c-format msgid "Do not install firmware file" msgstr "Nemoj instalirati firmware datoteku" #: scannerdrake:172 scannerdrake:222 #, c-format msgid "Scanner Firmware" msgstr "Firmware skenera" #: scannerdrake:173 scannerdrake:225 #, c-format msgid "" "It is possible that your %s needs its firmware to be uploaded everytime when " "it is turned on." msgstr "" "Moguće je da vaš %s zahtijeva da firmware bude poslan svaki put kada ga " "upalite." #: scannerdrake:174 scannerdrake:226 #, c-format msgid "If this is the case, you can make this be done automatically." msgstr "Ako je to slučaj, ovo se može obavljati automatski." #: scannerdrake:175 scannerdrake:229 #, c-format msgid "" "To do so, you need to supply the firmware file for your scanner so that it " "can be installed." msgstr "" "Da biste to uradili, morate navesti firmware datoteku za vaš skener kako bi " "ona mogla biti instalirana." #: scannerdrake:176 scannerdrake:230 #, c-format msgid "" "You find the file on the CD or floppy coming with the scanner, on the " "manufacturer's home page, or on your Windows partition." msgstr "" "Datoteku možete naći na CDu ili disketi koja je došla uz skener, na web " "stranici proizvođača ili na vašoj Windows particiji." #: scannerdrake:178 scannerdrake:237 #, c-format msgid "Install firmware file from" msgstr "Instaliraj firmware datoteku iz" #: scannerdrake:180 scannerdrake:188 scannerdrake:239 scannerdrake:246 #, c-format msgid "CD-ROM" msgstr "sa CDROMa" #: scannerdrake:181 scannerdrake:190 scannerdrake:240 scannerdrake:248 #, c-format msgid "Floppy Disk" msgstr "sa diskete" #: scannerdrake:182 scannerdrake:192 scannerdrake:241 scannerdrake:250 #, c-format msgid "Other place" msgstr "ostalo" #: scannerdrake:198 #, c-format msgid "Select firmware file" msgstr "Izaberite firmware datoteku" #: scannerdrake:201 scannerdrake:260 #, c-format msgid "The firmware file %s does not exist or is unreadable!" msgstr "Firmware datoteka %s ne postoji ili se ne može čitati!" #: scannerdrake:224 #, c-format msgid "" "It is possible that your scanners need their firmware to be uploaded " "everytime when they are turned on." msgstr "" "Moguće je da vaši skeneri zahtijevaju da firmware bude poslan svaki put kada " "ih upalite." #: scannerdrake:228 #, c-format msgid "" "To do so, you need to supply the firmware files for your scanners so that it " "can be installed." msgstr "" "Da biste to uradili, trebate navesti firmware datoteke za vaše skenere kako " "bi mogle biti instalirane." #: scannerdrake:231 #, c-format msgid "" "If you have already installed your scanner's firmware you can update the " "firmware here by supplying the new firmware file." msgstr "" "Ako ste već podesili firmware vašeg skenera, možete ga promijeniti ovdje " "tako što ćete zadati novu firmware datoteku." #: scannerdrake:233 #, c-format msgid "Install firmware for the" msgstr "Instaliraj firmware za" #: scannerdrake:256 #, c-format msgid "Select firmware file for the %s" msgstr "Izaberite firmware datoteku za %s" #: scannerdrake:274 #, c-format msgid "Could not install the firmware file for the %s!" msgstr "Ne mogu instalirati firmware datoteku za %s!" #: scannerdrake:287 #, c-format msgid "The firmware file for your %s was successfully installed." msgstr "Firmware datoteka za %s je uspješno instalirana." #: scannerdrake:297 #, c-format msgid "The %s is unsupported" msgstr "%s nije podržan" #: scannerdrake:302 #, c-format msgid "" "The %s must be configured by system-config-printer.\n" "You can launch system-config-printer from the %s Control Center in Hardware " "section." msgstr "" "%s se mora podesiti iz system-config-printer-a.\n" "Možete pokrenuti system-config-printer iz %s Kontrolnog centra u odjeljku " "Hardware." #: scannerdrake:320 #, c-format msgid "Setting up kernel modules..." msgstr "Podešavam module kernela..." #: scannerdrake:330 scannerdrake:337 scannerdrake:367 #, c-format msgid "Auto-detect available ports" msgstr "Auto prepoznaj dostupne portove" #: scannerdrake:331 scannerdrake:377 #, c-format msgid "Device choice" msgstr "Izbor uređaja" #: scannerdrake:332 scannerdrake:378 #, c-format msgid "Please select the device where your %s is attached" msgstr "Molim izaberite uređaj gdje je priključen vaš %s" #: scannerdrake:333 #, c-format msgid "(Note: Parallel ports cannot be auto-detected)" msgstr "(Napomena: Paralelni portovi ne mogu biti automatski istraženi)" #: scannerdrake:335 scannerdrake:380 #, c-format msgid "choose device" msgstr "izaberite uređaj" #: scannerdrake:369 #, c-format msgid "Searching for scanners..." msgstr "Tražim skenere ..." #: scannerdrake:405 scannerdrake:412 #, c-format msgid "Attention!" msgstr "Pažnja!" #: scannerdrake:406 #, c-format msgid "" "Your %s cannot be configured fully automatically.\n" "\n" "Manual adjustments are required. Please edit the configuration file /etc/" "sane.d/%s.conf. " msgstr "" "Vaš %s se ne može potpuno automatski podesiti.\n" "\n" "Potrebno je ručno prilagođavanje. Molim editujte datoteku /etc/sane.d/%s." "conf. " #: scannerdrake:407 scannerdrake:416 #, c-format msgid "" "More info in the driver's manual page. Run the command \"man sane-%s\" to " "read it." msgstr "" "Više informacija je u priručniku drajvera. Izvršite naredbu \"man sane-%s\" " "da biste je pročitali." #: scannerdrake:409 scannerdrake:418 #, c-format msgid "" "After that you may scan documents using \"XSane\" or \"Kooka\" from " "Multimedia/Graphics in the applications menu." msgstr "" "Nakon toga možete skenirati dokumente koristeći \"XSane\" ili \"Kooka\" koji " "se nalaze u meniju Multimedija/Grafika." #: scannerdrake:413 #, c-format msgid "" "Your %s has been configured, but it is possible that additional manual " "adjustments are needed to get it to work. " msgstr "" "Vaš %s je podešen, ali je moguće da će biti potrebna dodatna ručna podešenja " "da bi radio. " #: scannerdrake:414 #, c-format msgid "" "If it does not appear in the list of configured scanners in the main window " "of Scannerdrake or if it does not work correctly, " msgstr "" "Ako se ne pojavi na listi podešenih skenera u glavnom prozoru programa " "Scannerdrake ili ako ne bude radio ispravno, " #: scannerdrake:415 #, c-format msgid "edit the configuration file /etc/sane.d/%s.conf. " msgstr "editujte konfiguracionu datoteku /etc/sane.d/%s.conf. " #: scannerdrake:420 #, c-format msgid "Congratulations!" msgstr "Čestitamo!" #: scannerdrake:421 #, c-format msgid "" "Your %s has been configured.\n" "You may now scan documents using \"XSane\" or \"Kooka\" from Multimedia/" "Graphics in the applications menu." msgstr "" "Vaš %s je podešen.\n" "Sada možete skenirati dokumente koristeći \"XSane\" ili \"Kooka\" koji se " "nalaze u meniju Multimedija/Grafika." #: scannerdrake:446 #, c-format msgid "" "The following scanners\n" "\n" "%s\n" "are available on your system.\n" msgstr "" "Sljedeći skeneri\n" "\n" "%s\n" "su dostupni na vašem sistemu.\n" #: scannerdrake:447 #, c-format msgid "" "The following scanner\n" "\n" "%s\n" "is available on your system.\n" msgstr "" "Sljedeći skener\n" "\n" "%s\n" "je dostupan na vašem sistemu.\n" #: scannerdrake:449 scannerdrake:452 #, c-format msgid "There are no scanners found which are available on your system.\n" msgstr "Nisam pronašao nijedan skener na vašem sistemu.\n" #: scannerdrake:460 #, c-format msgid "Scanner Management" msgstr "Upravljanje skenerima" #: scannerdrake:466 #, c-format msgid "Search for new scanners" msgstr "Traženje novih skenera" #: scannerdrake:472 #, c-format msgid "Add a scanner manually" msgstr "Ručno dodaj skener" #: scannerdrake:479 #, c-format msgid "Install/Update firmware files" msgstr "Instaliraj/Updatuj firmware datoteke" #: scannerdrake:485 #, c-format msgid "Scanner sharing" msgstr "Dijeljenje skenera" #: scannerdrake:544 scannerdrake:709 #, c-format msgid "All remote machines" msgstr "Svi udaljeni računari" #: scannerdrake:556 scannerdrake:859 #, c-format msgid "This machine" msgstr "Na ovom računaru" #: scannerdrake:595 #, c-format msgid "Scanner Sharing" msgstr "Dijeljenje skenera" #: scannerdrake:596 #, c-format msgid "" "Here you can choose whether the scanners connected to this machine should be " "accessible by remote machines and by which remote machines." msgstr "" "Ovdje možete izabrati da li skeneri spojeni na ovaj računar trebaju biti " "dostupni udaljenim računarima i kojim računarima." #: scannerdrake:597 #, c-format msgid "" "You can also decide here whether scanners on remote machines should be made " "available on this machine." msgstr "" "Ovdje takođe trebate odlučiti da li ovaj računar treba koristiti skenere na " "udaljenim računarima." #: scannerdrake:600 #, c-format msgid "The scanners on this machine are available to other computers" msgstr "Skeneri na ovom računari su dostupni drugim računarima" #: scannerdrake:602 #, c-format msgid "Scanner sharing to hosts: " msgstr "Dijeljenje skenera za računare:" #: scannerdrake:607 scannerdrake:624 #, c-format msgid "No remote machines" msgstr "Nema udaljenih računara" #: scannerdrake:616 #, c-format msgid "Use scanners on remote computers" msgstr "Koristi skenere na udaljenim računarima" #: scannerdrake:619 #, c-format msgid "Use the scanners on hosts: " msgstr "Koristi skenere na računaru:" #: scannerdrake:646 scannerdrake:718 scannerdrake:868 #, c-format msgid "Sharing of local scanners" msgstr "Dijeljenje lokalnih skenera" #: scannerdrake:647 #, c-format msgid "" "These are the machines on which the locally connected scanner(s) should be " "available:" msgstr "Ovo su računari kojima treba dozvoliti korištenje lokalnog skenera:" #: scannerdrake:658 scannerdrake:808 #, c-format msgid "Add host" msgstr "Dodaj računar" #: scannerdrake:664 scannerdrake:814 #, c-format msgid "Edit selected host" msgstr "Izmijeni izabrani računar" #: scannerdrake:673 scannerdrake:823 #, c-format msgid "Remove selected host" msgstr "Ukloni izabrani računar" #: scannerdrake:682 scannerdrake:832 #, c-format msgid "Done" msgstr "Gotovo" #: scannerdrake:697 scannerdrake:705 scannerdrake:710 scannerdrake:756 #: scannerdrake:847 scannerdrake:855 scannerdrake:860 scannerdrake:906 #, c-format msgid "Name/IP address of host:" msgstr "Ime/IP adresa računara:" #: scannerdrake:719 scannerdrake:869 #, c-format msgid "Choose the host on which the local scanners should be made available:" msgstr "Izaberite računar kojem treba omogućiti pristup lokalnim skenerima:" #: scannerdrake:730 scannerdrake:880 #, c-format msgid "You must enter a host name or an IP address.\n" msgstr "Morate unijeti ime računara ili IP.\n" #: scannerdrake:741 scannerdrake:891 #, c-format msgid "This host is already in the list, it cannot be added again.\n" msgstr "Ovaj računar je već na listi, ne možete ga ponovo dodati.\n" #: scannerdrake:796 #, c-format msgid "Usage of remote scanners" msgstr "Upotreba udaljenih skenera" #: scannerdrake:797 #, c-format msgid "These are the machines from which the scanners should be used:" msgstr "Ovo su računari sa koji treba koristiti skenere:" #: scannerdrake:954 #, c-format msgid "" "saned needs to be installed to share the local scanner(s).\n" "\n" "Do you want to install the saned package?" msgstr "" "saned mora biti instaliran za dijeljenje lokalnih skenera.\n" "\n" "Želite li instalirati saned paket?" #: scannerdrake:958 scannerdrake:962 #, c-format msgid "Your scanner(s) will not be available on the network." msgstr "Vaši skeneri neće biti dostupni putem mreže." #: scannerdrake:961 #, c-format msgid "Could not install the packages needed to share your scanner(s)." msgstr "Ne mogu instalirati pakete koji su potrebni za dijeljenje skenera." #: service_harddrake:134 #, c-format msgid "Some devices in the \"%s\" hardware class were removed:\n" msgstr "Uklonjeni su neki uređaji u \"%s\" klasi hardvera:\n" #: service_harddrake:135 #, c-format msgid "- %s was removed\n" msgstr "- %s je uklonjen\n" #: service_harddrake:138 #, c-format msgid "Some devices were added: %s\n" msgstr "Dodani su neki uređaji: %s\n" #: service_harddrake:139 #, c-format msgid "- %s was added\n" msgstr "- %s je dodan\n" #: service_harddrake:264 #, c-format msgid "Hardware probing in progress" msgstr "Hardversko probanje u toku" #: service_harddrake_confirm:7 #, c-format msgid "Hardware changes in \"%s\" class (%s seconds to answer)" msgstr "Hardverske izmjene u klasi \"%s\" (%s sekundi za odgovor)" #: service_harddrake_confirm:8 #, c-format msgid "Do you want to run the appropriate config tool?" msgstr "Želite li pokrenuti odgovarajući konfiguracijski alat ?" #: ../menu/localedrake-system.desktop.in.h:1 #, fuzzy msgid "System Regional Settings" msgstr "Sistemske postavke" #: ../menu/localedrake-system.desktop.in.h:2 msgid "System wide language & country configurator" msgstr "" #: ../menu/harddrake.desktop.in.h:1 msgid "HardDrake" msgstr "HardDrake" #: ../menu/harddrake.desktop.in.h:2 #, fuzzy msgid "Hardware Central Configuration/information tool" msgstr "Podešavanje hardvera" #: ../menu/harddrake.desktop.in.h:3 #, fuzzy msgid "Hardware Configuration Tool" msgstr "Podešavanje hardvera" #: ../menu/localedrake-user.desktop.in.h:1 #, fuzzy msgid "Language & country configuration" msgstr "Ručno podešavanje" #: ../menu/localedrake-user.desktop.in.h:2 #, fuzzy msgid "Regional Settings" msgstr "Podešavanja" #~ msgid "" #~ "Here, you can setup the security level and administrator of your " #~ "machine.\n" #~ "\n" #~ "\n" #~ "The 'Security Administrator' is the one who " #~ "will receive security alerts if the\n" #~ "'Security Alerts' option is set. It can be a " #~ "username or an email.\n" #~ "\n" #~ "\n" #~ "The 'Security Level' menu allows you to " #~ "select one of the six preconfigured security levels\n" #~ "provided with msec. These levels range from 'poor' security and ease of use, to\n" #~ "'paranoid' config, suitable for very " #~ "sensitive server applications:\n" #~ "\n" #~ "\n" #~ "Poor: This is a totally unsafe but " #~ "very\n" #~ "easy to use security level. It should only be used for machines not " #~ "connected to\n" #~ "any network and that are not accessible to everybody.\n" #~ "\n" #~ "\n" #~ "Standard: This is the standard " #~ "security\n" #~ "recommended for a computer that will be used to connect to the Internet " #~ "as a\n" #~ "client.\n" #~ "\n" #~ "\n" #~ "High: There are already some\n" #~ "restrictions, and more automatic checks are run every night.\n" #~ "\n" #~ "\n" #~ "Higher: The security is now high " #~ "enough\n" #~ "to use the system as a server which can accept connections from many " #~ "clients. If\n" #~ "your machine is only a client on the Internet, you should choose a lower " #~ "level.\n" #~ "\n" #~ "\n" #~ "Paranoid: This is similar to the " #~ "previous\n" #~ "level, but the system is entirely closed and security features are at " #~ "their\n" #~ "maximum" #~ msgstr "" #~ "Ovdje možete podesiti nivo sigurnosti i administratora ovog računara.\n" #~ "\n" #~ "\n" #~ "'Sigurnosni administrator' je onaj koji će " #~ "dobijati sigurnosna upozorenja\n" #~ "ako je aktivna opcija 'Sigurnosna upozorenja'. Ovo može biti korisničko\n" #~ "ime ili e-mail.\n" #~ "\n" #~ "\n" #~ "Meni 'Nivo sigurnosti' vam omogućuje da " #~ "izaberete jedan od šest gotovih\n" #~ "nivoa sigurnosti koje pruža msec. Ovi nivoi imaju raspon od 'slabe'\n" #~ "sigurnosti i jednostavnog korištenja, do 'paranoidnih' postavki, prikladnih za\n" #~ "vrlo osjetljive serverske primjene:\n" #~ "\n" #~ "\n" #~ "Slab: Ovo je potpuno " #~ "neupotrebljiv\n" #~ "nivo sigurnosti, ali lagan za upotrebu. Treba ga koristiti samo na " #~ "računarima\n" #~ "koji nisu spojeni na mrežu i koji nisu dostupni svakome.\n" #~ "\n" #~ "\n" #~ "Standardan: Ovo je standardna\n" #~ "sigurnost koja se preporučuje za računar koji će biti korišten za " #~ "spajanje\n" #~ "na Internet kao klijent.\n" #~ "\n" #~ "\n" #~ "Visok: Postoje već neka\n" #~ "ograničenja, a automatizovane provjere se vrše svake noći.\n" #~ "\n" #~ "\n" #~ "Viši: Sigurnost je sada dovoljno\n" #~ "visoka da bi se sistem mogao koristiti kao server koji prihvata " #~ "konekcije\n" #~ "od mnogih klijenata. Ako je vaš računar samo klijent na Internetu, " #~ "trebali\n" #~ "biste izabrati niži nivo.\n" #~ "\n" #~ "\n" #~ "Paranoičan: Ovo je slično kao\n" #~ "prethodni nivo, ali je sistem potpuno zatvoren i sigurnosne mogućnosti\n" #~ "su na maksimumu." #~ msgid "(default value: %s)" #~ msgstr " (default vrijednost: %s)" #~ msgid "Security Level:" #~ msgstr "Nivo sigurnosti:" #~ msgid "Security Alerts:" #~ msgstr "Sigurnosna upozorenja:" #~ msgid "Security Administrator:" #~ msgstr "Sigurnosni administrator:" #~ msgid "Basic options" #~ msgstr "Osnovne opcije" #~ msgid "Network Options" #~ msgstr "Mrežne opcije" #~ msgid "System Options" #~ msgstr "Sistemske opcije" #~ msgid "Periodic Checks" #~ msgstr "Periodične provjere" #~ msgid "Please wait, setting security level..." #~ msgstr "Molim sačekajte, podešavam nivo sigurnosti..." #~ msgid "Please wait, setting security options..." #~ msgstr "Molim sačekajte, podešavam sigurnosne opcije..." #, fuzzy #~ msgid "" #~ "The following localization packages do not seem to be useful for your " #~ "system:" #~ msgstr "Sljedeći paketi trebaju biti instalirani:\n" #, fuzzy #~ msgid "Do you want to remove these packages?" #~ msgstr "Želite li pokrenuti odgovarajući konfiguracijski alat ?" #, fuzzy #~ msgid "" #~ "The following hardware packages do not seem to be useful for your system:" #~ msgstr "Sljedeći paketi trebaju biti instalirani:\n" #~ msgid "Please wait, adding media..." #~ msgstr "Molim sačekajte, dodajem medije..." #~ msgid "The change is done, but to be effective you must logout" #~ msgstr "" #~ "Izmjena je napravljena, ali da bi stupila na snagu morate se odjaviti" #~ msgid "Restart XFS" #~ msgstr "Restartuj XFS" #~ msgid "Copyright (C) 2001-2008 by Mandriva" #~ msgstr "Autorska prava (C) 2001-2008, Mandriva" #~ msgid "Error!" #~ msgstr "Greška!" #~ msgid "I can not find needed image file `%s'." #~ msgstr "Ne mogu pronaći potrebnu image datoteku '%s'" #~ msgid "Auto Install Configurator" #~ msgstr "Podešavanje auto instalacije" #~ msgid "" #~ "You are about to configure an Auto Install floppy. This feature is " #~ "somewhat dangerous and must be used circumspectly.\n" #~ "\n" #~ "With that feature, you will be able to replay the installation you've " #~ "performed on this computer, being interactively prompted for some steps, " #~ "in order to change their values.\n" #~ "\n" #~ "For maximum safety, the partitioning and formatting will never be " #~ "performed automatically, whatever you chose during the install of this " #~ "computer.\n" #~ "\n" #~ "Press ok to continue." #~ msgstr "" #~ "Sada ćete podesiti autoinstalacijsku disketu. Ova opcija je pomalo opasna " #~ "i mora biti korištena uz pažnju.\n" #~ "\n" #~ "Sa ovom opcijom bićete u mogućnosti da ponovite instalaciju koju ste " #~ "obavili na ovom računaru, pri ćemu ćete biti interaktivno upitani za neke " #~ "korake kako biste promijenili njihove vrijednosti.\n" #~ "\n" #~ "Zbog maksimalne sigurnosti, particioniranje i formatiranje nikad neće " #~ "biti obavljeno automatski, bez obzira šta izaberete tokom instalacije na " #~ "ovaj računar.\n" #~ "\n" #~ "Pritisnite \"U redu\" za nastavak." #~ msgid "replay" #~ msgstr "ponovi" #~ msgid "manual" #~ msgstr "ručno" #~ msgid "Automatic Steps Configuration" #~ msgstr "Automatska konfiguracija koraka" #~ msgid "" #~ "Please choose for each step whether it will replay like your install, or " #~ "it will be manual" #~ msgstr "" #~ "Molim izaberite za svaki korak da li ćete ga ponoviti kao i u vašoj " #~ "instalaciji ili će se obaviti ručno" #~ msgid "Insert a blank floppy in drive %s" #~ msgstr "Ubacite praznu disketu u jedinicu %s" #~ msgid "Creating auto install floppy" #~ msgstr "Pravim autoinstalacijsku disketu" #~ msgid "Insert another blank floppy in drive %s (for drivers disk)" #~ msgstr "Ubacite još jednu praznu disketu u jedinicu %s (za drajvere)" #~ msgid "Creating auto install floppy (drivers disk)" #~ msgstr "Pravim autoinstalacijsku disketu (drajver disk)" #~ msgid "" #~ "\n" #~ "Welcome.\n" #~ "\n" #~ "The parameters of the auto-install are available in the sections on the " #~ "left" #~ msgstr "" #~ "\n" #~ "Dobro došli.\n" #~ "\n" #~ "Parametri automatske instalacije su dostupni u odjeljcima lijevo" #~ msgid "" #~ "The floppy has been successfully generated.\n" #~ "You may now replay your installation." #~ msgstr "" #~ "Disketa je uspješno napravljena.\n" #~ "Sada možete ponoviti vašu instalaciju." #~ msgid "Auto Install" #~ msgstr "Auto instalacija" #~ msgid "Add an item" #~ msgstr "Dodaj stavku" #~ msgid "Remove the last item" #~ msgstr "Ukloniti zadnju stavku" #~ msgid "Menudrake" #~ msgstr "Menudrake" #~ msgid "Msec" #~ msgstr "Msec" #~ msgid "Urpmi" #~ msgstr "Urpmi" #~ msgid "Userdrake" #~ msgstr "Userdrake" 05'>2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824
package printerdrake;
# $Id$
use diagnostics;
use strict;


use common;
use detect_devices;
use modules;
use network;
use log;
use printer;

1;

sub choose_printer_type {
    my ($printer, $in) = @_;
    $in->set_help('configurePrinterConnected') if $::isInstall;
    my $queue = $printer->{OLD_QUEUE};
    $printer->{str_type} = $printer::printer_type_inv{$printer->{TYPE}};
    $printer->{str_type} = 
	$in->ask_from_list_(_("Select Printer Connection"),
			    _("How is the printer connected?") .
			    ($printer->{SPOOLER} eq "cups" ?
			     _("
Printers on remote CUPS servers you do not have to configure here; these printers will be automatically detected.") : ()),
			    [ printer::printer_type($printer) ],
			    $printer->{str_type},
			    ) or return 0;
    $printer->{TYPE} = $printer::printer_type{$printer->{str_type}};
    1;
}

sub setup_remote_cups_server {
    my ($printer, $in) = @_;

    local $::isWizard = 0;
    # Check whether the network functionality is configured and
    # running
    if (!check_network($printer, $in)) {return 0};

    $in->set_help('configureRemoteCUPSServer') if $::isInstall;
    my $queue = $printer->{OLD_QUEUE};
    #- hack to handle cups remote server printing,
    #- first read /etc/cups/cupsd.conf for variable BrowsePoll address:port
    my ($server, $port, $default, $autoconf);
    # Return value: 0 when nothing was changed ("Apply" never pressed), 1
    # when "Apply" was at least pressed once.
    my $retvalue = 0;
    while (1) {
	# Read CUPS config file
	my @cupsd_conf = printer::read_cupsd_conf();
	foreach (@cupsd_conf) {
	    /^\s*BrowsePoll\s+(\S+)/ and $server = $1, last;
	}
	$server =~ /([^:]*):(.*)/ and ($server, $port) = ($1, $2);
	# Read printer list
	my @queuelist = printer::read_cups_printer_list($printer);
	if ($#queuelist >=0) {
	    if ($printer->{DEFAULT} eq '') {
		$default = printer::get_default_printer($printer);
		if ($default) {
		    # If a CUPS system has only remote printers and no default
		    # printer defined, it defines the first printer whose
		    # broadcast signal appeared after the start of the CUPS
		    # daemon, so on every start another printer gets the
		    # default printer. To avoid this, make sure that the
		    # default printer is defined.
		    $printer->{DEFAULT} = $default;
		    printer::set_default_printer($printer);
		}
	    } else {
		$default = $printer->{DEFAULT};
	    }
	    my $queue;
	    for $queue (@queuelist) {
		if ($queue =~ /^\s*$default/) {
		    $default = $queue;
		}
	    }
	    # The default printer setting should not be "None" when there
	    # are printers
	    if ($default eq _("None")) {
		$default = _("Choose a default printer!");
	    }
	} else {
	    push(@queuelist, _("None"));
	    $default = _("None");
	}
	#- Did we have automatic or manual configuration mode for CUPS
	$autoconf = printer::get_cups_autoconf();
	#- Remember the server/port/autoconf settings to check whether the user
        #- has changed them.
	my $oldserver = $server;
	my $oldport = $port;
	my $oldautoconf = $autoconf;

        #- then ask user for this combination and rewrite /etc/cups/cupsd.conf
	#- according to new settings. There are no other point where such
	#- information is written in this file.

	if ($in->ask_from_
	    ({ title => _("Remote CUPS server"),
	       messages => _("With remote CUPS servers, you do not have to configure any printer here; CUPS servers inform your machine automatically about their printers. All printers known to your machine currently are listed in the \"Default printer\" field. Choose the default printer for your machine there and click the \"Apply/Re-read printers\" button. Click the same button to refresh the list (it can take up to 30 seconds after the start of CUPS until all remote printers are visible). When your CUPS server is in a different network, you have to give the CUPS server IP address and optionally the port number to get the printer information from the server, otherwise leave these fields blank.") .
              ($::expert ? _("
Normally, CUPS is automatically configured according to your network environment, so that you can access the printers on the CUPS servers in your local network. If this does not work correctly, turn off \"Automatic CUPS configuration\" and edit your file /etc/cups/cupsd.conf manually. Do not forget to restart CUPS afterwards (command: \"service cups restart\").") : ()),
              cancel => _("Close"),
              ok => _("Apply/Re-read printers"),
	      callbacks => { complete => sub {
		 unless (!$server || network::is_ip($server)) {
		     $in->ask_warn('', 
			_("The IP address should look like 192.168.1.20"));
		     return (1,0);
		 }
		 if ($port !~ /^\d*$/) {
		     $in->ask_warn('',
			_("The port number should be an integer!"));
		     return (1,1);
		 }
		 return 0;
	     } }
	   },
	     [	
		{ label => _("Default printer"), val => \$default,
		  not_edit => 0, list => \@queuelist},
		#{ label => _("Default printer") },
		#{ val => \$default,
		#  format => \&translate, not_edit => 0, list => \@queuelist},
		{ label => _("CUPS server IP"), val => \$server },
		{ label => _("Port"), val => \$port },
		($::expert ?
		{ text => _("Automatic CUPS configuration"), type => 'bool',
		  val => \$autoconf } : ()),
		]
	     )) {
	    # We have clicked "Apply/Re-read"
	    $retvalue = 1;
	    # Set default printer
	    if ($default =~ /^\s*([^\s\(\)]+)\s*\(/) {
		$default = $1;
	    }
	    if (($default ne _("None")) &&
		($default ne _("Choose a default printer!"))) {
		$printer->{DEFAULT} = $default;
	        printer::set_default_printer($printer);
	    }
	    # Set BrowsePoll line
	    if (($server ne $oldserver) || ($port ne $oldport)) {
		$server && $port and $server = "$server:$port";
		if ($server) {
		    @cupsd_conf = 
			map { $server and 
			      s/^\s*BrowsePoll\s+(\S+)/BrowsePoll $server/ and
				  $server = '';
			      $_ } @cupsd_conf;
		    $server and push @cupsd_conf, "\nBrowsePoll $server\n";
		} else {
		    @cupsd_conf = 
			map { s/^\s*BrowsePoll\s+(\S+)/\#BrowsePoll $1/;
			      $_ } @cupsd_conf;
		}
	        printer::write_cupsd_conf(@cupsd_conf);
	    }
	    # Set auto-configuration state
	    if ($autoconf != $oldautoconf) {
	        printer::set_cups_autoconf($autoconf);
	    }
	} else {
	    last;
	}
    }
    # Save user settings for auto-install
    $printer->{BROWSEPOLLADDR} = $server;
    $printer->{BROWSEPOLLPORT} = $port;
    $printer->{MANUALCUPSCONFIG} = 1 - $autoconf;
    return $retvalue;
}

sub setup_printer_connection {
    my ($printer, $in) = @_;
    # Choose the appropriate connection config dialog
    my $done = 1;
    for ($printer->{TYPE}) {
	/LOCAL/     and setup_local    ($printer, $in) and last;
	/LPD/       and setup_lpd      ($printer, $in) and last;
	/SOCKET/    and setup_socket   ($printer, $in) and last;
	/SMB/       and setup_smb      ($printer, $in) and last;
	/NCP/       and setup_ncp      ($printer, $in) and last;
	/URI/       and setup_uri      ($printer, $in) and last;
	/POSTPIPE/  and setup_postpipe ($printer, $in) and last;
	$done = 0; last;
    }
    return $done;
}

sub auto_detect {
    my ($in) = @_;
    {
	my $w = $in->wait_message(_("Test ports"), _("Detecting devices ..."));
	modules::get_alias("usb-interface") and eval { modules::load("printer"); sleep(2); };
	foreach (qw(lp parport_pc parport_probe parport)) {
	    eval { modules::unload($_); }; #- on kernel 2.4 parport has to be unloaded to probe again
	}
	foreach (qw(parport_pc lp parport_probe)) {
	    eval { modules::load($_); }; #- take care as not available on 2.4 kernel (silent error).
	}
    }
    my $b = before_leaving { eval { modules::unload("parport_probe") } };
    detect_devices::whatPrinter();
}

sub wizard_welcome {
    my ($printer, $in) = @_;
    my $ret;
    my $autodetect = 1;
    $autodetect = 0 if ($printer->{NOAUTODETECT});
    if ($in) {
	eval {
	    if ($::expert) {
		$ret = $in->ask_okcancel
		    (_("Add a new printer"),
		     _("
Welcome to the Printer Setup Wizard

This wizard allows you to install local or remote printers to be used from this machine and also from other machines in the network.

It asks you for all necessary information to set up the printer and gives you access to all available printer drivers, driver options, and printer connection types."));
	    } else {
		$ret = $in->ask_from_
		    ({title => _("Local Printer"),
		      messages => _("
Welcome to the Printer Setup Wizard

This wizard will help you to install your printer(s) connected to this computer.

Please plug in your printer(s) on this computer and turn it/them on. Click on \"Next\" when you are ready, and on \"Cancel\" when you do not want to set up your printer(s) now.

Note that some computers can crash during the printer auto-detection, turn off \"Auto-detect printers\" to do a printer installation without auto-detection. Use the \"Expert Mode\" of printerdrake when you want to set up printing on a remote printer if printerdrake does not list it automatically.")},
		     [
		      { text => _("Auto-detect printers"), type => 'bool',
			val => \$autodetect},
		      ]);
		if (!$autodetect) {
		    $printer->{NOAUTODETECT} = 1;
		} else {
		    undef $printer->{NOAUTODETECT};
		}
	    }
	};
	return ($@ =~ /wizcancel/) ? 0 : $ret;
    }
}

sub wizard_congratulations {
    my ($in) = @_;
    if ($in) {
	$in->ask_okcancel(_("Local Printer"),
			  _("
Congratulations, your printer is now installed and configured!

You can print using the \"Print\" command of your application (usually in the \"File\" menu).

If you want to add, remove, or rename a printer, or if you want to change the default option settings (paper input tray, printout quality, ...), select \"Printer\" in the \"Hardware\" section of the Mandrake Control Center."))
    }
}

sub setup_local {
    my ($printer, $in) = @_;
    my (@port, @str, $device);
    my $queue = $printer->{OLD_QUEUE};
    my $do_auto_detect;
    if ((!$::expert) && ($::isWizard)) {
	$do_auto_detect = !$printer->{NOAUTODETECT};
    } else {
	local $::isWizard = 0;
	my $res = $in->ask_from_list_
	    (_("Auto-Detection of Printers"),
	     _("Printerdrake is able to auto-detect your locally connected parallel and USB printers for you, but note that on some systems the auto-detection CAN FREEZE YOUR SYSTEM AND THIS CAN LEAD TO CORRUPTED FILE SYSTEMS! So do it ON YOUR OWN RISK!

Do you really want to get your printers auto-detected?"),
	     [_("Do auto-detection"),
	      _("Set up printer manually")],
	     _("Do auto-detection"));
	$do_auto_detect = ($res eq _("Do auto-detection"));
    }
    my @parport = ();
    my $menuentries = {};
    $in->set_help('setupLocal') if $::isInstall;
    if ($do_auto_detect) {
	# When HPOJ is running, it blocks the printer ports on which it is
	# configured, so we stop it here. If it is not installed or not 
	# configured, this command has no effect.
	printer::stop_service("hpoj");
	@parport = auto_detect($in);
	for my $p (@parport) {
	    if ($p->{val}{DESCRIPTION}) {
		my $menustr = $p->{val}{DESCRIPTION};
		if ($p->{port} =~ m!^/dev/lp(\d+)$!) {
		    $menustr .= _(" on parallel port \#%s", $1);
		} elsif ($p->{port} =~ m!^/dev/usb/lp(\d+)$!) {
		    $menustr .= _(", USB printer \#%s", $1);
		}
		if ($::expert) {
		    $menustr .= " ($p->{port})";
		}
		$menuentries->{$menustr} = $p->{port};
		push @str, _("Detected %s", $menustr);
	    } else {
		my $menustr;
		if ($p->{port} =~ m!^/dev/lp(\d+)$!) {
		    $menustr = _("Printer on parallel port \#%s", $1);
		} elsif ($p->{port} =~ m!^/dev/usb/lp(\d+)$!) {
		    $menustr = _("USB printer \#%s", $1);
		}
		if ($::expert) {
		    $menustr .= " ($p->{port})";
		}
		$menuentries->{$menustr} = $p->{port};
	    }
	}
	if ($::expert) {
	    @port = detect_devices::whatPrinterPort();
	    for my $q (@port) {
		if (@str) {
		    my $alreadyfound = 0;
		    for my $p (@parport) {
			if ($p->{port} eq $q) {
			    $alreadyfound = 1;
			    last;
			}
		    }
		    if ($alreadyfound) {
			next;
		    }
		}
		my $menustr;
		if ($q =~ m!^/dev/lp(\d+)$!) {
		    $menustr = _("Printer on parallel port \#%s", $1);
		} elsif ($q =~ m!^/dev/usb/lp(\d+)$!) {
		    $menustr = _("USB printer \#%s", $1);
		}
		if ($::expert) {
		    $menustr .= " ($q)";
		}
		$menuentries->{$menustr} = $q;
	    }
	}
	# We are ready with auto-detection, so we restart HPOJ here. If it 
	# is not installed or not configured, this command has no effect.
	printer::start_service("hpoj");
    } else {
	my $m;
	for ($m = 0; $m <= 2; $m++) {
	    my $menustr = _("Printer on parallel port \#%s", $m);
	    if ($::expert) {
		$menustr .= " (/dev/lp$m)";
	    }
	    $menuentries->{$menustr} = "/dev/lp$m";
	    $menustr = _("USB printer \#%s", $m);
	    if ($::expert) {
		$menustr .= " (/dev/usb/lp$m)";
	    }
	    $menuentries->{$menustr} = "/dev/usb/lp$m";
	}
    }
    my @menuentrieslist = sort { $menuentries->{$a} cmp $menuentries->{$b} }
    keys(%{$menuentries});
    my $menuchoice = "";
    my $oldmenuchoice = "";
    if (($printer->{configured}{$queue}) &&
	($printer->{currentqueue}{'connect'} =~ m/^file:/)) {
	# Non-HP or HP print-only device (HPOJ not used)
	$device = $printer->{currentqueue}{'connect'};
	$device =~ s/^file://;
	for my $p (keys %{$menuentries}) {
	    if ($device eq $menuentries->{$p}) {
		$menuchoice = $p;
		last;
	    }
	}
    } elsif (($printer->{configured}{$queue}) &&
	($printer->{currentqueue}{'connect'} =~ m!^ptal:/mlc:!)) {
	# HP multi-function device (controlled by HPOJ)
	my $ptaldevice = $printer->{currentqueue}{'connect'};
	$ptaldevice =~ s!^ptal:/mlc:!!;
	if ($ptaldevice =~ /^par:(\d+)$/) {
	    $device = "/dev/lp$1";
	    for my $p (keys %{$menuentries}) {
		if ($device eq $menuentries->{$p}) {
		    $menuchoice = $p;
		    last;
		}
	    }
	} else {
	    my $make = lc($printer->{currentqueue}{'make'});
	    my $model = lc($printer->{currentqueue}{'model'});
	    $device = "";
	    for my $p (keys %{$menuentries}) {
		my $menumakemodel = lc($p);
		if (($menumakemodel =~ /$make/) && 
		    ($menumakemodel =~ /$model/)) {
		    $menuchoice = $p;
		    $device = $menuentries->{$p};
		    last;
		}
	    }
	}
    } else {
	$device = "";
    }
    if (($menuchoice eq "") && (@menuentrieslist > -1)) {
	$menuchoice = $menuentrieslist[0];
	$oldmenuchoice = $menuchoice;
	if ($device eq "") {
	    $device = $menuentries->{$menuchoice};
	}
    }
    if ($in) {
	$::expert or $in->set_help('configurePrinterDev') if $::isInstall;
	if ($#menuentrieslist < 0) { # No menu entry
	    # auto-detection has failed, we must do all manually
	    $do_auto_detect = 0;
	    $printer->{MANUAL} = 1;
	    if ($::expert) {
		$device = $in->ask_from_entry
		    (_("Local Printer"),
		     _("No local printer found! To manually install a printer enter a device name/file name in the input line (Parallel Ports: /dev/lp0, /dev/lp1, ..., equivalent to LPT1:, LPT2:, ..., 1st USB printer: /dev/usb/lp0, 2nd USB printer: /dev/usb/lp1, ...)."),
		     { 
			 complete => sub {
			     unless ($menuchoice ne "") {
				 $in->ask_warn('', _("You must enter a device or file name!"));
				 return (1,0);
			     }
			     return 0;
			 }
		     });
		if ($device eq "") {
		    return 0;
		}
	    } else {
		$in->ask_warn(_("Local Printer"),
			      _("No local printer found!\n\n") . 
			      ($::isInstall ? _("Network printers can only be installed after the installation. Choose \"Hardware\" and then \"Printer\" in the Mandrake Control Center.") :
			       _("To install network printers, click \"Cancel\", switch to the \"Expert Mode\", and click \"Add a new printer\" again.")));
		return 0;
	    }
	} else {
	    my $manualconf = 0;
	    $manualconf = 1 if (($printer->{MANUAL}) || (!$do_auto_detect));
	    if (!$in->ask_from_(
	    {title => _("Local Printer"),
	     messages => (($do_auto_detect ?
			  ($::expert ?
			   (($#menuentrieslist == 0) ?
_("The following printer was auto-detected, if it is not the one you want to configure, enter a device name/file name in the input line") :
_("Here is a list of all auto-detected printers. Please choose the printer you want to set up or enter a device name/file name in the input line")) :
			   (($#menuentrieslist == 0) ?
_("The following printer was auto-detected. The configuration of the printer will work fully automatically. If your printer was not correctly detected or if you prefer a customized printer configuration, turn on \"Manual configuration\".") :
_("Here is a list of all auto-detected printers. Please choose the printer you want to set up. The configuration of the printer will work fully automatically. If your printer was not correctly detected or if you prefer a customized printer configuration, turn on \"Manual configuration\"."))) :
			  ($::expert ?
_("Please choose the port where your printer is connected to or enter a device name/file name in the input line") :
_("Please choose the port where your printer is connected to."))) .
			 ($::expert ?
_(" (Parallel Ports: /dev/lp0, /dev/lp1, ..., equivalent to LPT1:, LPT2:, ..., 1st USB printer: /dev/usb/lp0, 2nd USB printer: /dev/usb/lp1, ...).") :
			  ())), 
             callbacks => {
		 complete => sub {
		     unless ($menuchoice ne "") {
			 $in->ask_warn('', _("You must choose/enter a printer/device!"));
			 return (1,0);
		     }
		     return 0;
		 },
		 changed => sub {
		     if ($oldmenuchoice ne $menuchoice) {
			 $device = $menuentries->{$menuchoice};
			 $oldmenuchoice = $menuchoice;
		     }
		     return 0;
		 }
	     }},
            [
	     ($::expert ? 
	      { val => \$device } : ()),
	     { val => \$menuchoice, list => \@menuentrieslist, 
	       not_edit => !$::expert, format => \&translate,
	       allow_empty_list => 1, type => 'list' },
	     (((!$::expert) && ($do_auto_detect)) ? 
	      { text => _("Manual configuration"), type => 'bool',
		val => \$manualconf } : ()),
	    ]
	    )) {
		return 0;
	    }
	    if ($manualconf) {
		$printer->{MANUAL} = 1;
	    } else {
		undef $printer->{MANUAL};
	    }
	}
    }

    #- Check whether the printer is an HP multi-function device and 
    #- configure HPOJ if it is one

    my $ptaldevice = "";
    my $isHPOJ = 0;
    if (!$do_auto_detect) {
	local $::isWizard = 0;
	$isHPOJ = $in->ask_yesorno(_("Local Printer"),
				   _("Is your printer a multi-function device from HP (OfficeJet, PSC, PhotoSmart LaserJet 1100/1200/1220/3200 with scanner)?"), 0);
    }
    if (($menuchoice =~ /HP\s+OfficeJet/i) ||
	($menuchoice =~ /HP\s+PSC/i) ||
	($menuchoice =~ /HP\s+PhotoSmart/i) ||
	($menuchoice =~ /HP\s+LaserJet\s+1100/i) ||
	($menuchoice =~ /HP\s+LaserJet\s+1200/i) ||
	($menuchoice =~ /HP\s+LaserJet\s+1220/i) ||
	($menuchoice =~ /HP\s+LaserJet\s+3200/i) ||
	($isHPOJ)) {
	# Install HPOJ package
	if ((!$::testing) &&
	    (!printer::files_exist((qw(/usr/sbin/ptal-mlcd
				       /etc/ptal-start.conf))))) {
	    my $w = $in->wait_message('', _("Installing HPOJ package..."));
	    $in->do_pkgs->install('hpoj');
	}
	# Configure and start HPOJ
	my $w = $in->wait_message
	    ('', _("Checking device and configuring HPOJ ..."));
	$ptaldevice = printer::configure_hpoj($device, @parport);

	if ($ptaldevice) {
	    # Configure scanning with SANE on the MF device
	    if (($menuchoice =~ /HP\s+OfficeJet\s+[KVRGP]/i) ||
		($menuchoice =~ /HP\s+PSC\s+[579]/i)) {
		# Install SANE
		if ((!$::testing) &&
		    (!printer::files_exist((qw(/usr/bin/scanimage
					       /usr/bin/xscanimage
					       /usr/bin/xsane
					       /etc/sane.d/dll.conf),
					    (printer::files_exist
					     ('/usr/bin/gimp') ? 
					     '/usr/bin/xsane-gimp' : 
					     ()))))) {
		    my $w = $in->wait_message
			('', _("Installing SANE package..."));
		    $in->do_pkgs->install('sane-backends', 'sane-frontends',
					  'xsane', 
					  if_($in->do_pkgs->is_installed
					      ('gimp'),'xsane-gimp'));
		}
		# Configure the HP SANE backend
		printer::config_sane($ptaldevice);
	    }
	    # Inform user about how to scan with his MF device
	    my $text = scanner_help($menuchoice, "ptal:/$ptaldevice");
	    if ($text) {
		$in->ask_warn(_("Scanning on your HP multi-function device"),
			      $text);
	    }
	    # make the DeviceURI from $ptaldevice.
	    $printer->{currentqueue}{'connect'} = "ptal:/" . $ptaldevice;
	} else {
	    # make the DeviceURI from $device.
	    $printer->{currentqueue}{'connect'} = "file:" . $device;
	}
    } else {
	# make the DeviceURI from $device.
	$printer->{currentqueue}{'connect'} = "file:" . $device;
    }

    #- if CUPS is the spooler, make sure that CUPS knows the device
    if ($printer->{SPOOLER} eq "cups") {
	my $w = $in->wait_message
	    ('', _("Making printer port available for CUPS ..."));
	if ($ptaldevice eq "") {
	    printer::assure_device_is_available_for_cups($device);
	} else {
	    printer::assure_device_is_available_for_cups($ptaldevice);
	}
    }

    #- Read the printer driver database if necessary
    if ((keys %printer::thedb) == 0) {
	my $w = $in->wait_message('', _("Reading printer database ..."));
        printer::read_printer_db($printer->{SPOOLER});
    }

    #- Search the database entry which matches the detected printer best
    my $descr = "";
    foreach (@parport) {
	$device eq $_->{port} or next;
	$descr = $_->{val}{DESCRIPTION};
	# Clean up the description from noise which makes the best match
	# difficult
	$descr =~ s/\s+Inc\.//;
	$descr =~ s/\s+Corp\.//;
	$descr =~ s/\s+SA\.//;
	$descr =~ s/\s+S\.\s*A\.//;
	$descr =~ s/\s+Ltd\.//;
	$descr =~ s/\s+International//;
	$descr =~ s/\s+Int\.//;
	$descr =~ s/\s+\(?[Pp]rinter\)?$//;
	
        $printer->{DBENTRY} =
            bestMatchSentence ($descr, keys %printer::thedb);
        # If the manufacturer was not guessed correctly, discard the
        # guess.
        $printer->{DBENTRY} =~ /^([^\|]+)\|/;
        my $guessedmake = lc($1);
        if (($descr !~ /$guessedmake/i) &&
            (($guessedmake ne "hp") ||
             ($descr !~ /Hewlett[\s-]+Packard/i)))
            {$printer->{DBENTRY} = ""};
    }
    if ((!$printer->{currentqueue}{'desc'}) && ($descr)) {
	$printer->{currentqueue}{'desc'} = $descr;
    }
    1;
}

sub setup_lpd {
    my ($printer, $in) = @_;

    # Check whether the network functionality is configured and
    # running
    if (!check_network($printer, $in)) {return 0};

    $in->set_help('setupLPD') if $::isInstall;
    my ($uri, $remotehost, $remotequeue);
    my $queue = $printer->{OLD_QUEUE};
    if (($printer->{configured}{$queue}) &&
	($printer->{currentqueue}{'connect'} =~ m/^lpd:/)) {
	$uri = $printer->{currentqueue}{'connect'};
	$uri =~ m!^\s*lpd://([^/]+)/([^/]+)/?\s*$!;
	$remotehost = $1;
	$remotequeue = $2;
    } else {
	$remotehost = "";
	$remotequeue = "lp";
    }

    return if !$in->ask_from(_("Remote lpd Printer Options"),
_("To use a remote lpd printer, you need to supply the hostname of the printer server and the printer name on that server."), [
{ label => _("Remote host name"), val => \$remotehost },
{ label => _("Remote printer name"), val => \$remotequeue } ],
complete => sub {
    unless ($remotehost ne "") {
	$in->ask_warn('', _("Remote host name missing!"));
	return (1,0);
    }
    unless ($remotequeue ne "") {
	$in->ask_warn('', _("Remote printer name missing!"));
	return (1,1);
    }
    return 0;
}
			      );
    #- make the DeviceURI from user input.
    $printer->{currentqueue}{'connect'} = 
        "lpd://$remotehost/$remotequeue";

    #- LPD does not support filtered queues to a remote LPD server by itself
    #- It needs an additional program as "rlpr"
    if (($printer->{SPOOLER} eq 'lpd') && (!$::testing) &&
        (!printer::files_exist((qw(/usr/bin/rlpr))))) {
        $in->do_pkgs->install('rlpr');
    }

    1;
}

sub setup_smb {
    my ($printer, $in) = @_;

    # Check whether the network functionality is configured and
    # running
    if (!check_network($printer, $in)) {return 0};

    $in->set_help('setupSMB') if $::isInstall;
    my ($uri, $smbuser, $smbpassword, $workgroup, $smbserver, $smbserverip, $smbshare);
    my $queue = $printer->{OLD_QUEUE};
    if (($printer->{configured}{$queue}) &&
	($printer->{currentqueue}{'connect'} =~ m/^smb:/)) {
	$uri = $printer->{currentqueue}{'connect'};
	$uri =~ m!^\s*smb://(.*)$!;
	my $parameters = $1;
	# Get the user's login and password from the URI
	if ($parameters =~ m!([^@]*)@([^@]+)!) {
	    my $login = $1;
	    $parameters = $2;
	    if ($login =~ m!([^:]*):([^:]*)!) {
		$smbuser = $1;
		$smbpassword = $2;
	    } else {
		$smbuser = $login;
		$smbpassword = "";
	    }
	} else {
	    $smbuser = "";
	    $smbpassword = "";
	}
	# Get the workgroup, server, and share name
	if ($parameters =~ m!([^/]*)/([^/]+)/([^/]+)$!) {
	    $workgroup = $1;
	    $smbserver = $2;
	    $smbshare = $3;
	} elsif ($parameters =~ m!([^/]+)/([^/]+)$!) {
	    $workgroup = "";
	    $smbserver = $1;
	    $smbshare = $2;
	} else {
	    die "The \"smb://\" URI must at least contain the server name and the share name!\n";
	}
	if (network::is_ip($smbserver)) {
	    $smbserverip = $smbserver;
	    $smbserver = "";
	}
    }

    return if !$in->ask_from(_("SMB (Windows 9x/NT) Printer Options"),
_("To print to a SMB printer, you need to provide the SMB host name (Note! It may be different from its TCP/IP hostname!) and possibly the IP address of the print server, as well as the share name for the printer you wish to access and any applicable user name, password, and workgroup information."), [
{ label => _("SMB server host"), val => \$smbserver },
{ label => _("SMB server IP"), val => \$smbserverip },
{ label => _("Share name"), val => \$smbshare },
{ label => _("User name"), val => \$smbuser },
{ label => _("Password"), val => \$smbpassword, hidden => 1 },
{ label => _("Workgroup"), val => \$workgroup }, ],
complete => sub {
    unless ((network::is_ip($smbserverip)) || ($smbserverip eq "")) {
	$in->ask_warn('', _("IP address should be in format 1.2.3.4"));
	return (1,1);
    }
    unless (($smbserver ne "") || ($smbserverip ne "")) {
	$in->ask_warn('', _("Either the server name or the server's IP must be given!"));
	return (1,0);
    }
    unless ($smbshare ne "") {
	$in->ask_warn('', _("Samba share name missing!"));
	return (1,2);
    }
    return 0;
}
    );
    #- make the DeviceURI from, try to probe for available variable to
    #- build a suitable URI.
    $printer->{currentqueue}{'connect'} =
    join '', ("smb://", ($smbuser && ($smbuser . 
    ($smbpassword && ":$smbpassword") . "@")), ($workgroup && ("$workgroup/")),
    ($smbserver || $smbserverip), "/$smbshare");

    if ((!$::testing) &&
        (!printer::files_exist((qw(/usr/bin/smbclient))))) {
	$in->do_pkgs->install('samba-client');
    }
    $printer->{SPOOLER} eq 'cups' and printer::restart_queue($printer);
    1;
}

sub setup_ncp {
    my ($printer, $in) = @_;

    # Check whether the network functionality is configured and
    # running
    if (!check_network($printer, $in)) {return 0};

    $in->set_help('setupNCP') if $::isInstall;
    my ($uri, $ncpuser, $ncppassword, $ncpserver, $ncpqueue);
    my $queue = $printer->{OLD_QUEUE};
    if (($printer->{configured}{$queue}) &&
	($printer->{currentqueue}{'connect'} =~ m/^ncp:/)) {
	$uri = $printer->{currentqueue}{'connect'};
	my $parameters = $uri =~ m!^\s*ncp://(.*)$!;
	# Get the user's login and password from the URI
	if ($parameters =~ m!([^@]*)@([^@]+)!) {
	    my $login = $1;
	    $parameters = $2;
	    if ($login =~ m!([^:]*):([^:]*)!) {
		$ncpuser = $1;
		$ncppassword = $2;
	    } else {
		$ncpuser = $login;
		$ncppassword = "";
	    }
	} else {
	    $ncpuser = "";
	    $ncppassword = "";
	}
	# Get the workgroup, server, and share name
	if ($parameters =~ m!([^/]+)/([^/]+)$!) {
	    $ncpserver = $1;
	    $ncpqueue = $2;
	} else {
	    die "The \"ncp://\" URI must at least contain the server name and the share name!\n";
	}
    }

    return if !$in->ask_from(_("NetWare Printer Options"),
_("To print on a NetWare printer, you need to provide the NetWare print server name (Note! it may be different from its TCP/IP hostname!) as well as the print queue name for the printer you wish to access and any applicable user name and password."), [
{ label => _("Printer Server"), val => \$ncpserver },
{ label => _("Print Queue Name"), val => \$ncpqueue },
{ label => _("User name"), val => \$ncpuser },
{ label => _("Password"), val => \$ncppassword, hidden => 1 } ],
complete => sub {
    unless ($ncpserver ne "") {
	$in->ask_warn('', _("NCP server name missing!"));
	return (1,0);
    }
    unless ($ncpqueue ne "") {
	$in->ask_warn('', _("NCP queue name missing!"));
	return (1,1);
    }
    return 0;
}
					);
    # Generate the Foomatic URI
    $printer->{currentqueue}{'connect'} =
    join '', ("ncp://", ($ncpuser && ($ncpuser . 
    ($ncppassword && ":$ncppassword") . "@")),
    "$ncpserver/$ncpqueue");

    if ((!$::testing) &&
        (!printer::files_exist((qw(/usr/bin/nprint))))) {
	$in->do_pkgs->install('ncpfs');
    }

    1;
}

sub setup_socket {
    my ($printer, $in) = @_;

    # Check whether the network functionality is configured and
    # running
    if (!check_network($printer, $in)) {return 0};

    $in->set_help('setupSocket') if $::isInstall;
    my ($hostname, $port, $uri, $remotehost,$remoteport);
    my $queue = $printer->{OLD_QUEUE};
    if (($printer->{configured}{$queue}) &&
	($printer->{currentqueue}{'connect'} =~ m/^socket:/)) {
	$uri = $printer->{currentqueue}{'connect'};
	($remotehost, $remoteport) = $uri =~ m!^\s*socket://([^/:]+):([0-9]+)/?\s*$!;
    } else {
	$remotehost = "";
	$remoteport = "9100";
    }

    return if !$in->ask_from(_("TCP/Socket Printer Options"),
_("To print to a TCP or socket printer, you need to provide the host name of the printer and optionally the port number. On HP JetDirect servers the port number is usually 9100, on other servers it can vary. See the manual of your hardware."), [
{ label => _("Printer host name"), val => \$remotehost },
{ label => _("Port"), val => \$remoteport } ],
complete => sub {
    unless ($remotehost ne "") {
	$in->ask_warn('', _("Printer host name missing!"));
	return (1,0);
    }
    unless ($remoteport =~ /^[0-9]+$/) {
	$in->ask_warn('', _("The port number should be an integer!"));
	return (1,1);
    }
    return 0;
}
					 );

    #- make the Foomatic URI
    $printer->{currentqueue}{'connect'} = 
    join '', ("socket://$remotehost", $remoteport ? (":$remoteport") : ());

    #- LPD and LPRng need netcat ('nc') to access to socket printers
    if ((($printer->{SPOOLER} eq 'lpd') || ($printer->{SPOOLER} eq 'lprng'))&& 
        (!$::testing) &&
        (!printer::files_exist((qw(/usr/bin/nc))))) {
        $in->do_pkgs->install('nc');
    }

    1;
}

sub setup_uri {
    my ($printer, $in) = @_;

    $in->set_help('setupURI') if $::isInstall;
    return if !$in->ask_from(_("Printer Device URI"),
_("You can specify directly the URI to access the printer. The URI must fulfill either the CUPS or the Foomatic specifications. Note that not all URI types are supported by all the spoolers."), [
{ label => _("Printer Device URI"),
val => \$printer->{currentqueue}{'connect'},
list => [ $printer->{currentqueue}{'connect'},
	  "file:/",
	  "http://",
	  "ipp://",
	  "lpd://",
	  "smb://",
	  "ncp://",
	  "socket://",
	  "postpipe:\"\"",
	  ], not_edit => 0 }, ],
complete => sub {
    unless ($printer->{currentqueue}{'connect'} =~ /[^:]+:.+/) {
	$in->ask_warn('', _("A valid URI must be entered!"));
	return (1,0);
    }
    return 0;
}
    );

    # Non-local printer, check network and abort if no network available
    if (($printer->{currentqueue}{'connect'} !~ m!^file:/!) &&
        (!check_network($printer, $in))) {return 0};

    # If the chosen protocol needs additional software, install it.

    # LPD does not support filtered queues to a remote LPD server by itself
    # It needs an additional program as "rlpr"
    if (($printer->{currentqueue}{'connect'} =~ /^lpd:/) &&
	($printer->{SPOOLER} eq 'lpd') && (!$::testing) &&
        (!printer::files_exist((qw(/usr/bin/rlpr))))) {
        $in->do_pkgs->install('rlpr');
    }
    if (($printer->{currentqueue}{'connect'} =~ /^smb:/) &&
        (!$::testing) &&
        (!printer::files_exist((qw(/usr/bin/smbclient))))) {
	$in->do_pkgs->install('samba-client');
    }
    if (($printer->{currentqueue}{'connect'} =~ /^ncp:/) &&
	(!$::testing) &&
        (!printer::files_exist((qw(/usr/bin/nprint))))) {
	$in->do_pkgs->install('ncpfs');
    }
    #- LPD and LPRng need netcat ('nc') to access to socket printers
    if (($printer->{currentqueue}{'connect'} =~ /^socket:/) &&
	(($printer->{SPOOLER} eq 'lpd') || ($printer->{SPOOLER} eq 'lprng')) &&
        (!$::testing) &&
        (!printer::files_exist((qw(/usr/bin/nc))))) {
        $in->do_pkgs->install('nc');
    }
    1;
}

sub setup_postpipe {
    my ($printer, $in) = @_;

    $in->set_help('setupPostpipe') if $::isInstall;
    my $uri;
    my $commandline;
    my $queue = $printer->{OLD_QUEUE};
    if (($printer->{configured}{$queue}) &&
	($printer->{currentqueue}{'connect'} =~ m/^postpipe:/)) {
	$uri = $printer->{currentqueue}{'connect'};
	$uri =~ m!^\s*postpipe:\"(.*)\"$!;
	$commandline = $1;
    } else {
	$commandline = "";
    }

    return if !$in->ask_from(_("Pipe into command"),
_("Here you can specify any arbitrary command line into which the job should be piped instead of being sent directly to a printer."), [
{ label => _("Command line"),
val => \$commandline }, ],
complete => sub {
    unless ($commandline ne "") {
	$in->ask_warn('', _("A command line must be entered!"));
	return (1,0);
    }
    return 0;
}
);

    #- make the Foomatic URI
    $printer->{currentqueue}{'connect'} = "postpipe:$commandline";
    
    1;
}

sub choose_printer_name {
    my ($printer, $in) = @_;
    # Name, description, location
    $in->set_help('setupPrinterName') if $::isInstall;
    my $default = $printer->{currentqueue}{'queue'};
    $in->ask_from_
	(
	 { title => _("Enter Printer Name and Comments"),
	   #cancel => !$printer->{configured}{$queue} ? '' : _("Remove queue"),
	   callbacks => { complete => sub {
	       unless ($printer->{currentqueue}{'queue'} =~ /^\w+$/) {
		   $in->ask_warn('', _("Name of printer should contain only letters, numbers and the underscore"));
		   return (1,0);
	       }
	       local $::isWizard = 0;
	       if (($printer->{configured}{$printer->{currentqueue}{'queue'}})
		   && ($printer->{currentqueue}{'queue'} ne $default) && 
		   (!$in->ask_yesorno('', _("The printer \"%s\" already exists,\ndo you really want to overwrite its configuration?",
					    $printer->{currentqueue}{'queue'}),
				      0))) {
		   return (1,0); # Let the user correct the name
	       }
	       return 0;
	   },
		      },
	   messages =>
_("Every printer needs a name (for example \"printer\"). The Description and Location fields do not need to be filled in. They are comments for the users.") }, 
	 [ { label => _("Name of printer"), val => \$printer->{currentqueue}{'queue'} },
	   { label => _("Description"), val => \$printer->{currentqueue}{'desc'} },
	   { label => _("Location"), val => \$printer->{currentqueue}{'loc'} },
	 ]) or return 0;

    $printer->{QUEUE} = $printer->{currentqueue}{'queue'};
    1;
}

sub get_db_entry {
    my ($printer, $in) = @_;
    #- Read the printer driver database if necessary
    if ((keys %printer::thedb) == 0) {
	my $w = $in->wait_message('', _("Reading printer database ..."));
        printer::read_printer_db($printer->{SPOOLER});
    }
    my $w = $in->wait_message('', _("Preparing printer database ..."));
    my $queue = $printer->{OLD_QUEUE};
    if ($printer->{configured}{$queue}) {
	# The queue was already configured
	if ($printer->{configured}{$queue}{'queuedata'}{'foomatic'}) {
	    # The queue was configured with Foomatic
	    my $driverstr;
	    if ($printer->{configured}{$queue}{'queuedata'}{'driver'} eq "Postscript") {
		$driverstr = "PostScript";
	    } else {
		$driverstr = "GhostScript + $printer->{configured}{$queue}{'queuedata'}{'driver'}";
	    }
	    my $make = uc($printer->{configured}{$queue}{'queuedata'}{'make'});
	    my $model =	$printer->{configured}{$queue}{'queuedata'}{'model'};
	    if ($::expert) {
		$printer->{DBENTRY} = "$make|$model|$driverstr";
		# database key contains the "(recommended)" for the
		# recommended driver, so add it if necessary
		if (!($printer::thedb{$printer->{DBENTRY}}{printer})) {
		    $printer->{DBENTRY} .= " (recommended)";
		}
	    } else {
		$printer->{DBENTRY} = "$make|$model";
	    }
	    $printer->{OLD_CHOICE} = $printer->{DBENTRY};
	} elsif (($printer->{SPOOLER} eq "cups") && ($::expert) &&
		 ($printer->{configured}{$queue}{'queuedata'}{'ppd'})) {
	    # Do we have a native CUPS driver or a PostScript PPD file?
	    $printer->{DBENTRY} = printer::get_descr_from_ppd($printer) || $printer->{DBENTRY};
	    $printer->{OLD_CHOICE} = $printer->{DBENTRY};
	} else {
	    # Point the list cursor at least to manufacturer and model of the
	    # printer
	    $printer->{DBENTRY} = "";
	    my $make = uc($printer->{configured}{$queue}{'queuedata'}{'make'});
	    my $model = $printer->{configured}{$queue}{'queuedata'}{'model'};
	    my $key;
	    for $key (keys %printer::thedb) {
		if ((($::expert) && ($key =~ /^$make\|$model\|.*\(recommended\)$/)) ||
		    ((!$::expert) && ($key =~ /^$make\|$model$/))) {
		    $printer->{DBENTRY} = $key;
		}
	    }
	    if ($printer->{DBENTRY} eq "") {
		# Exact match of make and model did not work, try to clean
		# up the model name
		$model =~ s/PS//;
		$model =~ s/PostScript//;
		$model =~ s/Series//;
		for $key (keys %printer::thedb) {
		    if ((($::expert) && ($key =~ /^$make\|$model\|.*\(recommended\)$/)) ||
			((!$::expert) && ($key =~ /^$make\|$model$/))) {
			$printer->{DBENTRY} = $key;
		    }
		}
	    }
	    if (($printer->{DBENTRY} eq "") && ($make ne "")) {
		# Exact match with cleaned-up model did not work, try a best match
		my $matchstr = "$make|$model";
		$printer->{DBENTRY} = bestMatchSentence($matchstr, keys %printer::thedb);
		# If the manufacturer was not guessed correctly, discard the
		# guess.
		$printer->{DBENTRY} =~ /^([^\|]+)\|/;
		my $guessedmake = lc($1);
		if (($matchstr !~ /$guessedmake/i) &&
		    (($guessedmake ne "hp") ||
		     ($matchstr !~ /Hewlett[\s-]+Packard/i)))
		{$printer->{DBENTRY} = ""};
	    }
	    # Set the OLD_CHOICE to a non-existing value
	    $printer->{OLD_CHOICE} = "XXX";
	}
    } else {
	if (($::expert) && ($printer->{DBENTRY} !~ /(recommended)/)) {
	    my ($make, $model) = $printer->{DBENTRY} =~ /^([^\|]+)\|([^\|]+)\|/;
	    for my $key (keys %printer::thedb) {
		if ($key =~ /^$make\|$model\|.*\(recommended\)$/) {
		    $printer->{DBENTRY} = $key;
		}
	    }
	}
	$printer->{OLD_CHOICE} = $printer->{DBENTRY};
    }
}

sub choose_model {
    my ($printer, $in) = @_;
    $in->set_help('chooseModel') if $::isInstall;
    #- Read the printer driver database if necessary
    if ((keys %printer::thedb) == 0) {
	my $w = $in->wait_message('', _("Reading printer database ..."));
        printer::read_printer_db($printer->{SPOOLER});
    }
    if (!$printer::thedb{$printer->{DBENTRY}}) {
	$printer->{DBENTRY} = _("Raw printer (No driver)");
    }
    # Choose the printer/driver from the list
    return ($printer->{DBENTRY} = $in->ask_from_treelist(_("Printer model selection"),
							 _("Which printer model do you have?") .
							 _("

Please check whether Printerdrake did the auto-detection of your printer model correctly. Search the correct model in the list when the cursor is standing on a wrong model or on \"Raw printer\"."), '|',
							 [ keys %printer::thedb ], $printer->{DBENTRY}));

}

sub get_printer_info {
    my ($printer, $in) = @_;
    #- Read the printer driver database if necessary
    #if ((keys %printer::thedb) == 0) {
    #    my $w = $in->wait_message('', _("Reading printer database ..."));
    #    printer::read_printer_db($printer->{SPOOLER});
    #}
    my $queue = $printer->{OLD_QUEUE};
    my $oldchoice = $printer->{OLD_CHOICE};
    my $newdriver = 0;
    if ((!$printer->{configured}{$queue}) ||      # New queue  or
	(($oldchoice) && ($printer->{DBENTRY}) && # make/model/driver changed
	 (($oldchoice ne $printer->{DBENTRY}) ||
	  ($printer->{currentqueue}{'driver'} ne 
	   $printer::thedb{$printer->{DBENTRY}}{'driver'})))) {
	delete($printer->{currentqueue}{printer});
	delete($printer->{currentqueue}{ppd});
	$printer->{currentqueue}{foomatic} = 0;
	# Read info from printer database
	foreach (qw(printer ppd driver make model)) { #- copy some parameter, shorter that way...
	    $printer->{currentqueue}{$_} = $printer::thedb{$printer->{DBENTRY}}{$_};
	}
	$newdriver = 1;
    }
    # Use the "printer" and not the "foomatic" field to identify a Foomatic
    # queue because in a new queue "foomatic" is not set yet.
    if (($printer->{currentqueue}{'printer'}) || # We have a Foomatic queue
	($printer->{currentqueue}{'ppd'})) { # We have a CUPS+PPD queue
	if ($printer->{currentqueue}{'printer'}) { # Foomatic queue?
	    # In case of a new queue "foomatic" was not set yet
	    $printer->{currentqueue}{'foomatic'} = 1;
	    # Now get the options for this printer/driver combo
	    if (($printer->{configured}{$queue}) && ($printer->{configured}{$queue}{'queuedata'}{'foomatic'})) {
		# The queue was already configured with Foomatic ...
		if (!$newdriver) {
		    # ... and the user didn't change the printer/driver
		    $printer->{ARGS} = $printer->{configured}{$queue}{'args'};
		} else {
		    # ... and the user has chosen another printer/driver
		    $printer->{ARGS} = printer::read_foomatic_options($printer);
		}
	    } else {
		# The queue was not configured with Foomatic before
		# Set some special options
		$printer->{SPECIAL_OPTIONS} = '';
		# Default page size depending on the country/language
		# (US/Canada -> Letter, Others -> A4)
		my $pagesize;
		if ($printer->{PAPERSIZE}) {
		    $printer->{SPECIAL_OPTIONS} .= 
			" -o PageSize=$printer->{PAPERSIZE}";
		} elsif (($pagesize = $in->{lang}) ||
			 ($pagesize = $ENV{'LC_PAPER'}) ||
			 ($pagesize = $ENV{'LANG'}) ||
			 ($pagesize = $ENV{'LANGUAGE'}) ||
			 ($pagesize = $ENV{'LC_ALL'})) {
		    if (($pagesize =~ /^en_CA/) ||
			($pagesize =~ /^fr_CA/) || 
			($pagesize =~ /^en_US/)) {
			$pagesize = "Letter";
		    } else {
			$pagesize = "A4";
		    }
		    $printer->{SPECIAL_OPTIONS} .= 
			" -o PageSize=$pagesize";
		}
		# oki4w driver -> OKI winprinter which needs the
		# oki4daemon to work
		if ($printer->{currentqueue}{'driver'} eq 'oki4w') {
		    if ($printer->{currentqueue}{'connect'} ne 
			'file:/dev/lp0') {
			$in->ask_warn(_("OKI winprinter configuration"),
				      _("You are configuring an OKI laser winprinter. These printers\nuse a very special communication protocol and therefore they work only when connected to the first parallel port. When your printer is connected to another port or to a print server box please connect the printer to the first parallel port before you print a test page. Otherwise the printer will not work. Your connection type setting will be ignored by the driver."));
		    }
		    $printer->{currentqueue}{'connect'} = 'file:/dev/null';
		    # Start the oki4daemon
		    printer::start_service_on_boot('oki4daemon');
		    printer::start_service('oki4daemon');
		    # Set permissions
		    if ($printer->{SPOOLER} eq 'cups') {
			printer::set_permissions('/dev/oki4drv', '660', 'lp',
						 'sys');
		    } elsif ($printer->{SPOOLER} eq 'pdq') {
			printer::set_permissions('/dev/oki4drv', '666');
		    } else {
			printer::set_permissions('/dev/oki4drv', '660', 'lp',
						 'lp');
		    }
		} elsif ($printer->{currentqueue}{'driver'} eq 'lexmarkinkjet') {
		    # Set "Port" option
		    if ($printer->{currentqueue}{'connect'} eq 
			'file:/dev/lp0') {
			$printer->{SPECIAL_OPTIONS} .= 
			    " -o Port=ParPort1";
		    } elsif ($printer->{currentqueue}{'connect'} eq 
			'file:/dev/lp1') {
			$printer->{SPECIAL_OPTIONS} .= 
			    " -o Port=ParPort2";
		    } elsif ($printer->{currentqueue}{'connect'} eq 
			'file:/dev/lp2') {
			$printer->{SPECIAL_OPTIONS} .= 
			    " -o Port=ParPort3";
		    } elsif ($printer->{currentqueue}{'connect'} eq 
			'file:/dev/usb/lp0') {
			$printer->{SPECIAL_OPTIONS} .= 
			    " -o Port=USB1";
		    } elsif ($printer->{currentqueue}{'connect'} eq 
			'file:/dev/usb/lp1') {
			$printer->{SPECIAL_OPTIONS} .= 
			    " -o Port=USB2";
		    } elsif ($printer->{currentqueue}{'connect'} eq 
			'file:/dev/usb/lp2') {
			$printer->{SPECIAL_OPTIONS} .= 
			    " -o Port=USB3";
		    } else {
			$in->ask_warn(_("Lexmark inkjet configuration"),
				      _("The inkjet printer drivers provided by Lexmark only support local printers, no printers on remote machines or print server boxes. Please connect your printer to a local port or configure it on the machine where it is connected to."));
			return 0;
		    }
		    # Set device permissions
		    $printer->{currentqueue}{'connect'} =~ /^\s*file:(\S*)\s*$/;
		    if ($printer->{SPOOLER} eq 'cups') {
			printer::set_permissions($1, '660', 'lp', 'sys');
		    } elsif ($printer->{SPOOLER} eq 'pdq') {
			printer::set_permissions($1, '666');
		    } else {
			printer::set_permissions($1, '660', 'lp', 'lp');
		    }
		    # This is needed to have the device not blocked by the
		    # spooler backend.
		    $printer->{currentqueue}{'connect'} = 'file:/dev/null';
		    #install packages
		    my $drivertype = $printer->{currentqueue}{'model'};
		    if ($drivertype eq 'Z22') {$drivertype = 'Z32';}
		    if ($drivertype eq 'Z23') {$drivertype = 'Z33';}
		    $drivertype = lc($drivertype);
		    if (!printer::files_exist("/usr/local/lexmark/$drivertype/$drivertype")) {
			eval { $in->do_pkgs->install("lexmark-drivers-$drivertype") };
		    }
		    if (!printer::files_exist("/usr/local/lexmark/$drivertype/$drivertype")) {
			# Driver installation failed, probably we do not have
			# the commercial CDs
			$in->ask_warn(_("Lexmark inkjet configuration"),
				      _("To be able to print with your Lexmark inkjet and this configuration, you need the inkjet printer drivers provided by Lexmark (http://www.lexmark.com/). Go to the US site and click on the \"Drivers\" button. Then choose your model and afterwards \"Linux\" as operating system. The drivers come as RPM packages or shell scripts with interactive graphical installation. You do not need to do this configuration by the graphical frontends. Cancel directly after the license agreement. Then print printhead alignment pages with \"lexmarkmaintain\" and adjust the head alignment settings with this program."));
		    }
		}
		$printer->{ARGS} = printer::read_foomatic_options($printer);
		delete($printer->{SPECIAL_OPTIONS});
	    }
	} elsif ($printer->{currentqueue}{'ppd'}) { # CUPS+PPD queue?
	    # If we had a Foomatic queue before, unmark the flag and initialize
	    # the "printer" and "driver" fields
	    $printer->{currentqueue}{'foomatic'} = 0;
	    $printer->{currentqueue}{'printer'} = undef;
	    $printer->{currentqueue}{'driver'} = "CUPS/PPD";
	    # Now get the options from this PPD file
	    if ($printer->{configured}{$queue}) {
		# The queue was already configured
		if ((!$printer->{DBENTRY}) || (!$oldchoice) ||
		    ($printer->{DBENTRY} eq $oldchoice)) {
		    # ... and the user didn't change the printer/driver
		    $printer->{ARGS} = printer::read_cups_options($queue);
		} else {
		    # ... and the user has chosen another printer/driver
		    $printer->{ARGS} = printer::read_cups_options("/usr/share/cups/model/$printer->{currentqueue}{ppd}");
		}
	    } else {
		# The queue was not configured before
		$printer->{ARGS} = printer::read_cups_options("/usr/share/cups/model/$printer->{currentqueue}{ppd}");
	    }
	}
    }
    1;
}

sub setup_options {
    my ($printer, $in) = @_;
    my @simple_options = 
	("PageSize",        # Media properties
	 "MediaType",
	 "Form",
	 "InputSlot",       # Trays
	 "Tray",
	 "OutBin",
	 "OutputBin",
	 "FaceUp",
	 "FaceDown",
	 "Collate",
	 "Manual",
	 "ManualFeed",
	 "Manualfeed",
	 "ManualFeeder",
	 "Feeder",
	 "Duplex",          # Double-sided printing
	 "Binding",
	 "Tumble",
	 "DoubleSided",
	 "Resolution",      # Resolution/Quality
	 "GSResolution",
	 "JCLResolution",
	 "Quality",
	 "PrintQuality",
	 "PrintoutQuality",
	 "QualityType",
	 "ImageType",
	 "InkType",         # Colour/Gray/BW, 4-ink/6-ink
	 "Mode",
	 "OutputMode",
	 "OutputType",
	 "ColorMode",
	 "PrintingMode",
	 "Monochrome",
	 "BlackOnly",
	 "Grayscale",
	 "GrayScale",
	 "Colour",
	 "Color",
	 "Gamma",           # Lighter/Darker
	 "GammaCorrection",
	 "GammaGeneral",
	 "MasterGamma",
	 "StpGamma",
	 "EconoMode",       # Ink/Toner saving
	 "Economode",
	 "TonerSaving",
	 "JCLEconomode",
	 "HPNup",           # Other useful options
	 "InstalledMemory", # Laser printer hardware config
	 "Option1",
	 "Option2",
	 "Option3",
	 "Option4",
	 "Option5",
	 "Option6",
	 "Option7",
	 "Option8",
	 "Option9",
	 "Option10",
	 "Option11",
	 "Option12",
	 "Option13",
	 "Option14",
	 "Option15",
	 "Option16",
	 "Option17",
	 "Option18",
	 "Option19",
	 "Option20",
	 "Option21",
	 "Option22",
	 "Option23",
	 "Option24",
	 "Option25",
	 "Option26",
	 "Option27",
	 "Option28",
	 "Option29",
	 "Option30"
	 );
    $in->set_help('setupOptions') if $::isInstall;
    if (($printer->{currentqueue}{'printer'}) || # We have a Foomatic queue
	($printer->{currentqueue}{'ppd'})) { # We have a CUPS+PPD queue
	# Set up the widgets for the option dialog
	my @widgets;
	my @userinputs;
	my @choicelists;
	my @shortchoicelists;
	my $i;
	for ($i = 0; $i <= $#{$printer->{ARGS}}; $i++) {
	    my $optshortdefault = $printer->{ARGS}[$i]{'default'};
	    if ($printer->{ARGS}[$i]{'type'} eq 'enum') {
		# enumerated option
		push(@choicelists, []);
		push(@shortchoicelists, []);
		my $choice;
		for $choice (@{$printer->{ARGS}[$i]{'vals'}}) {
		    push(@{$choicelists[$i]}, $choice->{'comment'});
		    push(@{$shortchoicelists[$i]}, $choice->{'value'});
		    if ($choice->{'value'} eq $optshortdefault) {
			push(@userinputs, $choice->{'comment'});
		    }
		}
		push(@widgets,
		     { label => $printer->{ARGS}[$i]{'comment'}, 
		       val => \$userinputs[$i], 
		       not_edit => 1,
		       list => \@{$choicelists[$i]},
		       advanced => !member($printer->{ARGS}[$i]{'name'},
					   @simple_options) });
	    } elsif ($printer->{ARGS}[$i]{'type'} eq 'bool') {
		# boolean option
		push(@choicelists, [$printer->{ARGS}[$i]{'name'}, 
				    $printer->{ARGS}[$i]{'name_false'}]);
		push(@shortchoicelists, []);
		push(@userinputs, $choicelists[$i][1-$optshortdefault]);
		push(@widgets,
		     { label => $printer->{ARGS}[$i]{'comment'},
		       val => \$userinputs[$i],
		       not_edit => 1,
		       list => \@{$choicelists[$i]},
		       advanced => !member($printer->{ARGS}[$i]{'name'},
					   @simple_options) });
	    } else {
		# numerical option
		push(@choicelists, []);
		push(@shortchoicelists, []);
		push(@userinputs, $optshortdefault);
		push(@widgets,
		     { label => $printer->{ARGS}[$i]{'comment'} . 
			   " ($printer->{ARGS}[$i]{'min'} ... " .
			       "$printer->{ARGS}[$i]{'max'})",
			   #type => 'range',
			   #min => $printer->{ARGS}[$i]{'min'},
			   #max => $printer->{ARGS}[$i]{'max'},
			   val => \$userinputs[$i],
			   advanced => !member($printer->{ARGS}[$i]{'name'},
					       @simple_options) });
	    }
	}
	# Show the options dialog. The call-back function does a
	# range check of the numerical options.
	my $windowtitle = "$printer->{currentqueue}{'make'} $printer->{currentqueue}{'model'}";
	if ($::expert) {
	    my $driver = undef;
	    if ($driver = $printer->{currentqueue}{driver}) {
		if ($printer->{currentqueue}{foomatic}) {
		    if ($driver eq 'Postscript') {
			$driver = "PostScript";
		    } else {
			$driver = "GhostScript + $driver";
		    }
		} elsif ($printer->{currentqueue}{ppd}) {
		    if ($printer->{DBENTRY}) {
			$printer->{DBENTRY} =~ /^[^\|]*\|[^\|]*\|(.*)$/;
			$driver = $1;
		    } else {
			$driver = printer::get_descr_from_ppd($printer);
			if ($driver =~ /^[^\|]*\|[^\|]*$/) { # No driver info
			    $driver = "CUPS/PPD";
			} else {
			    $driver =~ /^[^\|]*\|[^\|]*\|(.*)$/;
			    $driver = $1;
			}
		    }
		}
	    } 
	    if ($driver) {
		$windowtitle .= ", $driver";
	    }
	}
	return 0 if !$in->ask_from
	    ($windowtitle,
	     _("Printer default settings

You should make sure that the page size and the ink type/printing mode (if available) and also the hardware configuration of laser printers (memory, duplex unit, extra trays) are set correctly. Note that with a very high printout quality/resolution printing can get substantially slower."),
	     \@widgets,
	     complete => sub {
		 my $i;
		 for ($i = 0; $i <= $#{$printer->{ARGS}}; $i++) {
		     if (($printer->{ARGS}[$i]{'type'} eq 'int') || ($printer->{ARGS}[$i]{'type'} eq 'float')) {
			 unless (($printer->{ARGS}[$i]{'type'} ne 'int') || ($userinputs[$i] =~ /^[\-\+]?[0-9]+$/)) {
			     $in->ask_warn('', _("Option %s must be an integer number!", $printer->{ARGS}[$i]{'comment'}));
			     return (1, $i);
			 }
			 unless (($printer->{ARGS}[$i]{'type'} ne 'float') || ($userinputs[$i] =~ /^[\-\+]?[0-9\.]+$/)) {
			     $in->ask_warn('', _("Option %s must be a number!", $printer->{ARGS}[$i]{'comment'}));
			     return (1, $i);
			 }
			 unless (($userinputs[$i] >= $printer->{ARGS}[$i]{'min'}) &&
				 ($userinputs[$i] <= $printer->{ARGS}[$i]{'max'})) {
			     $in->ask_warn('', _("Option %s out of range!", $printer->{ARGS}[$i]{'comment'}));
			     return (1, $i);
			 }
		     }
		 }
		 return (0);
	     } );
	# Read out the user's choices
	@{$printer->{currentqueue}{options}} = ();
	for ($i = 0; $i <= $#{$printer->{ARGS}}; $i++) {
	    push(@{$printer->{currentqueue}{options}}, "-o");
	    if ($printer->{ARGS}[$i]{'type'} eq 'enum') {
		# enumerated option
		my $j;
		for ($j = 0; $j <= $#{$choicelists[$i]}; $j++) {
		    if ($choicelists[$i][$j] eq $userinputs[$i]) {
			push(@{$printer->{currentqueue}{options}}, $printer->{ARGS}[$i]{'name'} . "=". $shortchoicelists[$i][$j]);
		    }
		}
	    } elsif ($printer->{ARGS}[$i]{'type'} eq 'bool') {
		# boolean option
		push(@{$printer->{currentqueue}{options}}, $printer->{ARGS}[$i]{'name'} . "=".
		     (($choicelists[$i][0] eq $userinputs[$i]) ? "1" : "0"));
	    } else {
		# numerical option
		push(@{$printer->{currentqueue}{options}}, $printer->{ARGS}[$i]{'name'} . "=" . $userinputs[$i]);
	    }
	}
    }
    1;
}

sub setasdefault {
    my ($printer, $in) = @_;
    $in->set_help('setupAsDefault') if $::isInstall;
    if (($printer->{DEFAULT} eq '') || # We have no default printer,
	                               # so set the current one as default
	($in->ask_yesorno('', _("Do you want to set this printer (\"%s\")\nas the default printer?", $printer->{QUEUE}), 0))) { # Ask the user
	$printer->{DEFAULT} = $printer->{QUEUE};
        printer::set_default_printer($printer);
    }
}
	
sub print_testpages {
    my ($printer, $in, $upNetwork) = @_;
    $in->set_help('printTestPages') if $::isInstall;
    # print test pages
    my $standard = 1;
    my $altletter = 0;
    my $alta4 = 0;
    my $photo = 0;
    my $ascii = 0;
    my $res2 = 0;
    my $res1 = $in->ask_from_
	({ title => _("Test pages"),
	   messages => _("Please select the test pages you want to print.
Note: the photo test page can take a rather long time to get printed and on laser printers with too low memory it can even not come out. In most cases it is enough to print the standard test page."),
          cancel => ((!$printer->{NEW}) ?
		     _("Cancel") : ($::isWizard ? _("<- Previous") : 
				    _("No test pages"))),
          ok => ($::isWizard ? _("Next ->") : _("Print"))},
	 [
	  { text => _("Standard test page"), type => 'bool',
	    val => \$standard },
	  ($::expert ?
	   { text => _("Alternative test page (Letter)"), type => 'bool', 
	     val => \$altletter } : ()),
	  ($::expert ?
	   { text => _("Alternative test page (A4)"), type => 'bool', 
	     val => \$alta4 } : ()), 
	  { text => _("Photo test page"), type => 'bool', val => \$photo },
	  #{ text => _("Plain text test page"), type => 'bool',
	  #  val => \$ascii }
	  ($::isWizard ?
	   { text => _("Do not print any test page"), type => 'bool', 
	     val => \$res2 } : ())
	  ]);
    $res2 = 1 if (!($standard || $altletter || $alta4 || $photo ||
		    $ascii));
    if ($res1 && !$res2) {
	my @lpq_output;
	{
	    my $w = $in->wait_message('', _("Printing test page(s)..."));
	    
	    $upNetwork and do { &$upNetwork(); undef $upNetwork; sleep(1) };
	    my $stdtestpage = "/usr/share/printer-testpages/testprint.ps";
	    my $altlttestpage = "/usr/share/printer-testpages/testpage.ps";
	    my $alta4testpage = "/usr/share/printer-testpages/testpage-a4.ps";
	    my $phototestpage = "/usr/share/printer-testpages/photo-testpage.jpg";
	    my $asciitestpage = "/usr/share/printer-testpages/testpage.asc";
	    my @testpages;
	    # Install the filter to convert the photo test page to PS
	    if (($photo) && (!$::testing) &&
		(!printer::files_exist((qw(/usr/bin/convert))))) {
		$in->do_pkgs->install('ImageMagick');
	    }
	    # set up list of pages to print
	    $standard && push (@testpages, $stdtestpage);
	    $altletter && push (@testpages, $altlttestpage);
	    $alta4 && push (@testpages, $alta4testpage);
	    $photo && push (@testpages, $phototestpage);
	    $ascii && push (@testpages, $asciitestpage);
	    # print the stuff
	    @lpq_output = printer::print_pages($printer, @testpages);
	}
	my $dialogtext;
	if (@lpq_output) {
	    $dialogtext = _("Test page(s) have been sent to the printer.
It may take some time before the printer starts.
Printing status:\n%s\n\n", @lpq_output);
	} else {
	    $dialogtext = _("Test page(s) have been sent to the printer.
It may take some time before the printer starts.\n");
	}
	if ($printer->{NEW} == 0) {
	    $in->ask_warn('',$dialogtext);
	    return 1;
	} else {
	    $in->ask_yesorno('',$dialogtext . _("Did it work properly?"), 1) 
		and return 1;
	}
    } else {
	return ($::isWizard ? $res1 : 1) ;
    }
    return 2;
}

sub printer_help {
    my ($printer, $in) = @_;
    my $spooler = $printer->{SPOOLER};
    my $queue = $printer->{QUEUE};
    my $default = $printer->{DEFAULT};
    my $raw = 0;
    my $cupsremote = 0;
    my $scanning = "";
    if ($printer->{configured}{$queue}) {
	if (($printer->{configured}{$queue}{'queuedata'}{'model'} eq
	     _("Unknown model")) ||
	    ($printer->{configured}{$queue}{'queuedata'}{'model'} eq
	     _("Raw printer"))) {
	    $raw = 1;
	}
	# Information about scanning with HP's multi-function devices
	$scanning = scanner_help
	    ($printer->{configured}{$queue}{'queuedata'}{'make'} . " " .
	     $printer->{configured}{$queue}{'queuedata'}{'model'}, 
	     $printer->{configured}{$queue}{'queuedata'}{'connect'});
	if ($scanning) {
	    $scanning = "\n\n$scanning\n\n";
	}
    } else {
	$cupsremote = 1;
    }

    my $dialogtext;
    if ($spooler eq "cups") {
	$dialogtext =
_("To print a file from the command line (terminal window) you can either use the command \"%s <file>\" or a graphical printing tool: \"xpp <file>\" or \"kprinter <file>\". The graphical tools allow you to choose the printer and to modify the option settings easily.
", ($queue ne $default ? "lpr -P $queue" : "lpr")) .
_("These commands you can also use in the \"Printing command\" field of the printing dialogs of many applications, but here do not supply the file name because the file to print is provided by the application.
") .
(!$raw ?
_("
The \"%s\" command also allows to modify the option settings for a particular printing job. Simply add the desired settings to the command line, e. g. \"%s <file>\". ", "lpr", ($queue ne $default ? "lpr -P $queue -o option=setting -o switch" : "lpr -o option=setting -o switch")) .
(!$cupsremote ?
 _("To know about the options available for the current printer read either the list shown below or click on the \"Print option list\" button.%s

", $scanning) . printer::lphelp_output($printer) : $scanning .
 _("Here is a list of the available printing options for the current printer:

") . printer::lphelp_output($printer)) : $scanning);
    } elsif ($spooler eq "lprng") {
	$dialogtext =
_("To print a file from the command line (terminal window) use the command \"%s <file>\".
", ($queue ne $default ? "lpr -P $queue" : "lpr")) . 
_("This command you can also use in the \"Printing command\" field of the printing dialogs of many applications. But here do not supply the file name because the file to print is provided by the application.
") .
(!$raw ?
_("
The \"%s\" command also allows to modify the option settings for a particular printing job. Simply add the desired settings to the command line, e. g. \"%s <file>\". ", "lpr", ($queue ne $default ? "lpr -P $queue -Z option=setting -Z switch" : "lpr -Z option=setting -Z switch")) .
_("To get a list of the options available for the current printer click on the \"Print option list\" button." . $scanning) : $scanning);
    } elsif ($spooler eq "lpd") {
	$dialogtext =
_("To print a file from the command line (terminal window) use the command \"%s <file>\".
", ($queue ne $default ? "lpr -P $queue" : "lpr")) .
_("This command you can also use in the \"Printing command\" field of the printing dialogs of many applications. But here do not supply the file name because the file to print is provided by the application.
") .
(!$raw ?
_("
The \"%s\" command also allows to modify the option settings for a particular printing job. Simply add the desired settings to the command line, e. g. \"%s <file>\". ", "lpr", ($queue ne $default ? "lpr -P $queue -o option=setting -o switch" : "lpr -o option=setting -o switch")) .
_("To get a list of the options available for the current printer click on the \"Print option list\" button." . $scanning) : $scanning);
    } elsif ($spooler eq "pdq") {
	$dialogtext =
_("To print a file from the command line (terminal window) use the command \"%s <file>\" or \"%s <file>\".
", ($queue ne $default ? "pdq -P $queue" : "pdq"), ($queue ne $default ? "lpr -P $queue" : "lpr")) .
_("This command you can also use in the \"Printing command\" field of the printing dialogs of many applications. But here do not supply the file name because the file to print is provided by the application.
") .
_("You can also use the graphical interface \"xpdq\" for setting options and handling printing jobs.
If you are using KDE as desktop environment you have a \"panic button\", an icon on the desktop, labeled with \"STOP Printer!\", which stops all print jobs immediately when you click it. This is for example useful for paper jams.
") .
(!$raw ?
_("
The \"%s\" and \"%s\" commands also allow to modify the option settings for a particular printing job. Simply add the desired settings to the command line, e. g. \"%s <file>\".
", "pdq", "lpr", ($queue ne $default ? "pdq -P $queue -aoption=setting -oswitch" : "pdq -aoption=setting -oswitch")) .
_("To know about the options available for the current printer read either the list shown below or click on the \"Print option list\" button.%s

", $scanning) . printer::pdqhelp_output($printer) : $scanning);
    }
    if (!$raw && !$cupsremote) {
        my $choice;
        while ($choice ne _("Close")) {
	    $choice = $in->ask_from_list_
	        (($scanning ?
		  _("Printing/Scanning on \"%s\"", $queue) :
		  _("Printing on the printer \"%s\"", $queue)),
		 $dialogtext,
		 [ _("Print option list"), _("Close") ],
		 _("Close"));
	    if ($choice ne _("Close")) {
		my $w = $in->wait_message('', _("Printing test page(s)..."));
	        printer::print_optionlist($printer);
	    }
	}
    } else {
	$in->ask_warn(($scanning ?
		       _("Printing/Scanning on \"%s\"", $queue) :
		       _("Printing on the printer \"%s\"", $queue)), 
		      $dialogtext);
    }
}

sub scanner_help {
    my ($makemodel, $deviceuri) = @_;
    if ($deviceuri =~ m!^ptal:/(.*)$!) {
	my $ptaldevice = $1;
	if (($makemodel =~ /HP\s+OfficeJet\s+[KVRGP]/i) ||
	    ($makemodel =~ /HP\s+PSC\s+[579]/i)) {
	    # SANE-driven models
	    return _("Your HP multi-function device was configured automatically to be able to scan. Now you can scan with \"scanimage\" (\"scanimage -d hp:%s\" to specify the scanner when you have more than one) from the command line or with the graphical interfaces \"xscanimage\" or \"xsane\". If you are using the GIMP, you can also scan by choosing the appropriate point in the \"File\"/\"Acquire\" menu. Call also \"man scanimage\" and \"man sane-hp\" on the command line to get more information.

Do not use \"scannerdrake\" for this device!",
		     $ptaldevice);
	} elsif ($makemodel !~ /HP\s+PhotoSmart/i) {
	    # "ptal-hp"-driven models
	    return _("Your HP multi-function device was configured automatically to be able to scan. Now you can scan from the command line with \"ptal-hp %s scan ...\". Scanning via a graphical interface or from the GIMP is not supported yet for your device. More information you will find in the \"/usr/share/doc/hpoj-0.8/ptal-hp-scan.html\" file on your system. If you have an HP LaserJet 1100 or 1200 you can only scan when you have the scanner option installed.

Do not use \"scannerdrake\" for this device!",
		     $ptaldevice);
	} else {
	    return "";
	}
    }
}

sub copy_queues_from {
    my ($printer, $in, $oldspooler) = @_;

    $in->set_help('copyQueues') if $::isInstall;
    my $newspooler = $printer->{SPOOLER};
    my @oldqueues;
    my @queueentries;
    my @queuesselected;
    my $newspoolerstr;
    my $oldspoolerstr;
    my $noninteractive = 0;
    {
	my $w = $in->wait_message('', _("Reading printer data ..."));
	@oldqueues = printer::get_copiable_queues($oldspooler, $newspooler);
	@oldqueues = sort(@oldqueues);
	$newspoolerstr = $printer::shortspooler_inv{$newspooler};
	$oldspoolerstr = $printer::shortspooler_inv{$oldspooler};
	for (@oldqueues) {
	    push (@queuesselected, 1);
	    push (@queueentries, { text => $_, type => 'bool', 
				   val => \$queuesselected[$#queuesselected] });
	}
	# LPRng and LPD use the same config files, therefore one sees the 
	# queues of LPD when one uses LPRng and vice versa, but these queues
	# do not work. So automatically transfer all queues when switching
	# between LPD and LPRng.
	if (($oldspooler =~ /^lp/) && ($newspooler =~ /^lp/)) {
	    $noninteractive = 1;
	}
    }
    if ($noninteractive ||
	$in->ask_from_
	({ title => _("Transfer printer configuration"),
	   messages => _("You can copy the printer configuration which you have done for the spooler %s to %s, your current spooler. All the configuration data (printer name, description, location, connection type, and default option settings) is overtaken, but jobs will not be transferred.
Not all queues can be transferred due to the following reasons:
", $oldspoolerstr, $newspoolerstr) .
($newspooler eq "cups" ? _("CUPS does not support printers on Novell servers or printers sending the data into a free-formed command.
") :
 ($newspooler eq "pdq" ? _("PDQ only supports local printers, remote LPD printers, and Socket/TCP printers.
") :
  _("LPD and LPRng do not support IPP printers.
"))) .
_("In addition, queues not created with this program or \"foomatic-configure\" cannot be transferred.") .
($oldspooler eq "cups" ? _("
Also printers configured with the PPD files provided by their manufacturers or with native CUPS drivers cannot be transferred.") : ()) . _("
Mark the printers which you want to transfer and click 
\"Transfer\"."),
	   cancel => _("Do not transfer printers"),
           ok => _("Transfer")
	 },
         \@queueentries
      )) {
	my $queuecopied = 0;
	for (@oldqueues) {
	    if (shift(@queuesselected)) {
                my $oldqueue = $_;
                my $newqueue = $_;
                if ((!$printer->{configured}{$newqueue}) ||
		    ($noninteractive) ||
		    ($in->ask_from_
	             ({ title => _("Transfer printer configuration"),
	                messages => _("A printer named \"%s\" already exists under %s. 
Click \"Transfer\" to overwrite it.
You can also type a new name or skip this printer.", 
				      $newqueue, $newspoolerstr),
                        ok => _("Transfer"),
                        cancel => _("Skip"),
		        callbacks => { complete => sub {
	                    unless ($newqueue =~ /^\w+$/) {
				$in->ask_warn('', _("Name of printer should contain only letters, numbers and the underscore"));
				return (1,0);
			    }
			    if (($printer->{configured}{$newqueue})
				&& ($newqueue ne $oldqueue) && 
				(!$in->ask_yesorno('', _("The printer \"%s\" already exists,\ndo you really want to overwrite its configuration?",
							 $newqueue),
						   0))) {
				return (1,0); # Let the user correct the name
			    }
			    return 0;
			}}
		    },
		      [{label => _("New printer name"),val => \$newqueue}]))) {
		    {
			my $w = $in->wait_message('', 
			   _("Transferring %s ...", $oldqueue));
		        printer::copy_foomatic_queue($printer, $oldqueue,
						   $oldspooler, $newqueue) and
							 $queuecopied = 1;
		    }
		    if ($oldqueue eq $printer->{DEFAULT}) {
			# Make the former default printer the new default
			# printer if the user does not reject
			if (($noninteractive) ||
			    ($in->ask_yesorno
			     (_("Transfer printer configuration"),
			      _("You have transferred your former default printer (\"%s\"), Should it be also the default printer under the new printing system %s?", $oldqueue, $newspoolerstr), 1))) {
			    $printer->{DEFAULT} = $newqueue;
			    printer::set_default_printer($printer);
			}
		    }
		}
            }
	}
        if ($queuecopied) {
	    my $w = $in->wait_message('', _("Refreshing printer data ..."));
	    printer::read_configured_queues($printer);
        }
    }
}

sub start_network {
    my $in = $_[0];
    my $w = $in->wait_message(_("Configuration of a remote printer"), 
			      _("Starting network ..."));
    return printer::start_service("network");
}

sub check_network {

    # This routine is called whenever the user tries to configure a remote
    # printer. It checks the state of the network functionality to assure
    # that the network is up and running so that the remote printer is
    # reachable.

    my ($printer, $in) = @_;

    # Any additional dialogs caused by this subroutine should appear as
    # extra windows and not embedded in the "Add printer" wizard.
    local $::isWizard = 0;

    $in->set_help('checkNetwork') if $::isInstall;

    # First check: Does /etc/sysconfig/network-scripts/draknet_conf exist
    # (otherwise the network is not configured yet and draknet has to be
    # started)

    if (!printer::files_exist("/etc/sysconfig/network-scripts/draknet_conf")) {
	my $go_on = 0;
	while (!$go_on) {
	    my $choice = _("Configure the network now");
	    if ($in->ask_from(_("Network functionality not configured"),
			      _("You are going to configure a remote printer. This needs working network access, but your network is not configured yet. If you go on without network configuration, you will not be able to use the printer which you are configuring now. How do you want to proceed?"),
			      [ { val => \$choice, type => 'list',
				  list => [ _("Configure the network now"),
					    _("Go on without configuring the network") ]} ] )) {
		if ($choice eq _("Configure the network now")){
		    if ($::isInstall) {
			require network::netconnect;
		        network::netconnect::main
			    ($in->{prefix}, $in->{netcnx} ||= {}, 
			     $in->{netc}, $in->{mouse}, $in, 
			     $in->{intf}, 0,
			     $in->{lang} eq "fr_FR" && 
			     $in->{keyboard} eq "fr", 0);
		    } else {
			system("/usr/sbin/draknet");
		    }
		    if (printer::files_exist("/etc/sysconfig/network-scripts/draknet_conf")) {
			$go_on = 1;
		    }
		} else {
		    return 1;
		}
	    } else {
		return 0;
	    }
	}
    }

    # Second check: Is the network running?

    if (printer::network_running()) {return 1;}

    # The network is configured now, start it.
    if (!start_network($in)) {
	$in->ask_warn(_("Configuration of a remote printer"), 
($::isInstall ?
_("The network configuration done during the installation cannot be started now. Please check whether the network gets accessable after booting your system and correct the configuration using the Mandrake Control Center, section \"Network & Internet\"/\"Connection\", and afterwards set up the printer, also using the Mandrake Control Center, section \"Hardware\"/\"Printer\"") :
_("The network access was not running and could not be started. Please check your configuration and your hardware. Then try to configure your remote printer again.")));
	return 0;
    }

    # Give a SIGHUP to the daemon and in case of CUPS do also the
    # automatic configuration of broadcasting/access permissions
    # The daemon is not really restarted but only SIGHUPped to not
    # interrupt print jobs.

    my $w = $in->wait_message(_("Configuration of a remote printer"), 
			      _("Restarting printing system ..."));

    return printer::SIGHUP_daemon($printer->{SPOOLER});

}

sub security_check {
    # Check the security mode and when in "high" or "paranoid" mode ask the
    # user whether he really wants to configure printing.
    my ($printer, $in, $spooler) = @_;

    # Any additional dialogs caused by this subroutine should appear as
    # extra windows and not embedded in the "Add printer" wizard.
    local $::isWizard = 0;

    $in->set_help('securityCheck') if $::isInstall;

    # Get security level
    my $security = undef;
    if ($::isInstall) {
	$security = $in->{'security'};
    } else {
	$security = printer::get_security_level();
    }

    # Exit silently if the spooler is PDQ
    if ($spooler eq "pdq") {return 1;}

    # Exit silently in medium or lower security levels
    if ((!$security) || ($security < 4)) {return 1;}
    
    # Exit silently if the current spooler is already activated for the current
    # security level
    if (printer::spooler_in_security_level($spooler, $security)) {return 1;}

    # Tell user in which security mode he is and ask him whether he really
    # wants to activate the spooler in the given security mode. Stop the
    # operation of installing the spooler if he disagrees.
    my $securitystr = ($security == 4 ? _("high") : _("paranoid"));
    if ($in->ask_yesorno(_("Installing a printing system in the %s security level", $securitystr),
			 _("You are about to install the printing system %s on a system running in the %s security level.

This printing system runs a daemon (background process) which waits for print jobs and handles them. This daemon is also accessable by remote machines through the network and so it is a possible point for attacks. Therefore only a few selected daemons are started by default in this security level.

Do you really want to configure printing on this machine?",
			   $printer::shortspooler_inv{$spooler},
			   $securitystr))) {
        printer::add_spooler_to_security_level($spooler, $security);
	my $service;
	if (($spooler eq "lpr") || ($spooler eq "lprng")) {
	    $service = "lpd";
	} else {
	    $service = $spooler;
	}
        printer::start_service_on_boot($service);
	return 1;
    } else {
	return 0;
    }
}

sub start_spooler_on_boot {
    # Checks whether the spooler will be started at boot time and if not,
    # ask the user whether he wants to start the spooler at boot time.
    my ($printer, $in, $service) = @_;

    # Any additional dialogs caused by this subroutine should appear as
    # extra windows and not embedded in the "Add printer" wizard.
    local $::isWizard = 0;

    $in->set_help('startSpoolerOnBoot') if $::isInstall;
    if (!printer::service_starts_on_boot($service)) {
	if ($in->ask_yesorno(_("Starting the printing system at boot time"),
			     _("The printing system (%s) will not be started automatically when the machine is booted.

It is possible that the automatic starting was turned off by changing to a higher security level, because the printing system is a potential point for attacks.

Do you want to have the automatic starting of the printing system turned on again?",
		       $printer::shortspooler_inv{$printer->{SPOOLER}}))) {
	    printer::start_service_on_boot($service);
	}
    }
    1;
}

sub install_spooler {
    # installs the default spooler and start its daemon
    my ($printer, $in) = @_;
    if (!$::testing) {
	# If the user refuses to install the spooler in high or paranoid
	# security level, exit.
	if (!security_check($printer, $in, $printer->{SPOOLER})) {
	    return 0;
	}
	if ($printer->{SPOOLER} eq "cups") {
	    {
		my $w = $in->wait_message('', _("Checking installed software..."));
		if ((!$::testing) &&
		    (!printer::files_exist((qw(/usr/lib/cups/cgi-bin/printers.cgi
					       /sbin/ifconfig
					       /usr/bin/xpp),
					    ($::expert ? 
					     "/usr/share/cups/model/postscript.ppd.gz" : ())
					    )))) {
		    $in->do_pkgs->install(('cups', 'net-tools', 'xpp',
					   ($::expert ? 'cups-drivers' : ())));
		}
		# Start daemon
	        printer::start_service("cups");
		# Set the CUPS tools as defaults for "lpr", "lpq", "lprm", ...
	        printer::set_alternative("lpr","/usr/bin/lpr-cups");
	        printer::set_alternative("lpq","/usr/bin/lpq-cups");
	        printer::set_alternative("lprm","/usr/bin/lprm-cups");
	        printer::set_alternative("lp","/usr/bin/lp-cups");
	        printer::set_alternative("cancel","/usr/bin/cancel-cups");
	        printer::set_alternative("lpstat","/usr/bin/lpstat-cups");
	        printer::set_alternative("lpc","/usr/sbin/lpc-cups");
		# Remove PDQ panic buttons from the user's KDE Desktops
	        printer::pdq_panic_button("remove");
	    }
	    # Should it be started at boot time?
	    start_spooler_on_boot($printer, $in, "cups");
	} elsif ($printer->{SPOOLER} eq "lpd") {
	    {
		my $w = $in->wait_message('', _("Checking installed software..."));
		# "lpr" conflicts with "LPRng", remove "LPRng"
		if ((!$::testing) &&
		    (printer::files_exist((qw(/usr/lib/filters/lpf))))) {
		    my $w = $in->wait_message('', _("Removing LPRng..."));
		    $in->do_pkgs->remove_nodeps('LPRng');
		}
		if ((!$::testing) &&
		    (!printer::files_exist((qw(/usr/sbin/lpf
					       /usr/sbin/lpd
					       /sbin/ifconfig
					       /usr/bin/gpr
					       /usr/bin/a2ps
					       /usr/bin/convert))))) {
		    $in->do_pkgs->install(('lpr', 'net-tools', 'gpr', 'a2ps', 'ImageMagick'));
		}
		# Start daemon
	        printer::restart_service("lpd");
		# Set the LPD tools as defaults for "lpr", "lpq", "lprm", ...
	        printer::set_alternative("lpr","/usr/bin/lpr-lpd");
	        printer::set_alternative("lpq","/usr/bin/lpq-lpd");
	        printer::set_alternative("lprm","/usr/bin/lprm-lpd");