summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES-1.4.txt56
-rw-r--r--CHANGES.txt4
-rw-r--r--backend/backend-private.h23
-rw-r--r--backend/ieee1284.c22
-rw-r--r--backend/ipp.c2
-rw-r--r--backend/lpd.c3
-rw-r--r--backend/network.c8
-rw-r--r--backend/parallel.c2
-rw-r--r--backend/runloop.c11
-rw-r--r--backend/snmp-supplies.c2
-rw-r--r--backend/snmp.c8
-rw-r--r--backend/socket.c2
-rw-r--r--backend/usb-darwin.c20
-rw-r--r--backend/usb-unix.c6
-rw-r--r--cgi-bin/admin.c221
-rw-r--r--cgi-bin/cgi.h13
-rw-r--r--cgi-bin/classes.c1
-rw-r--r--cgi-bin/help-index.h12
-rw-r--r--cgi-bin/help.c11
-rw-r--r--cgi-bin/ipp-var.c44
-rw-r--r--cgi-bin/jobs.c1
-rw-r--r--cgi-bin/libcupscgi.exp1
-rw-r--r--cgi-bin/printers.c1
-rw-r--r--cgi-bin/template.c6
-rw-r--r--cgi-bin/var.c44
-rw-r--r--conf/mime.convs.in1
-rw-r--r--cups/backend.h12
-rw-r--r--cups/conflicts.c6
-rw-r--r--cups/dest.c6
-rw-r--r--cups/http.c89
-rw-r--r--cups/mark.c36
-rw-r--r--cups/ppd.c37
-rw-r--r--cups/ppd.h5
-rw-r--r--cups/sidechannel.c43
-rw-r--r--cups/tempfile.c4
-rw-r--r--cups/test.ppd2
-rw-r--r--cups/util.c34
-rw-r--r--doc/cups.css6
-rw-r--r--doc/de/index.html.in4
-rw-r--r--doc/id/index.html.in107
-rw-r--r--locale/cups_id.po7095
-rw-r--r--man/cupstestppd.man6
-rw-r--r--packaging/cups.list.in10
-rw-r--r--ppdc/ppdc-catalog.cxx3
-rw-r--r--ppdc/ppdc-driver.cxx23
-rw-r--r--scheduler/conf.c28
-rw-r--r--scheduler/dirsvc.c337
-rw-r--r--scheduler/ipp.c27
-rw-r--r--scheduler/job.c92
-rw-r--r--scheduler/main.c21
-rw-r--r--scheduler/org.cups.cups-lpd.plist.in2
-rw-r--r--scheduler/org.cups.cupsd.plist2
-rw-r--r--scheduler/process.c12
-rw-r--r--scheduler/select.c15
-rw-r--r--systemv/cupstestppd.c34
-rw-r--r--templates/add-printer.tmpl4
-rw-r--r--templates/admin.tmpl2
-rw-r--r--templates/choose-device.tmpl19
-rw-r--r--templates/de/add-printer.tmpl4
-rw-r--r--templates/de/admin.tmpl2
-rw-r--r--templates/de/class-confirm.tmpl4
-rw-r--r--templates/de/help-header.tmpl4
-rw-r--r--templates/de/jobs.tmpl2
-rw-r--r--templates/de/modify-printer.tmpl4
-rw-r--r--templates/de/option-conflict.tmpl2
-rw-r--r--templates/de/printer-confirm.tmpl4
-rw-r--r--templates/de/printer.tmpl2
-rw-r--r--templates/es/add-printer.tmpl4
-rw-r--r--templates/es/admin.tmpl2
-rw-r--r--templates/es/modify-printer.tmpl4
-rw-r--r--templates/es/option-conflict.tmpl2
-rw-r--r--templates/eu/add-printer.tmpl4
-rw-r--r--templates/eu/admin.tmpl2
-rw-r--r--templates/eu/modify-printer.tmpl4
-rw-r--r--templates/eu/option-conflict.tmpl2
-rw-r--r--templates/id/add-class.tmpl39
-rw-r--r--templates/id/add-printer.tmpl42
-rw-r--r--templates/id/add-rss-subscription.tmpl43
-rw-r--r--templates/id/admin.tmpl109
-rw-r--r--templates/id/choose-device.tmpl53
-rw-r--r--templates/id/choose-make.tmpl63
-rw-r--r--templates/id/choose-model.tmpl59
-rw-r--r--templates/id/choose-serial.tmpl51
-rw-r--r--templates/id/choose-uri.tmpl42
-rw-r--r--templates/id/class-added.tmpl7
-rw-r--r--templates/id/class-confirm.tmpl10
-rw-r--r--templates/id/class-deleted.tmpl7
-rw-r--r--templates/id/class-jobs-header.tmpl3
-rw-r--r--templates/id/class-modified.tmpl7
-rw-r--r--templates/id/class.tmpl41
-rw-r--r--templates/id/classes-header.tmpl1
-rw-r--r--templates/id/classes.tmpl11
-rw-r--r--templates/id/command.tmpl12
-rw-r--r--templates/id/edit-config.tmpl24
-rw-r--r--templates/id/error-op.tmpl9
-rw-r--r--templates/id/error.tmpl9
-rw-r--r--templates/id/header.tmpl.in29
-rw-r--r--templates/id/help-header.tmpl47
-rw-r--r--templates/id/help-printable.tmpl9
-rw-r--r--templates/id/help-trailer.tmpl1
-rw-r--r--templates/id/job-cancel.tmpl7
-rw-r--r--templates/id/job-hold.tmpl7
-rw-r--r--templates/id/job-move.tmpl26
-rw-r--r--templates/id/job-moved.tmpl8
-rw-r--r--templates/id/job-release.tmpl7
-rw-r--r--templates/id/job-restart.tmpl7
-rw-r--r--templates/id/jobs-header.tmpl5
-rw-r--r--templates/id/jobs.tmpl37
-rw-r--r--templates/id/list-available-printers.tmpl11
-rw-r--r--templates/id/modify-class.tmpl33
-rw-r--r--templates/id/modify-printer.tmpl37
-rw-r--r--templates/id/norestart.tmpl7
-rw-r--r--templates/id/option-boolean.tmpl6
-rw-r--r--templates/id/option-conflict.tmpl7
-rw-r--r--templates/id/option-header.tmpl5
-rw-r--r--templates/id/option-pickmany.tmpl6
-rw-r--r--templates/id/option-pickone.tmpl18
-rw-r--r--templates/id/option-trailer.tmpl5
-rw-r--r--templates/id/pager.tmpl6
-rw-r--r--templates/id/printer-accept.tmpl9
-rw-r--r--templates/id/printer-added.tmpl7
-rw-r--r--templates/id/printer-configured.tmpl8
-rw-r--r--templates/id/printer-confirm.tmpl10
-rw-r--r--templates/id/printer-default.tmpl11
-rw-r--r--templates/id/printer-deleted.tmpl7
-rw-r--r--templates/id/printer-jobs-header.tmpl3
-rw-r--r--templates/id/printer-modified.tmpl7
-rw-r--r--templates/id/printer-purge.tmpl9
-rw-r--r--templates/id/printer-reject.tmpl9
-rw-r--r--templates/id/printer-start.tmpl9
-rw-r--r--templates/id/printer-stop.tmpl9
-rw-r--r--templates/id/printer.tmpl45
-rw-r--r--templates/id/printers-header.tmpl1
-rw-r--r--templates/id/printers.tmpl11
-rw-r--r--templates/id/restart.tmpl8
-rw-r--r--templates/id/samba-export.tmpl54
-rw-r--r--templates/id/samba-exported.tmpl1
-rw-r--r--templates/id/search.tmpl10
-rw-r--r--templates/id/set-printer-options-header.tmpl25
-rw-r--r--templates/id/set-printer-options-trailer.tmpl16
-rw-r--r--templates/id/subscription-added.tmpl5
-rw-r--r--templates/id/subscription-canceled.tmpl5
-rw-r--r--templates/id/test-page.tmpl8
-rw-r--r--templates/id/trailer.tmpl8
-rw-r--r--templates/id/users.tmpl29
-rw-r--r--templates/ja/add-printer.tmpl4
-rw-r--r--templates/ja/admin.tmpl2
-rw-r--r--templates/ja/modify-printer.tmpl4
-rw-r--r--templates/ja/option-conflict.tmpl2
-rw-r--r--templates/modify-printer.tmpl4
-rw-r--r--templates/option-conflict.tmpl2
-rw-r--r--templates/pl/add-printer.tmpl4
-rw-r--r--templates/pl/admin.tmpl2
-rw-r--r--templates/pl/jobs-header.tmpl2
-rw-r--r--templates/pl/modify-printer.tmpl4
-rw-r--r--templates/pl/option-conflict.tmpl2
-rw-r--r--templates/ru/add-printer.tmpl4
-rw-r--r--templates/ru/admin.tmpl2
-rw-r--r--templates/ru/jobs-header.tmpl7
-rw-r--r--templates/ru/modify-printer.tmpl4
-rw-r--r--templates/ru/option-conflict.tmpl2
-rwxr-xr-xtest/run-stp-tests.sh6
162 files changed, 9548 insertions, 506 deletions
diff --git a/CHANGES-1.4.txt b/CHANGES-1.4.txt
index e83ba0332..74c595971 100644
--- a/CHANGES-1.4.txt
+++ b/CHANGES-1.4.txt
@@ -1,8 +1,64 @@
CHANGES-1.4.txt
---------------
+CHANGES IN CUPS V1.4.3
+
+ - SECURITY: The scheduler could try responding on a closed client
+ connection, leading to a crash (STR #3200)
+ - Localization updates (STR #3352, STR #3409, STR #3422)
+ - The scheduler would crash when an active printer was deleted.
+ - The snmp backend did not work with some printers (STR #3413)
+ - The web interface did not show the conflicting values when setting
+ options (STR #3440)
+ - Setting options in the web interface did not always work (STR #3439)
+ - The scheduler did not use the Get-Job-Attributes policy for a printer
+ (STR #3431)
+ - The scheduler added two job-name attributes to each job object
+ (STR #3428)
+ - CSS files would not print (STR #3442)
+ - The scheduler did not clean out completed jobs when PreserveJobHistory
+ was turned off (STR #3425)
+ - The web interface did not show completed jobs for a printer
+ (STR #3436)
+ - Authenticated printing did not always work when printing directly to
+ a remote server (STR #3435)
+ - The USB backend did not work on Solaris (STR #3423)
+ - cupstestppd didn't catch problems with JobPatchFile definitions
+ (STR #3421)
+ - The socket backend could crash if a SNMP string had a negative length.
+ - Fixed some termination issues with the USB backend on Mac OS X.
+ - The side-channel APIs did not handle interrupts properly.
+ - The network backends incorrectly cleared the media-empty-warning
+ state.
+ - The web interface did not allow users to successfully add serial
+ printers (STR #3391)
+ - cupsTempFd() did not work in some situations (STR #3382)
+ - Some C API headers were missing C++ wrapper logic.
+ - The PPD compiler did not localize single-language PPD options properly
+ (STR #3386)
+ - Modifying a printer from the web interface sometimes caused the wrong
+ driver to be selected (STR #3418)
+ - The scheduler did not handle out-of-memory conditions properly when
+ loading a job (STR #3407)
+ - When adding printers from the web interface, the dynamic updates of
+ the device list made it hard to pick a device (STR #3406)
+ - Fixed a typo in the web interface admin page template (STR 3403)
+ - The web interface did not preserve the "printer is shared" state when
+ modifying a printer (STR #3390)
+ - The PPD compiler incorrectly inserted translations of empty strings
+ (STR #3411)
+ - The scheduler did not reset the SIGPIPE handler of child processes
+ (STR #3399)
+ - cupsGetNamedDest() incorrectly returned the default printer if the
+ named printer did not exist (STR #3397)
+ - Fixed a GNU TLS error handling bug (STR #3381)
+
+
CHANGES IN CUPS V1.4.2
+ - SECURITY: The CUPS web interface was vulnerable to several XSS and
+ HTTP header/body attacks via attribute injection (STR #3367,
+ STR #3401)
- Fixed localization errors (STR #3359, STR #3372, STR #3380, STR #3387)
- The documentation for classes.conf and printers.conf did not provide
the correct instructions for manual changes (STR #3351)
diff --git a/CHANGES.txt b/CHANGES.txt
index aa6e39bd0..b8f215201 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,8 +1,10 @@
-CHANGES.txt - 2009-10-15
+CHANGES.txt - 2009-11-19
------------------------
CHANGES IN CUPS V1.5b1
+ - The cupstestppd tool now warns about non-unique filenames and
+ provides a way to ignore all filename warnings.
- Dropped support for the recoverable: and recovered: message prefixes.
- The scheduler now requires that filters and backends have group write
permissions disabled.
diff --git a/backend/backend-private.h b/backend/backend-private.h
index 7d8fd2e2c..6db6fa495 100644
--- a/backend/backend-private.h
+++ b/backend/backend-private.h
@@ -34,6 +34,26 @@
# include <cups/string.h>
# include <signal.h>
+# ifdef __linux
+# include <sys/ioctl.h>
+# include <linux/lp.h>
+# define IOCNR_GET_DEVICE_ID 1
+# define LPIOC_GET_DEVICE_ID(len) _IOC(_IOC_READ, 'P', IOCNR_GET_DEVICE_ID, len)
+# include <linux/parport.h>
+# include <linux/ppdev.h>
+# include <unistd.h>
+# include <fcntl.h>
+# endif /* __linux */
+
+# ifdef __sun
+# ifdef __sparc
+# include <sys/ecppio.h>
+# else
+# include <sys/ioccom.h>
+# include <sys/ecppsys.h>
+# endif /* __sparc */
+# endif /* __sun */
+
/*
* C++ magic...
@@ -280,7 +300,8 @@ extern int backendNetworkSideCB(int print_fd, int device_fd,
int snmp_fd, http_addr_t *addr,
int use_bc);
extern ssize_t backendRunLoop(int print_fd, int device_fd, int snmp_fd,
- http_addr_t *addr, int use_bc,
+ http_addr_t *addr, int use_bc,
+ int update_state,
int (*side_cb)(int print_fd,
int device_fd,
int snmp_fd,
diff --git a/backend/ieee1284.c b/backend/ieee1284.c
index 46499db45..6b2d010f0 100644
--- a/backend/ieee1284.c
+++ b/backend/ieee1284.c
@@ -3,7 +3,7 @@
*
* IEEE-1284 support functions for the Common UNIX Printing System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -27,26 +27,6 @@
#include "backend-private.h"
-#ifdef __linux
-# include <sys/ioctl.h>
-# include <linux/lp.h>
-# define IOCNR_GET_DEVICE_ID 1
-# define LPIOC_GET_DEVICE_ID(len) _IOC(_IOC_READ, 'P', IOCNR_GET_DEVICE_ID, len)
-# include <linux/parport.h>
-# include <linux/ppdev.h>
-# include <unistd.h>
-# include <fcntl.h>
-#endif /* __linux */
-
-#ifdef __sun
-# ifdef __sparc
-# include <sys/ecppio.h>
-# else
-# include <sys/ioccom.h>
-# include <sys/ecppsys.h>
-# endif /* __sparc */
-#endif /* __sun */
-
/*
* 'backendGetDeviceID()' - Get the IEEE-1284 device ID string and
diff --git a/backend/ipp.c b/backend/ipp.c
index 92e3bdc12..f5cfbd000 100644
--- a/backend/ipp.c
+++ b/backend/ipp.c
@@ -432,7 +432,7 @@ main(int argc, /* I - Number of command-line args */
_cupsLangPuts(stderr, _("INFO: Copying print data...\n"));
- tbytes = backendRunLoop(-1, fd, snmp_fd, &(addrlist->addr), 0,
+ tbytes = backendRunLoop(-1, fd, snmp_fd, &(addrlist->addr), 0, 0,
backendNetworkSideCB);
if (snmp_fd >= 0)
diff --git a/backend/lpd.c b/backend/lpd.c
index 0e91a5388..c4436aabf 100644
--- a/backend/lpd.c
+++ b/backend/lpd.c
@@ -447,7 +447,8 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
_cupsLangPuts(stderr, _("INFO: Copying print data...\n"));
- backendRunLoop(-1, fd, snmp_fd, &(addrlist->addr), 0, backendNetworkSideCB);
+ backendRunLoop(-1, fd, snmp_fd, &(addrlist->addr), 0, 0,
+ backendNetworkSideCB);
if (snmp_fd >= 0)
_cupsSNMPClose(snmp_fd);
diff --git a/backend/network.c b/backend/network.c
index e5cb16d1a..0a4908a77 100644
--- a/backend/network.c
+++ b/backend/network.c
@@ -170,9 +170,13 @@ backendNetworkSideCB(
case CUPS_ASN1_BIT_STRING :
case CUPS_ASN1_OCTET_STRING :
- i = (int)(sizeof(data) - (dataptr - data));
- if (packet.object_value.string.num_bytes < i)
+ if (packet.object_value.string.num_bytes < 0)
+ i = 0;
+ else if (packet.object_value.string.num_bytes <
+ (sizeof(data) - (dataptr - data)))
i = packet.object_value.string.num_bytes;
+ else
+ i = (int)(sizeof(data) - (dataptr - data));
memcpy(dataptr, packet.object_value.string.bytes, i);
diff --git a/backend/parallel.c b/backend/parallel.c
index 03d59d443..b0662efbe 100644
--- a/backend/parallel.c
+++ b/backend/parallel.c
@@ -284,7 +284,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
lseek(print_fd, 0, SEEK_SET);
}
- tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, side_cb);
+ tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, 1, side_cb);
if (print_fd != 0 && tbytes >= 0)
_cupsLangPrintf(stderr,
diff --git a/backend/runloop.c b/backend/runloop.c
index b76decc03..3c914ecf4 100644
--- a/backend/runloop.c
+++ b/backend/runloop.c
@@ -147,6 +147,7 @@ backendRunLoop(
int snmp_fd, /* I - SNMP socket or -1 if none */
http_addr_t *addr, /* I - Address of device */
int use_bc, /* I - Use back-channel? */
+ int update_state, /* I - Update printer-state-reasons? */
int (*side_cb)(int, int, int, http_addr_t *, int))
/* I - Side-channel callback */
{
@@ -245,7 +246,7 @@ backendRunLoop(
* Pause printing to clear any pending errors...
*/
- if (errno == ENXIO && offline != 1)
+ if (errno == ENXIO && offline != 1 && update_state)
{
fputs("STATE: +offline-report\n", stderr);
_cupsLangPuts(stderr, _("INFO: Printer is currently offline.\n"));
@@ -351,7 +352,7 @@ backendRunLoop(
if (errno == ENOSPC)
{
- if (paperout != 1)
+ if (paperout != 1 && update_state)
{
fputs("STATE: +media-empty-warning\n", stderr);
_cupsLangPuts(stderr, _("ERROR: Out of paper\n"));
@@ -360,7 +361,7 @@ backendRunLoop(
}
else if (errno == ENXIO)
{
- if (offline != 1)
+ if (offline != 1 && update_state)
{
fputs("STATE: +offline-report\n", stderr);
_cupsLangPuts(stderr, _("INFO: Printer is currently off-line.\n"));
@@ -376,13 +377,13 @@ backendRunLoop(
}
else
{
- if (paperout)
+ if (paperout && update_state)
{
fputs("STATE: -media-empty-warning\n", stderr);
paperout = 0;
}
- if (offline)
+ if (offline && update_state)
{
fputs("STATE: -offline-report\n", stderr);
_cupsLangPuts(stderr, _("INFO: Printer is now online.\n"));
diff --git a/backend/snmp-supplies.c b/backend/snmp-supplies.c
index 6be80ee14..8ee031d69 100644
--- a/backend/snmp-supplies.c
+++ b/backend/snmp-supplies.c
@@ -232,6 +232,8 @@ backendSNMPSupplies(
if (packet.object_value.string.num_bytes == 2)
new_state = (packet.object_value.string.bytes[0] << 8) |
packet.object_value.string.bytes[1];
+ else if (packet.object_value.string.num_bytes == 1)
+ new_state = (packet.object_value.string.bytes[0] << 8);
else
new_state = 0;
diff --git a/backend/snmp.c b/backend/snmp.c
index 0b7513d5b..17a1e73c9 100644
--- a/backend/snmp.c
+++ b/backend/snmp.c
@@ -999,7 +999,7 @@ read_snmp_response(int fd) /* I - SNMP socket file descriptor */
DEVICE_PRODUCT, LexmarkProductOID2);
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
packet.community, CUPS_ASN1_GET_REQUEST,
- DEVICE_URI, LexmarkDeviceIdOID);
+ DEVICE_ID, LexmarkDeviceIdOID);
_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
packet.community, CUPS_ASN1_GET_REQUEST,
DEVICE_PRODUCT, XeroxProductOID);
@@ -1054,7 +1054,9 @@ read_snmp_response(int fd) /* I - SNMP socket file descriptor */
break;
case DEVICE_ID :
- if (device && packet.object_type == CUPS_ASN1_OCTET_STRING)
+ if (device && packet.object_type == CUPS_ASN1_OCTET_STRING &&
+ (!device->id ||
+ strlen(device->id) < packet.object_value.string.num_bytes))
{
/*
* Update an existing cache entry...
@@ -1107,7 +1109,7 @@ read_snmp_response(int fd) /* I - SNMP socket file descriptor */
case DEVICE_URI :
if (device && packet.object_type == CUPS_ASN1_OCTET_STRING &&
- !device->uri)
+ !device->uri && packet.object_value.string.num_bytes > 0)
{
/*
* Update an existing cache entry...
diff --git a/backend/socket.c b/backend/socket.c
index 506ba9ec2..46d7f5eda 100644
--- a/backend/socket.c
+++ b/backend/socket.c
@@ -375,7 +375,7 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
lseek(print_fd, 0, SEEK_SET);
}
- tbytes = backendRunLoop(print_fd, device_fd, snmp_fd, &(addr->addr), 1,
+ tbytes = backendRunLoop(print_fd, device_fd, snmp_fd, &(addr->addr), 1, 0,
backendNetworkSideCB);
if (print_fd != 0 && tbytes >= 0)
diff --git a/backend/usb-darwin.c b/backend/usb-darwin.c
index d40e60a43..9eba28707 100644
--- a/backend/usb-darwin.c
+++ b/backend/usb-darwin.c
@@ -498,6 +498,7 @@ print_device(const char *uri, /* I - Device URI */
{
_cupsLangPuts(stderr, _("ERROR: Fatal USB error\n"));
fputs("DEBUG: Couldn't create side-channel thread\n", stderr);
+ registry_close();
return (CUPS_BACKEND_STOP);
}
}
@@ -516,6 +517,7 @@ print_device(const char *uri, /* I - Device URI */
{
_cupsLangPuts(stderr, _("ERROR: Fatal USB error\n"));
fputs("DEBUG: Couldn't create read thread\n", stderr);
+ registry_close();
return (CUPS_BACKEND_STOP);
}
@@ -594,13 +596,15 @@ print_device(const char *uri, /* I - Device URI */
{
fputs("DEBUG: Received an interrupt before any bytes were "
"written, aborting\n", stderr);
+ registry_close();
return (CUPS_BACKEND_OK);
}
else if (errno != EAGAIN && errno != EINTR)
{
_cupsLangPuts(stderr, _("ERROR: Unable to read print data\n"));
perror("DEBUG: select");
- return (CUPS_BACKEND_FAILED);
+ registry_close();
+ return (CUPS_BACKEND_FAILED);
}
}
@@ -642,6 +646,7 @@ print_device(const char *uri, /* I - Device URI */
{
_cupsLangPuts(stderr, _("ERROR: Unable to read print data\n"));
perror("DEBUG: read");
+ registry_close();
return (CUPS_BACKEND_FAILED);
}
@@ -943,7 +948,12 @@ sidechannel_thread(void *reference)
datalen = sizeof(data);
if (cupsSideChannelRead(&command, &status, data, &datalen, 1.0))
- break;
+ {
+ if (status == CUPS_SC_STATUS_TIMEOUT)
+ continue;
+ else
+ break;
+ }
switch (command)
{
@@ -1901,6 +1911,7 @@ static void run_legacy_backend(int argc,
* Setup a SIGTERM handler then block it before forking...
*/
+ int err; /* posix_spawn result */
struct sigaction action; /* POSIX signal action */
sigset_t newmask, /* New signal mask */
oldmask; /* Old signal mask */
@@ -1967,10 +1978,11 @@ static void run_legacy_backend(int argc,
my_argv[i] = NULL;
- if (posix_spawn(&child_pid, usbpath, NULL, &attrs, my_argv, environ))
+ if ((err = posix_spawn(&child_pid, usbpath, NULL, &attrs, my_argv,
+ environ)) != 0)
{
fprintf(stderr, "DEBUG: Unable to exec %s: %s\n", usbpath,
- strerror(errno));
+ strerror(err));
_cupsLangPrintf(stderr, _("Unable to use legacy USB class driver\n"));
exit(CUPS_BACKEND_STOP);
}
diff --git a/backend/usb-unix.c b/backend/usb-unix.c
index 44faa630c..6d89deecf 100644
--- a/backend/usb-unix.c
+++ b/backend/usb-unix.c
@@ -5,7 +5,7 @@
*
* This file is included from "usb.c" when compiled on UNIX/Linux.
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -187,10 +187,10 @@ print_device(const char *uri, /* I - Device URI */
* select() or poll(), so we can't support the sidechannel either...
*/
- tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, NULL);
+ tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, 1, NULL);
#else
- tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, side_cb);
+ tbytes = backendRunLoop(print_fd, device_fd, -1, NULL, use_bc, 1, side_cb);
#endif /* __sun */
if (print_fd != 0 && tbytes >= 0)
diff --git a/cgi-bin/admin.c b/cgi-bin/admin.c
index 520e6e50f..cdb1a2a89 100644
--- a/cgi-bin/admin.c
+++ b/cgi-bin/admin.c
@@ -49,14 +49,6 @@
/*
- * Local globals...
- */
-
-static int current_device; /* Current device for add/modify */
-static time_t last_device_time; /* Last update time for device list */
-
-
-/*
* Local functions...
*/
@@ -65,7 +57,7 @@ static void choose_device_cb(const char *device_class,
const char *device_make_and_model,
const char *device_uri,
const char *device_location,
- const char *title);
+ int *current_device);
static void do_add_rss_subscription(http_t *http);
static void do_am_class(http_t *http, int modify);
static void do_am_printer(http_t *http, int modify);
@@ -122,6 +114,7 @@ main(int argc, /* I - Number of command-line arguments */
*/
cgiSetVariable("SECTION", "admin");
+ cgiSetVariable("REFRESH_PAGE", "");
/*
* See if we have form data...
@@ -191,7 +184,7 @@ main(int argc, /* I - Number of command-line arguments */
}
else if (op && !strcmp(op, "redirect"))
{
- const char *url; /* Redirection URL... */
+ const char *url; /* Redirection URL... */
char prefix[1024]; /* URL prefix */
@@ -205,7 +198,50 @@ main(int argc, /* I - Number of command-line arguments */
fprintf(stderr, "DEBUG: redirecting with prefix %s!\n", prefix);
if ((url = cgiGetVariable("URL")) != NULL)
- printf("Location: %s%s\n\n", prefix, url);
+ {
+ char encoded[1024], /* Encoded URL string */
+ *ptr; /* Pointer into encoded string */
+
+
+ ptr = encoded;
+ if (*url != '/')
+ *ptr++ = '/';
+
+ for (; *url && ptr < (encoded + sizeof(encoded) - 4); url ++)
+ {
+ if (strchr("%@&+ <>#=", *url) || *url < ' ' || *url & 128)
+ {
+ /*
+ * Percent-encode this character; safe because we have at least 4
+ * bytes left in the array...
+ */
+
+ sprintf(ptr, "%%%02X", *url & 255);
+ ptr += 3;
+ }
+ else
+ *ptr++ = *url;
+ }
+
+ *ptr = '\0';
+
+ if (*url)
+ {
+ /*
+ * URL was too long, just redirect to the admin page...
+ */
+
+ printf("Location: %s/admin\n\n", prefix);
+ }
+ else
+ {
+ /*
+ * URL is OK, redirect there...
+ */
+
+ printf("Location: %s%s\n\n", prefix, encoded);
+ }
+ }
else
printf("Location: %s/admin\n\n", prefix);
}
@@ -246,37 +282,20 @@ choose_device_cb(
const char *device_make_and_model, /* I - Make and model */
const char *device_uri, /* I - Device URI */
const char *device_location, /* I - Location */
- const char *title) /* I - Page title */
+ int *current_device) /* I - Current device index */
{
/*
* Add the device to the array...
*/
- cgiSetArray("device_class", current_device, device_class);
- cgiSetArray("device_id", current_device, device_id);
- cgiSetArray("device_info", current_device, device_info);
- cgiSetArray("device_make_and_model", current_device, device_make_and_model);
- cgiSetArray("device_uri", current_device, device_uri);
- cgiSetArray("device_location", current_device, device_location);
-
- current_device ++;
-
- if (time(NULL) > last_device_time && cgiSupportsMultipart())
- {
- /*
- * Update the page...
- */
-
- if (!last_device_time)
- cgiStartMultipart();
-
- cgiStartHTML(title);
- cgiCopyTemplateLang("choose-device.tmpl");
- cgiEndHTML();
- fflush(stdout);
+ cgiSetArray("device_class", *current_device, device_class);
+ cgiSetArray("device_id", *current_device, device_id);
+ cgiSetArray("device_info", *current_device, device_info);
+ cgiSetArray("device_make_and_model", *current_device, device_make_and_model);
+ cgiSetArray("device_uri", *current_device, device_uri);
+ cgiSetArray("device_location", *current_device, device_location);
- time(&last_device_time);
- }
+ (*current_device) ++;
}
@@ -345,6 +364,31 @@ do_add_rss_subscription(http_t *http) /* I - HTTP connection */
* and classes and (re)show the add page...
*/
+ if (cgiGetVariable("EVENT_JOB_CREATED"))
+ cgiSetVariable("EVENT_JOB_CREATED", "CHECKED");
+ if (cgiGetVariable("EVENT_JOB_COMPLETED"))
+ cgiSetVariable("EVENT_JOB_COMPLETED", "CHECKED");
+ if (cgiGetVariable("EVENT_JOB_STOPPED"))
+ cgiSetVariable("EVENT_JOB_STOPPED", "CHECKED");
+ if (cgiGetVariable("EVENT_JOB_CONFIG_CHANGED"))
+ cgiSetVariable("EVENT_JOB_CONFIG_CHANGED", "CHECKED");
+ if (cgiGetVariable("EVENT_PRINTER_STOPPED"))
+ cgiSetVariable("EVENT_PRINTER_STOPPED", "CHECKED");
+ if (cgiGetVariable("EVENT_PRINTER_ADDED"))
+ cgiSetVariable("EVENT_PRINTER_ADDED", "CHECKED");
+ if (cgiGetVariable("EVENT_PRINTER_MODIFIED"))
+ cgiSetVariable("EVENT_PRINTER_MODIFIED", "CHECKED");
+ if (cgiGetVariable("EVENT_PRINTER_DELETED"))
+ cgiSetVariable("EVENT_PRINTER_DELETED", "CHECKED");
+ if (cgiGetVariable("EVENT_SERVER_STARTED"))
+ cgiSetVariable("EVENT_SERVER_STARTED", "CHECKED");
+ if (cgiGetVariable("EVENT_SERVER_STOPPED"))
+ cgiSetVariable("EVENT_SERVER_STOPPED", "CHECKED");
+ if (cgiGetVariable("EVENT_SERVER_RESTARTED"))
+ cgiSetVariable("EVENT_SERVER_RESTARTED", "CHECKED");
+ if (cgiGetVariable("EVENT_SERVER_AUDIT"))
+ cgiSetVariable("EVENT_SERVER_AUDIT", "CHECKED");
+
request = ippNewRequest(CUPS_GET_PRINTERS);
response = cupsDoRequest(http, request, "/");
@@ -467,6 +511,7 @@ do_am_class(http_t *http, /* I - HTTP connection */
ipp_attribute_t *attr; /* member-uris attribute */
char uri[HTTP_MAX_URI]; /* Device or printer URI */
const char *name, /* Pointer to class name */
+ *op, /* Operation name */
*ptr; /* Pointer to CGI variable */
const char *title; /* Title of page */
static const char * const pattrs[] = /* Requested printer attributes */
@@ -478,6 +523,7 @@ do_am_class(http_t *http, /* I - HTTP connection */
title = cgiText(modify ? _("Modify Class") : _("Add Class"));
+ op = cgiGetVariable("OP");
name = cgiGetVariable("PRINTER_NAME");
if (cgiGetVariable("PRINTER_LOCATION") == NULL)
@@ -502,6 +548,12 @@ do_am_class(http_t *http, /* I - HTTP connection */
* Do the request and get back a response...
*/
+ cgiClearVariables();
+ if (op)
+ cgiSetVariable("OP", op);
+ if (name)
+ cgiSetVariable("PRINTER_NAME", name);
+
if ((response = cupsDoRequest(http, request, "/")) != NULL)
{
/*
@@ -764,6 +816,7 @@ do_am_printer(http_t *http, /* I - HTTP connection */
const char *name, /* Pointer to class name */
*ptr; /* Pointer to CGI variable */
const char *title; /* Title of page */
+ int current_device; /* Index of current device */
static int baudrates[] = /* Baud rates */
{
1200,
@@ -924,31 +977,42 @@ do_am_printer(http_t *http, /* I - HTTP connection */
}
/*
- * Scan for devices for up to 30 seconds, updating the page as we find
- * them...
+ * For modern browsers, start a multi-part page so we can show that something
+ * is happening. Non-modern browsers just get everything at the end...
+ */
+
+ if (cgiSupportsMultipart())
+ {
+ cgiStartMultipart();
+ cgiStartHTML(title);
+ cgiCopyTemplateLang("choose-device.tmpl");
+ cgiEndHTML();
+ fflush(stdout);
+ }
+
+ /*
+ * Scan for devices for up to 30 seconds...
*/
fputs("DEBUG: Getting list of devices...\n", stderr);
- last_device_time = 0;
- current_device = 0;
+ current_device = 0;
if (cupsGetDevices(http, 30, CUPS_INCLUDE_ALL, CUPS_EXCLUDE_NONE,
(cups_device_cb_t)choose_device_cb,
- (void *)title) == IPP_OK)
+ &current_device) == IPP_OK)
{
fputs("DEBUG: Got device list!\n", stderr);
- if (!cgiSupportsMultipart())
- {
- /*
- * Non-modern browsers that don't support multi-part documents get
- * everything at the end...
- */
+ if (cgiSupportsMultipart())
+ cgiStartMultipart();
- cgiStartHTML(title);
- cgiCopyTemplateLang("choose-device.tmpl");
- cgiEndHTML();
- }
+ cgiSetVariable("CUPS_GET_DEVICES_DONE", "1");
+ cgiStartHTML(title);
+ cgiCopyTemplateLang("choose-device.tmpl");
+ cgiEndHTML();
+
+ if (cgiSupportsMultipart())
+ cgiEndMultipart();
}
else
{
@@ -969,16 +1033,6 @@ do_am_printer(http_t *http, /* I - HTTP connection */
return;
}
}
-
- /*
- * Show the final selection page...
- */
-
- cgiSetVariable("CUPS_GET_DEVICES_DONE", "1");
- cgiStartHTML(title);
- cgiCopyTemplateLang("choose-device.tmpl");
- cgiEndHTML();
- cgiEndMultipart();
}
else if (strchr(var, '/') == NULL)
{
@@ -1044,6 +1098,11 @@ do_am_printer(http_t *http, /* I - HTTP connection */
if ((attr = ippFindAttribute(oldinfo, "printer-location",
IPP_TAG_TEXT)) != NULL)
cgiSetVariable("PRINTER_LOCATION", attr->values[0].string.text);
+
+ if ((attr = ippFindAttribute(oldinfo, "printer-is-shared",
+ IPP_TAG_BOOLEAN)) != NULL)
+ cgiSetVariable("PRINTER_IS_SHARED",
+ attr->values[0].boolean ? "1" : "0");
}
cgiCopyTemplateLang("modify-printer.tmpl");
@@ -1179,7 +1238,7 @@ do_am_printer(http_t *http, /* I - HTTP connection */
* Got the list of PPDs, see if the user has selected a make...
*/
- if (cgiSetIPPVars(response, NULL, NULL, NULL, 0) == 0)
+ if (cgiSetIPPVars(response, NULL, NULL, NULL, 0) == 0 && !modify)
{
/*
* No PPD files with this make, try again with all makes...
@@ -1215,8 +1274,11 @@ do_am_printer(http_t *http, /* I - HTTP connection */
*/
cgiStartHTML(title);
- cgiSetVariable("CURRENT_MAKE_AND_MODEL",
- cgiGetArray("PPD_MAKE_AND_MODEL", 0));
+ if (!cgiGetVariable("PPD_MAKE"))
+ cgiSetVariable("PPD_MAKE", cgiGetVariable("CURRENT_MAKE"));
+ if (!modify)
+ cgiSetVariable("CURRENT_MAKE_AND_MODEL",
+ cgiGetArray("PPD_MAKE_AND_MODEL", 0));
cgiCopyTemplateLang("choose-model.tmpl");
cgiEndHTML();
}
@@ -1508,7 +1570,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
#ifdef HAVE_GSSAPI
char default_auth_type[255];
/* DefaultAuthType value */
- const char *val; /* Setting value */
+ const char *val; /* Setting value */
#endif /* HAVE_GSSAPI */
@@ -1580,7 +1642,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
strcat(local_protocols, "slp");
}
#endif /* HAVE_SLP */
-
+
if (cgiGetVariable("BROWSE_REMOTE_CUPS"))
strcpy(remote_protocols, "cups");
else
@@ -1833,7 +1895,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
cgiSetVariable("ERROR", strerror(errno));
cgiCopyTemplateLang("error.tmpl");
cgiEndHTML();
-
+
perror(tempfile);
return;
}
@@ -1845,7 +1907,7 @@ do_config_server(http_t *http) /* I - HTTP connection */
cgiSetVariable("ERROR", strerror(errno));
cgiCopyTemplateLang("error.tmpl");
cgiEndHTML();
-
+
perror(tempfile);
close(tempfd);
unlink(tempfile);
@@ -2621,7 +2683,9 @@ do_menu(http_t *http) /* I - HTTP connection */
if ((val = cupsGetOption("DefaultAuthType", num_settings,
settings)) != NULL && !strcasecmp(val, "Negotiate"))
cgiSetVariable("KERBEROS", "CHECKED");
+ else
#endif /* HAVE_GSSAPI */
+ cgiSetVariable("KERBEROS", "");
#ifdef HAVE_DNSSD
cgiSetVariable("HAVE_DNSSD", "1");
@@ -3233,11 +3297,16 @@ do_set_options(http_t *http, /* I - HTTP connection */
for (option = ppdFirstOption(ppd);
option;
option = ppdNextOption(ppd))
+ {
if ((var = cgiGetVariable(option->keyword)) != NULL)
{
have_options = 1;
ppdMarkOption(ppd, option->keyword, var);
+ fprintf(stderr, "DEBUG: Set %s to %s...\n", option->keyword, var);
}
+ else
+ fprintf(stderr, "DEBUG: Didn't find %s...\n", option->keyword);
+ }
}
if (!have_options || ppdConflicts(ppd))
@@ -3258,7 +3327,7 @@ do_set_options(http_t *http, /* I - HTTP connection */
((ppdattr = ppdFindAttr(ppd, "cupsCommands", NULL)) != NULL &&
ppdattr->value && strstr(ppdattr->value, "AutoConfigure")))
cgiSetVariable("HAVE_AUTOCONFIGURE", "YES");
- else
+ else
{
for (i = 0; i < ppd->num_filters; i ++)
if (!strncmp(ppd->filters[i], "application/vnd.cups-postscript", 31))
@@ -3344,6 +3413,16 @@ do_set_options(http_t *http, /* I - HTTP connection */
{
cgiSetArray("ckeyword", k, option->keyword);
cgiSetArray("ckeytext", k, option->text);
+
+ for (m = 0; m < option->num_choices; m ++)
+ {
+ if (option->choices[m].marked)
+ {
+ cgiSetArray("cchoice", k, option->choices[m].text);
+ break;
+ }
+ }
+
k ++;
}
@@ -3362,7 +3441,7 @@ do_set_options(http_t *http, /* I - HTTP connection */
cgiSetVariable("GROUP", group->text);
cgiCopyTemplateLang("option-header.tmpl");
-
+
for (j = group->num_options, option = group->options;
j > 0;
j --, option ++)
@@ -4006,7 +4085,7 @@ get_option_value(
snprintf(buffer, bufsize, "Custom.%gx%g%s", width, length, uval);
}
- else if (cupsArrayCount(coption->params) == 1)
+ else if (cupsArrayCount(coption->params) == 1)
{
cparam = ppdFirstCustomParam(coption);
snprintf(keyword, sizeof(keyword), "%s.%s", coption->keyword, cparam->name);
diff --git a/cgi-bin/cgi.h b/cgi-bin/cgi.h
index 5546d7ac5..52368ee35 100644
--- a/cgi-bin/cgi.h
+++ b/cgi-bin/cgi.h
@@ -34,6 +34,14 @@
/*
+ * C++ magic...
+ */
+
+# ifdef __cplusplus
+extern "C" {
+# endif /* __cplusplus */
+
+/*
* Types...
*/
@@ -54,6 +62,7 @@ typedef struct cgi_file_s /**** Uploaded file data ****/
extern void cgiAbort(const char *title, const char *stylesheet,
const char *format, ...);
extern int cgiCheckVariables(const char *names);
+extern void cgiClearVariables(void);
extern void *cgiCompileSearch(const char *query);
extern void cgiCopyTemplateFile(FILE *out, const char *tmpl);
extern void cgiCopyTemplateLang(const char *tmpl);
@@ -98,6 +107,10 @@ extern void cgiStartMultipart(void);
extern int cgiSupportsMultipart(void);
extern const char *cgiText(const char *message);
+# ifdef __cplusplus
+}
+# endif /* __cplusplus */
+
#endif /* !_CUPS_CGI_H_ */
/*
diff --git a/cgi-bin/classes.c b/cgi-bin/classes.c
index b7ea287a5..7fa7eb80e 100644
--- a/cgi-bin/classes.c
+++ b/cgi-bin/classes.c
@@ -72,6 +72,7 @@ main(int argc, /* I - Number of command-line arguments */
*/
cgiSetVariable("SECTION", "classes");
+ cgiSetVariable("REFRESH_PAGE", "");
/*
* See if we are displaying a printer or all classes...
diff --git a/cgi-bin/help-index.h b/cgi-bin/help-index.h
index 0e6b0b1c7..d64cec02a 100644
--- a/cgi-bin/help-index.h
+++ b/cgi-bin/help-index.h
@@ -24,6 +24,14 @@
/*
+ * C++ magic...
+ */
+
+# ifdef __cplusplus
+extern "C" {
+# endif /* __cplusplus */
+
+/*
* Data structures...
*/
@@ -68,6 +76,10 @@ extern help_index_t *helpSearchIndex(help_index_t *hi, const char *query,
const char *filename);
+# ifdef __cplusplus
+}
+# endif /* __cplusplus */
+
#endif /* !_CUPS_HELP_INDEX_H_ */
/*
diff --git a/cgi-bin/help.c b/cgi-bin/help.c
index 48ca55895..7c0b6b628 100644
--- a/cgi-bin/help.c
+++ b/cgi-bin/help.c
@@ -3,7 +3,7 @@
*
* Online help CGI for the Common UNIX Printing System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -63,6 +63,7 @@ main(int argc, /* I - Number of command-line arguments */
*/
cgiSetVariable("SECTION", "help");
+ cgiSetVariable("REFRESH_PAGE", "");
/*
* Load the help index...
@@ -102,7 +103,7 @@ main(int argc, /* I - Number of command-line arguments */
*/
for (i = 0; i < argc; i ++)
- fprintf(stderr, "argv[%d]=\"%s\"\n", i, argv[i]);
+ fprintf(stderr, "DEBUG: argv[%d]=\"%s\"\n", i, argv[i]);
if ((helpfile = getenv("PATH_INFO")) != NULL)
{
@@ -182,6 +183,12 @@ main(int argc, /* I - Number of command-line arguments */
topic = cgiGetVariable("TOPIC");
si = helpSearchIndex(hi, query, topic, helpfile);
+ cgiClearVariables();
+ if (query)
+ cgiSetVariable("QUERY", query);
+ if (topic)
+ cgiSetVariable("TOPIC", topic);
+
fprintf(stderr, "DEBUG: query=\"%s\", topic=\"%s\"\n",
query ? query : "(null)", topic ? topic : "(null)");
diff --git a/cgi-bin/ipp-var.c b/cgi-bin/ipp-var.c
index 1e9f3364f..4c1eb3b95 100644
--- a/cgi-bin/ipp-var.c
+++ b/cgi-bin/ipp-var.c
@@ -333,7 +333,7 @@ cgiMoveJobs(http_t *http, /* I - Connection to server */
NULL, job_uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes", NULL, "job-printer-uri");
-
+
if ((response = cupsDoRequest(http, request, "/")) != NULL)
{
if ((attr = ippFindAttribute(response, "job-printer-uri",
@@ -926,7 +926,7 @@ cgiRewriteURL(const char *uri, /* I - Current URI */
ishttps ? "https" : "http",
userpass, hostname, port, resource);
else
- snprintf(url, urlsize, "%s://%s:%d%s",
+ snprintf(url, urlsize, "%s://%s:%d%s",
ishttps ? "https" : "http",
hostname, port, resource);
}
@@ -1398,7 +1398,9 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
int ascending, /* Order of jobs (0 = descending) */
first, /* First job to show */
count; /* Number of jobs */
- const char *var; /* Form variable */
+ const char *var, /* Form variable */
+ *query, /* Query string */
+ *section; /* Section in web interface */
void *search; /* Search data */
char url[1024], /* Printer URI */
val[1024]; /* Form variable */
@@ -1442,11 +1444,14 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
* Get a list of matching job objects.
*/
- if ((var = cgiGetVariable("QUERY")) != NULL &&
+ if ((query = cgiGetVariable("QUERY")) != NULL &&
!cgiGetVariable("CLEAR"))
- search = cgiCompileSearch(var);
+ search = cgiCompileSearch(query);
else
+ {
+ query = NULL;
search = NULL;
+ }
jobs = cgiGetIPPObjects(response, search);
count = cupsArrayCount(jobs);
@@ -1471,16 +1476,27 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
if (first < 0)
first = 0;
- sprintf(val, "%d", count);
- cgiSetVariable("TOTAL", val);
-
if ((var = cgiGetVariable("ORDER")) != NULL)
ascending = !strcasecmp(var, "asc");
else
- {
ascending = !which_jobs || !strcasecmp(which_jobs, "not-completed");
- cgiSetVariable("ORDER", ascending ? "asc" : "dec");
- }
+
+ section = cgiGetVariable("SECTION");
+
+ cgiClearVariables();
+
+ if (query)
+ cgiSetVariable("QUERY", query);
+
+ cgiSetVariable("ORDER", ascending ? "asc" : "dec");
+
+ cgiSetVariable("SECTION", section);
+
+ sprintf(val, "%d", count);
+ cgiSetVariable("TOTAL", val);
+
+ if (which_jobs)
+ cgiSetVariable("WHICH_JOBS", which_jobs);
if (ascending)
{
@@ -1502,7 +1518,11 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
*/
if (dest)
- snprintf(val, sizeof(val), "/%s/%s", cgiGetVariable("SECTION"), dest);
+ {
+ snprintf(val, sizeof(val), "/%s/%s", section, dest);
+ cgiSetVariable("PRINTER_NAME", dest);
+ cgiSetVariable("PRINTER_URI_SUPPORTED", val);
+ }
else
strlcpy(val, "/jobs/", sizeof(val));
diff --git a/cgi-bin/jobs.c b/cgi-bin/jobs.c
index 9af1dd744..cf1f6e680 100644
--- a/cgi-bin/jobs.c
+++ b/cgi-bin/jobs.c
@@ -57,6 +57,7 @@ main(int argc, /* I - Number of command-line arguments */
*/
cgiSetVariable("SECTION", "jobs");
+ cgiSetVariable("REFRESH_PAGE", "");
/*
* Connect to the HTTP server...
diff --git a/cgi-bin/libcupscgi.exp b/cgi-bin/libcupscgi.exp
index 73e309e96..1997cdb10 100644
--- a/cgi-bin/libcupscgi.exp
+++ b/cgi-bin/libcupscgi.exp
@@ -1,4 +1,5 @@
_cgiCheckVariables
+_cgiClearVariables
_cgiCompileSearch
_cgiCopyTemplateFile
_cgiCopyTemplateLang
diff --git a/cgi-bin/printers.c b/cgi-bin/printers.c
index e2fa42b8f..f57a4251e 100644
--- a/cgi-bin/printers.c
+++ b/cgi-bin/printers.c
@@ -73,6 +73,7 @@ main(int argc, /* I - Number of command-line arguments */
*/
cgiSetVariable("SECTION", "printers");
+ cgiSetVariable("REFRESH_PAGE", "");
/*
* See if we are displaying a printer or all printers...
diff --git a/cgi-bin/template.c b/cgi-bin/template.c
index f20a7a950..6e9cc5ec6 100644
--- a/cgi-bin/template.c
+++ b/cgi-bin/template.c
@@ -119,7 +119,7 @@ cgiCopyTemplateLang(const char *tmpl) /* I - Base filename */
*locptr = '\0'; /* Strip charset */
}
- fprintf(stderr, "DEBUG: lang=\"%s\", locale=\"%s\"...\n",
+ fprintf(stderr, "DEBUG2: lang=\"%s\", locale=\"%s\"...\n",
lang ? lang : "(null)", locale);
/*
@@ -675,6 +675,8 @@ cgi_puts(const char *s, /* I - String to output */
fputs("&gt;", out);
else if (*s == '\"')
fputs("&quot;", out);
+ else if (*s == '\'')
+ fputs("&#39;", out);
else if (*s == '&')
fputs("&amp;", out);
else
@@ -695,7 +697,7 @@ cgi_puturi(const char *s, /* I - String to output */
{
while (*s)
{
- if (strchr("%&+ <>#=", *s) || *s & 128)
+ if (strchr("%@&+ <>#=", *s) || *s < ' ' || *s & 128)
fprintf(out, "%%%02X", *s & 255);
else
putc(*s, out);
diff --git a/cgi-bin/var.c b/cgi-bin/var.c
index 628ce8add..1467bd878 100644
--- a/cgi-bin/var.c
+++ b/cgi-bin/var.c
@@ -15,6 +15,7 @@
* Contents:
*
* cgiCheckVariables() - Check for the presence of "required" variables.
+ * cgiClearVariables() - Clear all form variables.
* cgiGetArray() - Get an element from a form array...
* cgiGetFile() - Get the file (if any) that was submitted in the form.
* cgiGetSize() - Get the size of a form array value.
@@ -135,6 +136,31 @@ cgiCheckVariables(const char *names) /* I - Variables to look for */
/*
+ * 'cgiClearVariables()' - Clear all form variables.
+ */
+
+void
+cgiClearVariables(void)
+{
+ int i, j; /* Looping vars */
+ _cgi_var_t *v; /* Current variable */
+
+
+ for (v = form_vars, i = form_count; i > 0; v ++, i --)
+ {
+ _cupsStrFree(v->name);
+ for (j = 0; j < v->nvalues; j ++)
+ if (v->values[j])
+ _cupsStrFree(v->values[j]);
+ }
+
+ form_count = 0;
+
+ cgi_unlink_file();
+}
+
+
+/*
* 'cgiGetArray()' - Get an element from a form array...
*/
@@ -151,7 +177,7 @@ cgiGetArray(const char *name, /* I - Name of array variable */
if (element < 0 || element >= var->nvalues)
return (NULL);
- return (var->values[element]);
+ return (_cupsStrRetain(var->values[element]));
}
@@ -206,7 +232,7 @@ cgiGetVariable(const char *name) /* I - Name of variable */
var->values[var->nvalues - 1]));
#endif /* DEBUG */
- return ((var == NULL) ? NULL : var->values[var->nvalues - 1]);
+ return ((var == NULL) ? NULL : _cupsStrRetain(var->values[var->nvalues - 1]));
}
@@ -337,9 +363,9 @@ cgiSetArray(const char *name, /* I - Name of variable */
var->nvalues = element + 1;
}
else if (var->values[element])
- free((char *)var->values[element]);
+ _cupsStrFree((char *)var->values[element]);
- var->values[element] = strdup(value);
+ var->values[element] = _cupsStrAlloc(value);
}
}
@@ -384,7 +410,7 @@ cgiSetSize(const char *name, /* I - Name of variable */
{
for (i = size; i < var->nvalues; i ++)
if (var->values[i])
- free((void *)(var->values[i]));
+ _cupsStrFree((void *)(var->values[i]));
}
var->nvalues = size;
@@ -417,9 +443,9 @@ cgiSetVariable(const char *name, /* I - Name of variable */
{
for (i = 0; i < var->nvalues; i ++)
if (var->values[i])
- free((char *)var->values[i]);
+ _cupsStrFree((char *)var->values[i]);
- var->values[0] = strdup(value);
+ var->values[0] = _cupsStrAlloc(value);
var->nvalues = 1;
}
}
@@ -465,10 +491,10 @@ cgi_add_variable(const char *name, /* I - Variable name */
if ((var->values = calloc(element + 1, sizeof(char *))) == NULL)
return;
- var->name = strdup(name);
+ var->name = _cupsStrAlloc(name);
var->nvalues = element + 1;
var->avalues = element + 1;
- var->values[element] = strdup(value);
+ var->values[element] = _cupsStrAlloc(value);
form_count ++;
}
diff --git a/conf/mime.convs.in b/conf/mime.convs.in
index 8cbba9d62..a141b5c09 100644
--- a/conf/mime.convs.in
+++ b/conf/mime.convs.in
@@ -46,6 +46,7 @@ application/x-csource application/postscript 33 texttops
application/x-perl application/postscript 33 texttops
application/x-shell application/postscript 33 texttops
text/plain application/postscript 33 texttops
+text/css application/postscript 33 texttops
text/html application/postscript 33 texttops
image/gif application/vnd.cups-postscript 66 imagetops
image/png application/vnd.cups-postscript 66 imagetops
diff --git a/cups/backend.h b/cups/backend.h
index fc2cd97ee..569baa59b 100644
--- a/cups/backend.h
+++ b/cups/backend.h
@@ -27,6 +27,14 @@
/*
+ * C++ magic...
+ */
+
+# ifdef __cplusplus
+extern "C" {
+# endif /* __cplusplus */
+
+/*
* Constants...
*/
@@ -57,6 +65,10 @@ extern void cupsBackendReport(const char *device_scheme,
_CUPS_API_1_4;
+# ifdef __cplusplus
+}
+# endif /* __cplusplus */
+
#endif /* !_CUPS_BACKEND_H_ */
/*
diff --git a/cups/conflicts.c b/cups/conflicts.c
index dcff52e5e..3b3f556c5 100644
--- a/cups/conflicts.c
+++ b/cups/conflicts.c
@@ -583,9 +583,13 @@ ppdConflicts(ppd_file_t *ppd) /* I - PPD to check */
* Clear all conflicts...
*/
+ cupsArraySave(ppd->options);
+
for (o = ppdFirstOption(ppd); o; o = ppdNextOption(ppd))
o->conflicted = 0;
+ cupsArrayRestore(ppd->options);
+
/*
* Test for conflicts...
*/
@@ -641,7 +645,7 @@ ppdInstallableConflict(
DEBUG_printf(("2ppdInstallableConflict(ppd=%p, option=\"%s\", choice=\"%s\")",
ppd, option, choice));
- /*
+ /*
* Range check input...
*/
diff --git a/cups/dest.c b/cups/dest.c
index 54a393421..099f451d8 100644
--- a/cups/dest.c
+++ b/cups/dest.c
@@ -33,7 +33,6 @@
* server.
* appleCopyLocations() - Copy the location history array.
* appleCopyNetwork() - Get the network ID for the current location.
- * appleGetDefault() - Get the default printer for this location.
* appleGetPaperSize() - Get the default paper size.
* appleGetPrinter() - Get a printer from the history array.
* appleSetDefault() - Set the default printer for this location.
@@ -549,7 +548,7 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT
if (!cups_get_sdests(http, op, name, 0, &dest))
{
- if (op == CUPS_GET_DEFAULT)
+ if (op == CUPS_GET_DEFAULT || name)
return (NULL);
/*
@@ -1288,6 +1287,9 @@ appleUseLastPrinter(void)
CFPropertyListRef uselast; /* Use last printer preference value */
+ if (getenv("CUPS_DISABLE_APPLE_DEFAULT"))
+ return (0);
+
if ((uselast = CFPreferencesCopyAppValue(kUseLastPrinterAsCurrentPrinterKey,
kPMPrintingPreferences)) != NULL)
{
diff --git a/cups/http.c b/cups/http.c
index f2f37a731..abd241305 100644
--- a/cups/http.c
+++ b/cups/http.c
@@ -26,7 +26,6 @@
* httpClearCookie() - Clear the cookie value(s).
* httpClearFields() - Clear HTTP request fields.
* httpClose() - Close an HTTP connection...
- * httpConnect() - Connect to a HTTP server.
* httpConnectEncrypt() - Connect to a HTTP server using encryption.
* _httpCreate() - Create an unconnected HTTP connection.
* httpDelete() - Send a DELETE request to the server.
@@ -721,7 +720,7 @@ httpGetField(http_t *http, /* I - Connection to server */
{
if (!http || field <= HTTP_FIELD_UNKNOWN || field >= HTTP_FIELD_MAX)
return (NULL);
- else if (field == HTTP_FIELD_AUTHORIZATION &&
+ else if (field == HTTP_FIELD_AUTHORIZATION &&
http->field_authorization)
{
/*
@@ -1137,7 +1136,7 @@ httpGets(char *line, /* I - Line to read into */
http->activity = time(NULL);
*lineptr = '\0';
-
+
DEBUG_printf(("3httpGets: Returning \"%s\"", line));
return (line);
@@ -2283,7 +2282,7 @@ httpWait(http_t *http, /* I - Connection to server */
*
* @deprecated@
*/
-
+
int /* O - Number of bytes written */
httpWrite(http_t *http, /* I - Connection to server */
const char *buffer, /* I - Buffer for data */
@@ -2298,7 +2297,7 @@ httpWrite(http_t *http, /* I - Connection to server */
*
* @since CUPS 1.2/Mac OS X 10.5@
*/
-
+
ssize_t /* O - Number of bytes written */
httpWrite2(http_t *http, /* I - Connection to server */
const char *buffer, /* I - Buffer for data */
@@ -2456,7 +2455,7 @@ _httpWriteCDSA(
else
{
*dataLength = 0;
-
+
if (errno == EAGAIN)
result = errSSLWouldBlock;
else
@@ -2517,7 +2516,7 @@ http_bio_ctrl(BIO *h, /* I - BIO data */
}
else
return (0);
-
+
case BIO_CTRL_DUP :
case BIO_CTRL_FLUSH :
return (1);
@@ -2719,7 +2718,36 @@ http_read_ssl(http_t *http, /* I - Connection to server */
return (SSL_read((SSL *)(http->tls), buf, len));
# elif defined(HAVE_GNUTLS)
- return (gnutls_record_recv(((http_tls_t *)(http->tls))->session, buf, len));
+ ssize_t result; /* Return value */
+
+
+ result = gnutls_record_recv(((http_tls_t *)(http->tls))->session, buf, len);
+
+ if (result < 0 && !errno)
+ {
+ /*
+ * Convert GNU TLS error to errno value...
+ */
+
+ switch (result)
+ {
+ case GNUTLS_E_INTERRUPTED :
+ errno = EINTR;
+ break;
+
+ case GNUTLS_E_AGAIN :
+ errno = EAGAIN;
+ break;
+
+ default :
+ errno = EPIPE;
+ break;
+ }
+
+ result = -1;
+ }
+
+ return ((int)result);
# elif defined(HAVE_CDSASSL)
int result; /* Return value */
@@ -2857,7 +2885,7 @@ http_send(http_t *http, /* I - Connection to server */
DEBUG_printf(("9http_send: %s: %s", http_fields[i],
httpGetField(http, i)));
- if (httpPrintf(http, "%s: %s\r\n", http_fields[i],
+ if (httpPrintf(http, "%s: %s\r\n", http_fields[i],
httpGetField(http, i)) < 1)
{
http->status = HTTP_ERROR;
@@ -2896,15 +2924,15 @@ http_send(http_t *http, /* I - Connection to server */
* The Kerberos and AuthRef authentication strings can only be used once...
*/
- if (http->field_authorization && http->authstring &&
- (!strncmp(http->authstring, "Negotiate", 9) ||
+ if (http->field_authorization && http->authstring &&
+ (!strncmp(http->authstring, "Negotiate", 9) ||
!strncmp(http->authstring, "AuthRef", 7)))
{
http->_authstring[0] = '\0';
if (http->authstring != http->_authstring)
free(http->authstring);
-
+
http->authstring = http->_authstring;
}
@@ -3220,7 +3248,7 @@ http_upgrade(http_t *http) /* I - Connection to server */
/*
* 'http_write()' - Write a buffer to a HTTP connection.
*/
-
+
static int /* O - Number of bytes written */
http_write(http_t *http, /* I - Connection to server */
const char *buffer, /* I - Buffer for data */
@@ -3335,7 +3363,36 @@ http_write_ssl(http_t *http, /* I - Connection to server */
return (SSL_write((SSL *)(http->tls), buf, len));
# elif defined(HAVE_GNUTLS)
- return (gnutls_record_send(((http_tls_t *)(http->tls))->session, buf, len));
+ ssize_t result; /* Return value */
+
+ result = gnutls_record_send(((http_tls_t *)(http->tls))->session, buf, len);
+
+ if (result < 0 && !errno)
+ {
+ /*
+ * Convert GNU TLS error to errno value...
+ */
+
+ switch (result)
+ {
+ case GNUTLS_E_INTERRUPTED :
+ errno = EINTR;
+ break;
+
+ case GNUTLS_E_AGAIN :
+ errno = EAGAIN;
+ break;
+
+ default :
+ errno = EPIPE;
+ break;
+ }
+
+ result = -1;
+ }
+
+ return ((int)result);
+
# elif defined(HAVE_CDSASSL)
int result; /* Return value */
OSStatus error; /* Error info */
@@ -3358,11 +3415,11 @@ http_write_ssl(http_t *http, /* I - Connection to server */
else
{
result = -1;
- errno = EINTR;
+ errno = EINTR;
}
break;
default :
- errno = EPIPE;
+ errno = EPIPE;
result = -1;
break;
}
diff --git a/cups/mark.c b/cups/mark.c
index b14e1da5e..573e8fc7c 100644
--- a/cups/mark.c
+++ b/cups/mark.c
@@ -842,6 +842,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */
if (!strcasecmp(option, "AP_D_InputSlot"))
{
+ cupsArraySave(ppd->options);
+
if ((o = ppdFindOption(ppd, "InputSlot")) != NULL)
{
key.option = o;
@@ -851,13 +853,21 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */
cupsArrayRemove(ppd->marked, oldc);
}
}
+
+ cupsArrayRestore(ppd->options);
}
/*
* Check for custom options...
*/
- if ((o = ppdFindOption(ppd, option)) == NULL)
+ cupsArraySave(ppd->options);
+
+ o = ppdFindOption(ppd, option);
+
+ cupsArrayRestore(ppd->options);
+
+ if (!o)
return;
loc = localeconv();
@@ -912,15 +922,15 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */
if (units)
{
if (!strcasecmp(units, "cm"))
- cparam->current.custom_points *= 72.0f / 2.54f;
+ cparam->current.custom_points *= 72.0f / 2.54f;
else if (!strcasecmp(units, "mm"))
- cparam->current.custom_points *= 72.0f / 25.4f;
+ cparam->current.custom_points *= 72.0f / 25.4f;
else if (!strcasecmp(units, "m"))
- cparam->current.custom_points *= 72.0f / 0.0254f;
+ cparam->current.custom_points *= 72.0f / 0.0254f;
else if (!strcasecmp(units, "in"))
- cparam->current.custom_points *= 72.0f;
+ cparam->current.custom_points *= 72.0f;
else if (!strcasecmp(units, "ft"))
- cparam->current.custom_points *= 12.0f * 72.0f;
+ cparam->current.custom_points *= 12.0f * 72.0f;
}
break;
@@ -1060,6 +1070,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */
* appropriate...
*/
+ cupsArraySave(ppd->options);
+
if (!strcasecmp(option, "PageSize"))
{
if ((o = ppdFindOption(ppd, "PageRegion")) != NULL)
@@ -1084,6 +1096,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */
}
}
}
+
+ cupsArrayRestore(ppd->options);
}
else if (!strcasecmp(option, "InputSlot"))
{
@@ -1091,6 +1105,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */
* Unmark ManualFeed option...
*/
+ cupsArraySave(ppd->options);
+
if ((o = ppdFindOption(ppd, "ManualFeed")) != NULL)
{
key.option = o;
@@ -1100,6 +1116,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */
cupsArrayRemove(ppd->marked, oldc);
}
}
+
+ cupsArrayRestore(ppd->options);
}
else if (!strcasecmp(option, "ManualFeed") &&
!strcasecmp(choice, "True"))
@@ -1108,6 +1126,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */
* Unmark InputSlot option...
*/
+ cupsArraySave(ppd->options);
+
if ((o = ppdFindOption(ppd, "InputSlot")) != NULL)
{
key.option = o;
@@ -1117,6 +1137,8 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */
cupsArrayRemove(ppd->marked, oldc);
}
}
+
+ cupsArrayRestore(ppd->options);
}
}
@@ -1197,7 +1219,7 @@ ppd_mark_size(ppd_file_t *ppd, /* I - PPD file */
return;
}
else
- return;
+ return;
/*
* Search the PPD file for a matching size...
diff --git a/cups/ppd.c b/cups/ppd.c
index 2da53d5c0..6fe2dc776 100644
--- a/cups/ppd.c
+++ b/cups/ppd.c
@@ -352,11 +352,13 @@ ppdErrorString(ppd_status_t status) /* I - PPD status */
_("Illegal option keyword string"),
_("Illegal translation string"),
_("Illegal whitespace character"),
- _("Bad custom parameter")
+ _("Bad custom parameter"),
+ _("Missing option keyword"),
+ _("Bad value string")
};
- if (status < PPD_OK || status > PPD_ILLEGAL_WHITESPACE)
+ if (status < PPD_OK || status >= PPD_MAX_STATUS)
return (_cupsLangString(cupsLangDefault(), _("Unknown")));
else
return (_cupsLangString(cupsLangDefault(), messages[status]));
@@ -1177,6 +1179,37 @@ ppdOpen2(cups_file_t *fp) /* I - File to read from */
}
else if (!strcmp(keyword, "JobPatchFile"))
{
+ /*
+ * CUPS STR #3421: Check for "*JobPatchFile: int: string"
+ */
+
+ if (isdigit(*string & 255))
+ {
+ for (sptr = string + 1; isdigit(*sptr & 255); sptr ++);
+
+ if (*sptr == ':')
+ {
+ /*
+ * Found "*JobPatchFile: int: string"...
+ */
+
+ cg->ppd_status = PPD_BAD_VALUE;
+
+ goto error;
+ }
+ }
+
+ if (!name[0])
+ {
+ /*
+ * Found "*JobPatchFile: string"...
+ */
+
+ cg->ppd_status = PPD_MISSING_OPTION_KEYWORD;
+
+ goto error;
+ }
+
if (ppd->patches == NULL)
ppd->patches = strdup(string);
else
diff --git a/cups/ppd.h b/cups/ppd.h
index e1fc70dec..d0b8ec8f2 100644
--- a/cups/ppd.h
+++ b/cups/ppd.h
@@ -115,7 +115,10 @@ typedef enum ppd_status_e /**** Status Codes @since CUPS 1.1.19/Mac OS X 10.3@
PPD_ILLEGAL_OPTION_KEYWORD, /* Illegal option keyword string */
PPD_ILLEGAL_TRANSLATION, /* Illegal translation string */
PPD_ILLEGAL_WHITESPACE, /* Illegal whitespace character */
- PPD_BAD_CUSTOM_PARAM /* Bad custom parameter */
+ PPD_BAD_CUSTOM_PARAM, /* Bad custom parameter */
+ PPD_MISSING_OPTION_KEYWORD, /* Missing option keyword */
+ PPD_BAD_VALUE, /* Bad value string */
+ PPD_MAX_STATUS /* @private@ */
} ppd_status_t;
enum ppd_conform_e /**** Conformance Levels @since CUPS 1.1.19/Mac OS X 10.3@ ****/
diff --git a/cups/sidechannel.c b/cups/sidechannel.c
index da3d2b847..0ed4a744a 100644
--- a/cups/sidechannel.c
+++ b/cups/sidechannel.c
@@ -116,6 +116,7 @@ cupsSideChannelRead(
char buffer[16388]; /* Message buffer */
int bytes; /* Bytes read */
int templen; /* Data length from message */
+ int nfds; /* Number of file descriptors */
#ifdef HAVE_POLL
struct pollfd pfd; /* Poll structure for poll() */
#else /* select() */
@@ -143,39 +144,31 @@ cupsSideChannelRead(
pfd.fd = CUPS_SC_FD;
pfd.events = POLLIN;
- if (timeout < 0.0)
- {
- if (poll(&pfd, 1, -1) < 1)
- return (-1);
- }
- else if (poll(&pfd, 1, (long)(timeout * 1000)) < 1)
- return (-1);
+ while ((nfds = poll(&pfd, 1,
+ timeout < 0.0 ? -1 : (long)(timeout * 1000))) < 0 &&
+ (errno == EINTR || errno == EAGAIN))
+ ;
#else /* select() */
FD_ZERO(&input_set);
FD_SET(CUPS_SC_FD, &input_set);
- if (timeout < 0.0)
- {
- if (select(CUPS_SC_FD + 1, &input_set, NULL, NULL, NULL) < 1)
- {
- DEBUG_printf(("1cupsSideChannelRead: Select error: %s", strerror(errno)));
- return (-1);
- }
- }
- else
- {
- stimeout.tv_sec = (int)timeout;
- stimeout.tv_usec = (int)(timeout * 1000000) % 1000000;
+ stimeout.tv_sec = (int)timeout;
+ stimeout.tv_usec = (int)(timeout * 1000000) % 1000000;
+
+ while ((nfds = select(CUPS_SC_FD + 1, &input_set, NULL, NULL,
+ timeout < 0.0 ? NULL : &stimeout)) < 0 &&
+ (errno == EINTR || errno == EAGAIN))
+ ;
- if (select(CUPS_SC_FD + 1, &input_set, NULL, NULL, &stimeout) < 1)
- {
- DEBUG_puts("1cupsSideChannelRead: Select timeout");
- return (-1);
- }
- }
#endif /* HAVE_POLL */
+ if (nfds < 1)
+ {
+ *status = nfds==0 ? CUPS_SC_STATUS_TIMEOUT : CUPS_SC_STATUS_IO_ERROR;
+ return (-1);
+ }
+
/*
* Read a side-channel message for the format:
*
diff --git a/cups/tempfile.c b/cups/tempfile.c
index 664b915f8..6a781bb71 100644
--- a/cups/tempfile.c
+++ b/cups/tempfile.c
@@ -118,8 +118,8 @@ cupsTempFd(char *filename, /* I - Pointer to buffer */
* Format a string using the hex time values...
*/
- snprintf(filename, len - 1, "%s/%08lx%05lx", tmpdir,
- (unsigned long)curtime.tv_sec, (unsigned long)curtime.tv_usec);
+ snprintf(filename, len - 1, "%s/%05x%08lx", tmpdir, (unsigned)getpid(),
+ (unsigned long)(curtime.tv_sec + curtime.tv_usec + tries));
#endif /* WIN32 */
/*
diff --git a/cups/test.ppd b/cups/test.ppd
index 0dab6506a..27a0dd009 100644
--- a/cups/test.ppd
+++ b/cups/test.ppd
@@ -39,7 +39,7 @@
*Throughput: "1"
*LandscapeOrientation: Plus90
*TTRasterizer: Type42
-*cupsFilter: "application/vnd.cups-raster - 0"
+*cupsFilter: "application/vnd.cups-raster 0 -"
*RequiresPageRegion All: True
*% These constraints are used to test ppdConflicts() and cupsResolveConflicts()
diff --git a/cups/util.c b/cups/util.c
index cbe49136f..87ba2c0ce 100644
--- a/cups/util.c
+++ b/cups/util.c
@@ -1511,12 +1511,36 @@ cupsPrintFiles2(
return (0);
}
- status = cupsStartDocument(http, name, job_id, docname, format,
- i == (num_files - 1));
+ do
+ {
+ cupsFileRewind(fp);
+
+ status = cupsStartDocument(http, name, job_id, docname, format,
+ i == (num_files - 1));
- while (status == HTTP_CONTINUE &&
- (bytes = cupsFileRead(fp, buffer, sizeof(buffer))) > 0)
- status = cupsWriteRequestData(http, buffer, bytes);
+ while (status == HTTP_CONTINUE &&
+ (bytes = cupsFileRead(fp, buffer, sizeof(buffer))) > 0)
+ status = cupsWriteRequestData(http, buffer, bytes);
+
+ if (status == HTTP_UNAUTHORIZED)
+ {
+ char resource[1024]; /* Printer resource */
+
+ snprintf(resource, sizeof(resource), "/printers/%s", name);
+
+ if (!cupsDoAuthentication(http, "POST", resource))
+ {
+ if (httpReconnect(http))
+ {
+ _cupsSetError(IPP_SERVICE_UNAVAILABLE, NULL, 0);
+ return (0);
+ }
+ }
+ else
+ status = HTTP_AUTHORIZATION_CANCELED;
+ }
+ }
+ while (status == HTTP_UNAUTHORIZED);
cupsFileClose(fp);
diff --git a/doc/cups.css b/doc/cups.css
index 5b78171af..8ec40856f 100644
--- a/doc/cups.css
+++ b/doc/cups.css
@@ -27,7 +27,7 @@ P.example {
font-style: italic;
margin-left: 36pt;
}
-
+
PRE.example {
background: white;
border: dotted thin #999999;
@@ -238,6 +238,10 @@ H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
color: white;
}
+TH.conflict {
+ text-align: right;
+}
+
H1.title {
display: none;
}
diff --git a/doc/de/index.html.in b/doc/de/index.html.in
index becebc2a0..80a421f53 100644
--- a/doc/de/index.html.in
+++ b/doc/de/index.html.in
@@ -16,7 +16,7 @@ SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;Startseite&nbsp;&nbsp;</A></TD>
<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Verwaltung&nbsp;&nbsp;</A></TD>
<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Klassen&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;On-Line&nbsp;Hilfe&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Online&nbsp;Hilfe&nbsp;&nbsp;</A></TD>
<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Auftr&auml;ge&nbsp;&nbsp;</A></TD>
<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Drucker&nbsp;&nbsp;</A></TD>
<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
@@ -31,7 +31,7 @@ AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
<H1>Common UNIX Printing System @CUPS_VERSION@</H1>
-<P>CUPS ist das auf Standards basierte, Open-Source Drucker System, welches von
+<P>CUPS ist das auf Standards basierte, Open-Source Drucker System, welches von
<A HREF="http://www.apple.com/">Apple Inc.</A> f&uuml;r Mac OS<SUP>&reg;</SUP> X und
andere UNIX<SUP>&reg;</SUP>-&auml;hnliche Betriebssysteme entwickelt wird.</P>
diff --git a/doc/id/index.html.in b/doc/id/index.html.in
new file mode 100644
index 000000000..ac6af5eb8
--- /dev/null
+++ b/doc/id/index.html.in
@@ -0,0 +1,107 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+<HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+ <TITLE>Beranda - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
+ <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
+ <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
+</HEAD>
+<BODY>
+<TABLE CLASS="page" SUMMARY="{title}">
+<TR><TD CLASS="body">
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
+<TR HEIGHT="36">
+<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
+SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
+<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;Beranda&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Administrasi&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Kelas&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Bantuan&nbsp;Langsung&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Tugas&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Pencetak&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
+TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
+AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
+<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
+</TR>
+</TABLE>
+
+<TABLE CLASS="indent" SUMMARY="">
+<TR><TD STYLE="padding-right: 20px;">
+
+<H1>CUPS @CUPS_VERSION@</H1>
+
+<P>CUPS adalah sistem pencetakan berstandar dan berkode sumber terbuka, dikembangkan oleh
+<A HREF="http://www.apple.com/">Apple Inc.</A> untuk Mac OS<SUP>&reg;</SUP> X dan sistem
+operasi serupa UNIX<SUP>&reg;</SUP> lainnya.</P>
+
+</TD>
+<TD><A HREF="http://www.cups.org/"><IMG SRC="images/cups-icon.png" WIDTH="128"
+HEIGHT="128" ALT="CUPS"></A></TD>
+</TR>
+</TABLE>
+
+<TABLE CLASS="indent" SUMMARY="">
+<TR><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-right: 20px;">
+
+<H2>CUPS bagi Pengguna</H2>
+
+<P><A HREF="help/overview.html">Ikhtisar CUPS</A></P>
+
+<P><A HREF="help/options.html">Opsi dan Pencetakan dari Baris Perintah</A></P>
+
+<P><A HREF="help/whatsnew.html">Apa yang Baru di CUPS 1.4</A></P>
+
+<P><A HREF="http://www.cups.org/newsgroups.php?gcups.general">Forum Pengguna</A></P>
+
+</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
+
+<H2>CUPS bagi Administrator</H2>
+
+<P><A HREF="admin">Menambah Pencetak dan Kelas</A></P>
+
+<P><A HREF="help/policies.html">Mengatur Kebijakan Operasi</A></P>
+
+<P><A HREF="help/accounting.html">Dasar Akunting Pencetak</A></P>
+
+<P><A HREF="help/security.html">Keamanan Server</A></P>
+
+<P><A HREF="help/kerberos.html">Menggunakan Otentikasi Kerberos</A></P>
+
+<P><A HREF="help/network.html">Menggunakan Pencetak di Jaringan</A></P>
+
+<P><A HREF="help/ref-cupsd-conf.html">Referensi cupsd.conf</A></P>
+
+<P><A HREF="http://www.cups.org/ppd.php">Mencari Penggerak Pencetak</A></P>
+
+</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
+
+<H2>CUPS bagi Pengembang</H2>
+
+<P><A HREF="help/api-overview.html">Pengenalan untuk Pemrograman CUPS</A></P>
+
+<P><A HREF="help/api-cups.html">API di CUPS</A></P>
+
+<P><A HREF="help/api-filter.html">Penyaring dan Pemrograman Balik (<I>Backend Programming</I>)</A></P>
+
+<P><A HREF="help/api-httpipp.html">API di HTTP dan IPP</A></P>
+
+<P><A HREF="help/api-ppd.html">API di PPD</A></P>
+
+<P><A HREF="help/api-raster.html">API di Raster</A></P>
+
+<P><A HREF="help/ref-ppdcfile.html">Referensi Kompiler Berkas Penggerak PPD</A></P>
+
+<P><A HREF="http://www.cups.org/newsgroups.php?gcups.development">Forum Pengembang</A></P>
+
+</TD></TR>
+</TABLE>
+
+</TD></TR>
+<TR><TD>&nbsp;</TD></TR>
+<TR><TD CLASS="trailer">CUPS dan logo CUPS logo adalah merek dagang dari
+<A HREF="http://www.apple.com">Apple Inc.</A> Hak cipta CUPS pada 2007-2009 Apple
+Inc. Semua hak terpelihara.</TD></TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/locale/cups_id.po b/locale/cups_id.po
new file mode 100644
index 000000000..a8b8c76b8
--- /dev/null
+++ b/locale/cups_id.po
@@ -0,0 +1,7095 @@
+# translation of cups_id.po to Bahasa Indonesia
+#
+# "$Id$"
+#
+# Message catalog template for the Common UNIX Printing System (CUPS).
+#
+# Copyright 2007 by Apple Inc.
+# Copyright 2005-2007 by Easy Software Products.
+#
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law. Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file. If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
+#
+# Citra Paska <dirgitadevina@yahoo.co.id>, 2008, 2009.
+
+#
+# Notes for Translators:
+#
+# The following prefixes MUST NOT be translated: "ALERT:", "CRIT:", "INFO:",
+# "NOTICE:", and "WARNING:".
+#
+# The "checkpo" program located in the "locale" source directory can be used
+# to verify that your translations do not introduce formatting errors or other
+# problems. Run with:
+#
+# cd locale
+# ./checkpo cups_LL.po
+#
+# where "LL" is your locale.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: cups_id\n"
+"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
+"POT-Creation-Date: 2009-06-18 15:43-0700\n"
+"PO-Revision-Date: 2009-09-29 05:17+0700\n"
+"Last-Translator: Citra Paska <dirgitadevina@yahoo.co.id>\n"
+"Language-Team: Bahasa Indonesia\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: systemv/lpstat.c:1848 systemv/lpstat.c:1961
+msgid "\t\t(all)\n"
+msgstr "\t\t(semua)\n"
+
+#: systemv/lpstat.c:1851 systemv/lpstat.c:1854 systemv/lpstat.c:1964
+#: systemv/lpstat.c:1967
+msgid "\t\t(none)\n"
+msgstr "\t\t(nihil)\n"
+
+#: berkeley/lpc.c:438
+#, c-format
+msgid "\t%d entries\n"
+msgstr "\t%d entri\n"
+
+#: systemv/lpstat.c:1829 systemv/lpstat.c:1942
+msgid "\tAfter fault: continue\n"
+msgstr "\tUsai kesalahan: lanjut\n"
+
+#: systemv/lpstat.c:1461 systemv/lpstat.c:1795 systemv/lpstat.c:1908
+msgid "\tAlerts:"
+msgstr "\tPeringatan:"
+
+#: systemv/lpstat.c:1852 systemv/lpstat.c:1965
+msgid "\tBanner required\n"
+msgstr "\tBanner diperlukan\n"
+
+#: systemv/lpstat.c:1853 systemv/lpstat.c:1966
+msgid "\tCharset sets:\n"
+msgstr "\tSet karakter:\n"
+
+#: systemv/lpstat.c:1818 systemv/lpstat.c:1931
+msgid "\tConnection: direct\n"
+msgstr "\tKoneksi: langsung\n"
+
+#: systemv/lpstat.c:1809 systemv/lpstat.c:1922
+msgid "\tConnection: remote\n"
+msgstr "\tKoneksi: jarak jauh\n"
+
+#: systemv/lpstat.c:1856 systemv/lpstat.c:1969
+msgid "\tDefault page size:\n"
+msgstr "\tUkuran halaman utama:\n"
+
+#: systemv/lpstat.c:1855 systemv/lpstat.c:1968
+msgid "\tDefault pitch:\n"
+msgstr "\tTiti utama:\n"
+
+#: systemv/lpstat.c:1857 systemv/lpstat.c:1970
+msgid "\tDefault port settings:\n"
+msgstr "\tPengaturan port utama:\n"
+
+#: systemv/lpstat.c:1790 systemv/lpstat.c:1903
+#, c-format
+msgid "\tDescription: %s\n"
+msgstr "\tDeskripsi: %s\n"
+
+#: systemv/lpstat.c:1784 systemv/lpstat.c:1897
+msgid ""
+"\tForm mounted:\n"
+"\tContent types: any\n"
+"\tPrinter types: unknown\n"
+msgstr ""
+"\tFormulir yang diakuisisi:\n"
+"\tJenis isi: apa saja\n"
+"\tJenis pencetak: tak dikenal\n"
+
+#: systemv/lpstat.c:1850 systemv/lpstat.c:1963
+msgid "\tForms allowed:\n"
+msgstr "\tFormulir yang diperbolehkan:\n"
+
+#: systemv/lpstat.c:1813 systemv/lpstat.c:1926
+#, c-format
+msgid "\tInterface: %s.ppd\n"
+msgstr "\tAntarmuka: %s.ppd\n"
+
+#: systemv/lpstat.c:1822 systemv/lpstat.c:1935
+#, c-format
+msgid "\tInterface: %s/interfaces/%s\n"
+msgstr "\tAntarmuka: %s/interfaces/%s\n"
+
+#: systemv/lpstat.c:1826 systemv/lpstat.c:1939
+#, c-format
+msgid "\tInterface: %s/ppd/%s.ppd\n"
+msgstr "\tAntarmuka: %s/ppd/%s.ppd\n"
+
+#: systemv/lpstat.c:1804 systemv/lpstat.c:1917
+#, c-format
+msgid "\tLocation: %s\n"
+msgstr "\tLokasi: %s\n"
+
+#: systemv/lpstat.c:1828 systemv/lpstat.c:1941
+msgid "\tOn fault: no alert\n"
+msgstr "\tSaat gagal: tanpa peringatan\n"
+
+#: systemv/lpstat.c:1833 systemv/lpstat.c:1847 systemv/lpstat.c:1946
+#: systemv/lpstat.c:1960
+msgid "\tUsers allowed:\n"
+msgstr "\tPengguna yang diperbolehkan:\n"
+
+#: systemv/lpstat.c:1840 systemv/lpstat.c:1953
+msgid "\tUsers denied:\n"
+msgstr "\tPengguna yang dilarang:\n"
+
+#: berkeley/lpc.c:440
+msgid "\tdaemon present\n"
+msgstr "\tjurik hadir\n"
+
+#: berkeley/lpc.c:436
+msgid "\tno entries\n"
+msgstr "\ttidak ada entri\n"
+
+#: berkeley/lpc.c:408 berkeley/lpc.c:420
+#, c-format
+msgid "\tprinter is on device '%s' speed -1\n"
+msgstr "\tpencetak pada perangkat '%s' kecepatan -1\n"
+
+#: berkeley/lpc.c:433
+msgid "\tprinting is disabled\n"
+msgstr "\tproses cetak dinonaktifkan\n"
+
+#: berkeley/lpc.c:431
+msgid "\tprinting is enabled\n"
+msgstr "\tproses cetak diaktifkan\n"
+
+#: systemv/lpstat.c:1467
+#, c-format
+msgid "\tqueued for %s\n"
+msgstr "\tantrian untuk %s\n"
+
+#: berkeley/lpc.c:428
+msgid "\tqueuing is disabled\n"
+msgstr "\tantrian dinonaktifkan\n"
+
+#: berkeley/lpc.c:426
+msgid "\tqueuing is enabled\n"
+msgstr "\tantrian diaktifkan\n"
+
+#: systemv/lpstat.c:1777 systemv/lpstat.c:1890
+msgid "\treason unknown\n"
+msgstr "\talasan tak dikenal\n"
+
+#: systemv/cupstestppd.c:551
+msgid ""
+"\n"
+" DETAILED CONFORMANCE TEST RESULTS\n"
+msgstr ""
+"\n"
+" DETIL HASIL KECOCOKAN TES\n"
+
+#: systemv/cupstestppd.c:512 systemv/cupstestppd.c:516
+msgid " REF: Page 15, section 3.1.\n"
+msgstr " REF: Halaman 15, seksi 3.1.\n"
+
+#: systemv/cupstestppd.c:508
+msgid " REF: Page 15, section 3.2.\n"
+msgstr " REF: Halaman 15, seksi 3.2.\n"
+
+#: systemv/cupstestppd.c:524
+msgid " REF: Page 19, section 3.3.\n"
+msgstr " REF: Halaman 19, seksi 3.3.\n"
+
+#: systemv/cupstestppd.c:486
+msgid " REF: Page 20, section 3.4.\n"
+msgstr " REF: Halaman 20, seksi 3.4.\n"
+
+#: systemv/cupstestppd.c:528
+msgid " REF: Page 27, section 3.5.\n"
+msgstr " REF: Halaman 27, seksi 3.5.\n"
+
+#: systemv/cupstestppd.c:482
+msgid " REF: Page 42, section 5.2.\n"
+msgstr " REF: Halaman 42, seksi 5.2.\n"
+
+#: systemv/cupstestppd.c:520
+msgid " REF: Pages 16-17, section 3.2.\n"
+msgstr " REF: Halaman 16-17, seksi 3.2.\n"
+
+#: systemv/cupstestppd.c:496
+msgid " REF: Pages 42-45, section 5.2.\n"
+msgstr " REF: Halaman 42-45, seksi 5.2.\n"
+
+#: systemv/cupstestppd.c:491
+msgid " REF: Pages 45-46, section 5.2.\n"
+msgstr " REF: Halaman 45-46, seksi 5.2.\n"
+
+#: systemv/cupstestppd.c:500
+msgid " REF: Pages 48-49, section 5.2.\n"
+msgstr " REF: Halaman 48-49, seksi 5.2.\n"
+
+#: systemv/cupstestppd.c:504
+msgid " REF: Pages 52-54, section 5.2.\n"
+msgstr " REF: Halaman 52-54, seksi 5.2.\n"
+
+#: berkeley/lpq.c:546
+#, c-format
+msgid " %-39.39s %.0f bytes\n"
+msgstr " %-39.39s %.0f bita\n"
+
+#: systemv/cupstestppd.c:668
+#, c-format
+msgid " PASS Default%s\n"
+msgstr " PASS Default%s\n"
+
+#: systemv/cupstestppd.c:605
+msgid " PASS DefaultImageableArea\n"
+msgstr " PASS DefaultImageableArea\n"
+
+#: systemv/cupstestppd.c:639
+msgid " PASS DefaultPaperDimension\n"
+msgstr " PASS DefaultPaperDimension\n"
+
+#: systemv/cupstestppd.c:710
+msgid " PASS FileVersion\n"
+msgstr " PASS FileVersion\n"
+
+#: systemv/cupstestppd.c:754
+msgid " PASS FormatVersion\n"
+msgstr " PASS FormatVersion\n"
+
+#: systemv/cupstestppd.c:774
+msgid " PASS LanguageEncoding\n"
+msgstr " PASS LanguageEncoding\n"
+
+#: systemv/cupstestppd.c:794
+msgid " PASS LanguageVersion\n"
+msgstr " PASS LanguageVersion\n"
+
+#: systemv/cupstestppd.c:846
+msgid " PASS Manufacturer\n"
+msgstr " PASS Manufacturer\n"
+
+#: systemv/cupstestppd.c:886
+msgid " PASS ModelName\n"
+msgstr " PASS ModelName\n"
+
+#: systemv/cupstestppd.c:906
+msgid " PASS NickName\n"
+msgstr " PASS NickName\n"
+
+#: systemv/cupstestppd.c:966
+msgid " PASS PCFileName\n"
+msgstr " PASS PCFileName\n"
+
+#: systemv/cupstestppd.c:1041
+msgid " PASS PSVersion\n"
+msgstr " PASS PSVersion\n"
+
+#: systemv/cupstestppd.c:946
+msgid " PASS PageRegion\n"
+msgstr " PASS PageRegion\n"
+
+#: systemv/cupstestppd.c:926
+msgid " PASS PageSize\n"
+msgstr " PASS PageSize\n"
+
+#: systemv/cupstestppd.c:1001
+msgid " PASS Product\n"
+msgstr " PASS Product\n"
+
+#: systemv/cupstestppd.c:1076
+msgid " PASS ShortNickName\n"
+msgstr " PASS ShortNickName\n"
+
+#: systemv/cupstestppd.c:3416
+#, c-format
+msgid ""
+" WARN \"%s %s\" conflicts with \"%s %s\"\n"
+" (constraint=\"%s %s %s %s\")\n"
+msgstr ""
+" WARN \"%s %s\" konflik dengan \"%s %s\"\n"
+" (constraint=\"%s %s %s %s\")\n"
+
+#: systemv/cupstestppd.c:1449
+#, c-format
+msgid " WARN %s has no corresponding options!\n"
+msgstr " WARN %s tidak memiliki opsi yang berkorespondensi!\n"
+
+#: systemv/cupstestppd.c:1557
+#, c-format
+msgid ""
+" WARN %s shares a common prefix with %s\n"
+" REF: Page 15, section 3.2.\n"
+msgstr ""
+" WARN %s berbagi prefiks umum dengan %s\n"
+" REF: Halaman 15, seksi 3.2.\n"
+
+#: systemv/cupstestppd.c:1458
+msgid " WARN Default choices conflicting!\n"
+msgstr " WARN Pilihan utama mengalam konflik!\n"
+
+#: systemv/cupstestppd.c:1420
+#, c-format
+msgid ""
+" WARN Duplex option keyword %s may not work as expected and should "
+"be named Duplex!\n"
+" REF: Page 122, section 5.17\n"
+msgstr ""
+" WARN Opsi kata kunci Duplex %s mungkin tidak bekerja seperti yang diharapkan dan seharusnya dinamai Duplex!\n"
+" REF: Halaman 122, seksi 5.17\n"
+
+#: systemv/cupstestppd.c:1819
+msgid " WARN File contains a mix of CR, LF, and CR LF line endings!\n"
+msgstr " WARN Berkas memiliki campuran CR, LF, dan CR LF pada akhir baris!\n"
+
+#: systemv/cupstestppd.c:1474
+msgid ""
+" WARN LanguageEncoding required by PPD 4.3 spec.\n"
+" REF: Pages 56-57, section 5.3.\n"
+msgstr ""
+" WARN LanguageEncoding diperlukan oleh spesifikasi PPD 4.3.\n"
+" REF: Halaman 56-57, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:1801
+#, c-format
+msgid " WARN Line %d only contains whitespace!\n"
+msgstr " WARN Baris %d hanya mengandung spasi!\n"
+
+#: systemv/cupstestppd.c:1482
+msgid ""
+" WARN Manufacturer required by PPD 4.3 spec.\n"
+" REF: Pages 58-59, section 5.3.\n"
+msgstr ""
+" WARN Manufacturer diperlukan oleh spesifikasi PPD 4.3.\n"
+" REF: Halaman 58-59, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:1824
+msgid ""
+" WARN Non-Windows PPD files should use lines ending with only LF, "
+"not CR LF!\n"
+msgstr " WARN Berkas PPD non-Windows seharusnya hanya berakhir baris LF, bukan CR LF!\n"
+
+#: systemv/cupstestppd.c:1466
+#, c-format
+msgid ""
+" WARN Obsolete PPD version %.1f!\n"
+" REF: Page 42, section 5.2.\n"
+msgstr ""
+" WARN PPD versi %.1f telah usang!\n"
+" REF: Halaman 42, seksi 5.2.\n"
+
+#: systemv/cupstestppd.c:1495
+msgid ""
+" WARN PCFileName longer than 8.3 in violation of PPD spec.\n"
+" REF: Pages 61-62, section 5.3.\n"
+msgstr ""
+" WARN PCFileName lebih panjang dari 8.3 melanggar spesifikasi PPD.\n"
+" REF: Halaman 61-62, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:1529
+msgid ""
+" WARN Protocols contains PJL but JCL attributes are not set.\n"
+" REF: Pages 78-79, section 5.7.\n"
+msgstr ""
+" WARN Protocols mengandung PJL tetapi atribut JCL tidak diset.\n"
+" REF: Halaman 78-79, seksi 5.7.\n"
+
+#: systemv/cupstestppd.c:1520
+msgid ""
+" WARN Protocols contains both PJL and BCP; expected TBCP.\n"
+" REF: Pages 78-79, section 5.7.\n"
+msgstr ""
+" WARN Protocols mengandung PJL dan BCP; diharapkan TBCP.\n"
+" REF: Halaman 78-79, seksi 5.7.\n"
+
+#: systemv/cupstestppd.c:1503
+msgid ""
+" WARN ShortNickName required by PPD 4.3 spec.\n"
+" REF: Pages 64-65, section 5.3.\n"
+msgstr ""
+" WARN ShortNickName diperlukan oleh spesifikasi PPD 4.3.\n"
+" REF: Halaman 64-65, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:2307
+#, c-format
+msgid " %s %s %s does not exist!\n"
+msgstr " %s %s %s tidak ada!\n"
+
+#: systemv/cupstestppd.c:3571
+#, c-format
+msgid " %s %s file \"%s\" has the wrong capitalization!\n"
+msgstr " %s %s berkas \"%s\" memiliki kapitalisasi yang salah!\n"
+
+#: systemv/cupstestppd.c:2377
+#, c-format
+msgid ""
+" %s Bad %s choice %s!\n"
+" REF: Page 122, section 5.17\n"
+msgstr ""
+
+#: systemv/cupstestppd.c:3131
+#, c-format
+msgid " %s Bad UTF-8 \"%s\" translation string for option %s!\n"
+msgstr " %s UTF-8 jelek \"%s\" string translasi untuk opsi %s!\n"
+
+#: systemv/cupstestppd.c:3177 systemv/cupstestppd.c:3226
+#: systemv/cupstestppd.c:3265
+#, c-format
+msgid " %s Bad UTF-8 \"%s\" translation string for option %s, choice %s!\n"
+msgstr " %s UTF-8 jelek \"%s\" string translasi untuk opsi %s, pilihan %s!\n"
+
+#: systemv/cupstestppd.c:2429
+#, c-format
+msgid " %s Bad cupsFilter value \"%s\"!\n"
+msgstr " %s Nilai cupsFilter jelek \"%s\"!\n"
+
+#: systemv/cupstestppd.c:2794
+#, c-format
+msgid " %s Bad cupsICCProfile %s!\n"
+msgstr " %s cupsICCProfile jelek \"%s\"!\n"
+
+#: systemv/cupstestppd.c:2500
+#, c-format
+msgid " %s Bad cupsPreFilter value \"%s\"!\n"
+msgstr " %s Nilai cupsPreFilter jelek \"%s\"!\n"
+
+#: systemv/cupstestppd.c:1897
+#, c-format
+msgid " %s Bad cupsUIConstraints %s: \"%s\"!\n"
+msgstr " %s cupsUIConstraints jelek %s: \"%s\"!\n"
+
+#: systemv/cupstestppd.c:3081
+#, c-format
+msgid " %s Bad language \"%s\"!\n"
+msgstr " %s Bahasa jelek \"%s\"!\n"
+
+#: systemv/cupstestppd.c:2484 systemv/cupstestppd.c:2556
+#: systemv/cupstestppd.c:2594 systemv/cupstestppd.c:2632
+#: systemv/cupstestppd.c:2670 systemv/cupstestppd.c:2708
+#, c-format
+msgid " %s Bad spelling of %s - should be %s!\n"
+msgstr " %s Ejaan dari %s jelek - seharusnya %s!\n"
+
+#: systemv/cupstestppd.c:2738
+#, c-format
+msgid " %s Cannot provide both APScanAppPath and APScanAppBundleID!\n"
+msgstr " %s Tidak dapat menyediakan APScanAppPath dan APScanAppBundleID!\n"
+
+#: systemv/cupstestppd.c:1878
+#, c-format
+msgid " %s Empty cupsUIConstraints %s!\n"
+msgstr " %s cupsUIConstraints %s kosong!\n"
+
+#: systemv/cupstestppd.c:3117
+#, c-format
+msgid " %s Missing \"%s\" translation string for option %s!\n"
+msgstr " %s Kehilangan \"%s\" string translasi untuk opsi %s!\n"
+
+#: systemv/cupstestppd.c:3209 systemv/cupstestppd.c:3249
+#, c-format
+msgid " %s Missing \"%s\" translation string for option %s, choice %s!\n"
+msgstr " %s Kehilangan \"%s\" string translasi untuk opsi %s, pilihan %s!\n"
+
+#: systemv/cupstestppd.c:2569
+#, c-format
+msgid " %s Missing APDialogExtension file \"%s\"\n"
+msgstr " %s Kehilangan berkas APDialogExtension \"%s\"\n"
+
+#: systemv/cupstestppd.c:2607
+#, c-format
+msgid " %s Missing APPrinterIconPath file \"%s\"\n"
+msgstr " %s Kehilangan berkas APPrinterIconPath \"%s\"\n"
+
+#: systemv/cupstestppd.c:2645
+#, c-format
+msgid " %s Missing APPrinterLowInkTool file \"%s\"\n"
+msgstr " %s Kehilangan berkas APPrinterLowInkTool \"%s\"\n"
+
+#: systemv/cupstestppd.c:2683
+#, c-format
+msgid " %s Missing APPrinterUtilityPath file \"%s\"\n"
+msgstr " %s Kehilangan berkas APPrinterUtilityPath \"%s\"\n"
+
+#: systemv/cupstestppd.c:2721
+#, c-format
+msgid " %s Missing APScanAppPath file \"%s\"\n"
+msgstr " %s Kehilangan berkas APScanAppPath \"%s\"\n"
+
+#: systemv/cupstestppd.c:2926
+#, c-format
+msgid ""
+" %s Missing REQUIRED PageRegion option!\n"
+" REF: Page 100, section 5.14.\n"
+msgstr ""
+" %s Kehilangan opsi PageRegion yang DIPERLUKAN!\n"
+" REF: Halaman 100, seksi 5.14.\n"
+
+#: systemv/cupstestppd.c:2911
+#, c-format
+msgid ""
+" %s Missing REQUIRED PageSize option!\n"
+" REF: Page 99, section 5.14.\n"
+msgstr ""
+" %s Kehilangan opsi PageSize yang DIPERLUKAN!\n"
+" REF: Halaman 99, seksi 5.14.\n"
+
+#: systemv/cupstestppd.c:2088 systemv/cupstestppd.c:2129
+#, c-format
+msgid " %s Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"!\n"
+msgstr " %s Kehilangan pilihan *%s %s dalam UIConstraints \"*%s %s *%s %s\"!\n"
+
+#: systemv/cupstestppd.c:1983
+#, c-format
+msgid " %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\"!\n"
+msgstr " %s Kehilangan pilihan *%s %s dalam cupsUIConstraints %s: \"%s\"!\n"
+
+#: systemv/cupstestppd.c:2458
+#, c-format
+msgid " %s Missing cupsFilter file \"%s\"\n"
+msgstr " %s Kehilangan berkas cupsFilter \"%s\"\n"
+
+#: systemv/cupstestppd.c:2828
+#, c-format
+msgid " %s Missing cupsICCProfile file \"%s\"!\n"
+msgstr " %s Kehilangan berkas cupsICCProfile \"%s\"!\n"
+
+#: systemv/cupstestppd.c:2529
+#, c-format
+msgid " %s Missing cupsPreFilter file \"%s\"\n"
+msgstr " %s Kehilangan berkas cupsPreFilter \"%s\"\n"
+
+#: systemv/cupstestppd.c:1915
+#, c-format
+msgid " %s Missing cupsUIResolver %s!\n"
+msgstr " %s Kehilangan cupsUIResolver %s!\n"
+
+#: systemv/cupstestppd.c:2074 systemv/cupstestppd.c:2115
+#, c-format
+msgid " %s Missing option %s in UIConstraints \"*%s %s *%s %s\"!\n"
+msgstr " %s Kehilangan opsi %s dalam UIConstraints \"*%s %s *%s %s\"!\n"
+
+#: systemv/cupstestppd.c:1967
+#, c-format
+msgid " %s Missing option %s in cupsUIConstraints %s: \"%s\"!\n"
+msgstr " %s Kehilangan opsi %s dalam cupsUIConstraints %s: \"%s\"!\n"
+
+#: systemv/cupstestppd.c:3303
+#, c-format
+msgid " %s No base translation \"%s\" is included in file!\n"
+msgstr " %s Tidak ada basis translasi \"%s\" yang disertakan pada berkas!\n"
+
+#: systemv/cupstestppd.c:2989
+#, c-format
+msgid ""
+" %s Non-standard size name \"%s\"!\n"
+" REF: Page 187, section B.2.\n"
+msgstr ""
+" %s Nama ukuran nonstandar \"%s\"!\n"
+" REF: Halaman 187, seksi B.2.\n"
+
+#: systemv/cupstestppd.c:2353
+#, c-format
+msgid ""
+" %s REQUIRED %s does not define choice None!\n"
+" REF: Page 122, section 5.17\n"
+msgstr ""
+
+#: systemv/cupstestppd.c:3006 systemv/cupstestppd.c:3020
+#, c-format
+msgid " %s Size \"%s\" defined for %s but not for %s!\n"
+msgstr " %s Ukuran \"%s\" ditentukan untuk %s bukan untuk %s!\n"
+
+#: systemv/cupstestppd.c:2964
+#, c-format
+msgid " %s Size \"%s\" has unexpected dimensions (%gx%g)!\n"
+msgstr " %s Ukuran \"%s\" memiliki dimensi yang tak diharapkan (%gx%g)!\n"
+
+#: systemv/cupstestppd.c:2856
+#, c-format
+msgid " %s cupsICCProfile %s hash value collides with %s!\n"
+msgstr ""
+
+#: systemv/cupstestppd.c:2038
+#, c-format
+msgid " %s cupsUIResolver %s causes a loop!\n"
+msgstr ""
+
+#: systemv/cupstestppd.c:2020
+#, c-format
+msgid " %s cupsUIResolver %s does not list at least two different options!\n"
+msgstr " %s cupsUIResolver %s tidak menyediakan setidaknya dua opsi berbeda!\n"
+
+#: systemv/cupstestppd.c:2238
+#, c-format
+msgid " **FAIL** %s choice names %s and %s differ only by case!\n"
+msgstr " **FAIL** %s nama yang dipilih %s dan %s berbeda hanya pada besar/kecilnya huruf!\n"
+
+#: systemv/cupstestppd.c:1243
+#, c-format
+msgid ""
+" **FAIL** %s must be 1284DeviceID!\n"
+" REF: Page 72, section 5.5\n"
+msgstr ""
+" **FAIL** %s seharusnya 1284DeviceID!\n"
+" REF: Halaman 72, seksi 5.5\n"
+
+#: systemv/cupstestppd.c:659
+#, c-format
+msgid ""
+" **FAIL** BAD Default%s %s\n"
+" REF: Page 40, section 4.5.\n"
+msgstr ""
+" **FAIL** Default%s %s JELEK\n"
+" REF: Halaman 40, seksi 4.5.\n"
+
+#: systemv/cupstestppd.c:595
+#, c-format
+msgid ""
+" **FAIL** BAD DefaultImageableArea %s!\n"
+" REF: Page 102, section 5.15.\n"
+msgstr ""
+" **FAIL** DefaultImageableArea %s JELEK!\n"
+" REF: Halaman 102, seksi 5.15.\n"
+
+#: systemv/cupstestppd.c:631
+#, c-format
+msgid ""
+" **FAIL** BAD DefaultPaperDimension %s!\n"
+" REF: Page 103, section 5.15.\n"
+msgstr ""
+" **FAIL** DefaultPaperDimension %s JELEK!\n"
+" REF: Halaman 103, seksi 5.15.\n"
+
+#: systemv/cupstestppd.c:1102
+msgid ""
+" **FAIL** BAD JobPatchFile attribute in file\n"
+" REF: Page 24, section 3.4.\n"
+msgstr ""
+" **FAIL** Atribut JobPatchFile JELEK dalam berkas\n"
+" REF: Halaman 24, seksi 3.4.\n"
+
+#: systemv/cupstestppd.c:822
+msgid ""
+" **FAIL** BAD Manufacturer (should be \"HP\")\n"
+" REF: Page 211, table D.1.\n"
+msgstr ""
+" **FAIL** Manufacturer JELEK (seharusnya \"HP\")\n"
+" REF: Halaman 211, tabel D.1.\n"
+
+#: systemv/cupstestppd.c:838
+msgid ""
+" **FAIL** BAD Manufacturer (should be \"Oki\")\n"
+" REF: Page 211, table D.1.\n"
+msgstr ""
+" **FAIL** Manufacturer JELEK (seharusnya \"Oki\")\n"
+" REF: Halaman 211, tabel D.1.\n"
+
+#: systemv/cupstestppd.c:877
+#, c-format
+msgid ""
+" **FAIL** BAD ModelName - \"%c\" not allowed in string.\n"
+" REF: Pages 59-60, section 5.3.\n"
+msgstr ""
+" **FAIL** ModelName JELEK - \"%c\" tidak diperbolehkan dalam string.\n"
+" REF: Halaman 59-60, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:1033
+msgid ""
+" **FAIL** BAD PSVersion - not \"(string) int\".\n"
+" REF: Pages 62-64, section 5.3.\n"
+msgstr ""
+" **FAIL** PSVersion JELEK - bukan \"(string) int\".\n"
+" REF: Halaman 62-64, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:994
+msgid ""
+" **FAIL** BAD Product - not \"(string)\".\n"
+" REF: Page 62, section 5.3.\n"
+msgstr ""
+" **FAIL** Product JELEK - bukan \"(string)\".\n"
+" REF: Halaman 62, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:1068
+msgid ""
+" **FAIL** BAD ShortNickName - longer than 31 chars.\n"
+" REF: Pages 64-65, section 5.3.\n"
+msgstr ""
+" **FAIL** ShortNickName JELEK - lebih dari 31 karakter.\n"
+" REF: Halaman 64-65, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:1224
+#, c-format
+msgid ""
+" **FAIL** Bad %s choice %s!\n"
+" REF: Page 84, section 5.9\n"
+msgstr ""
+
+#: systemv/cupstestppd.c:702
+#, c-format
+msgid ""
+" **FAIL** Bad FileVersion \"%s\"\n"
+" REF: Page 56, section 5.3.\n"
+msgstr ""
+" **FAIL** FileVersion \"%s\" jelek\n"
+" REF: Halaman 56, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:746
+#, c-format
+msgid ""
+" **FAIL** Bad FormatVersion \"%s\"\n"
+" REF: Page 56, section 5.3.\n"
+msgstr ""
+" **FAIL** FormatVersion \"%s\" jelek\n"
+" REF: Halaman 56, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:1288
+#, c-format
+msgid " **FAIL** Bad LanguageEncoding %s - must be ISOLatin1!\n"
+msgstr " **FAIL** LanguageEncoding %s jelek - seharusnya ISOLatin1!\n"
+
+#: systemv/cupstestppd.c:1302
+#, c-format
+msgid " **FAIL** Bad LanguageVersion %s - must be English!\n"
+msgstr " **FAIL** LanguageVersion %s jelek - seharusnya English!\n"
+
+#: systemv/cupstestppd.c:3443 systemv/cupstestppd.c:3465
+#, c-format
+msgid " **FAIL** Default option code cannot be interpreted: %s\n"
+msgstr " **FAIL** Kode opsi utama tidak bisa diinterpretasikan: %s\n"
+
+#: systemv/cupstestppd.c:1361
+#, c-format
+msgid ""
+" **FAIL** Default translation string for option %s choice %s contains "
+"8-bit characters!\n"
+msgstr " **FAIL** String translasi utama untuk opsi %s pilihan %s mengandung karakter 8-bit!\n"
+
+#: systemv/cupstestppd.c:1334
+#, c-format
+msgid ""
+" **FAIL** Default translation string for option %s contains 8-bit "
+"characters!\n"
+msgstr ""
+" **FAIL** String translasi utama untuk opsi %s mengandung karakter 8-"
+"bit!\n"
+
+#: systemv/cupstestppd.c:2176
+#, c-format
+msgid " **FAIL** Group names %s and %s differ only by case!\n"
+msgstr " **FAIL** Nama kelompok %s dan %s berbeda hanya besar/kecilnya huruf!\n"
+
+#: systemv/cupstestppd.c:2221
+#, c-format
+msgid " **FAIL** Multiple occurrences of %s choice name %s!\n"
+msgstr " **FAIL** Terjadi ganda dari %s nama yang dipilih %s!\n"
+
+#: systemv/cupstestppd.c:2198
+#, c-format
+msgid " **FAIL** Option names %s and %s differ only by case!\n"
+msgstr " **FAIL** Nama opsi %s dan %s berbeda hanya besar/kecilnya huruf!\n"
+
+#: systemv/cupstestppd.c:679
+#, c-format
+msgid ""
+" **FAIL** REQUIRED Default%s\n"
+" REF: Page 40, section 4.5.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN Default%s\n"
+" REF: Halaman 40, seksi 4.5.\n"
+
+#: systemv/cupstestppd.c:580
+msgid ""
+" **FAIL** REQUIRED DefaultImageableArea\n"
+" REF: Page 102, section 5.15.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN DefaultImageableArea\n"
+" REF: Halaman 102, seksi 5.15.\n"
+
+#: systemv/cupstestppd.c:616
+msgid ""
+" **FAIL** REQUIRED DefaultPaperDimension\n"
+" REF: Page 103, section 5.15.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN DefaultPaperDimension\n"
+" REF: Halaman 103, seksi 5.15.\n"
+
+#: systemv/cupstestppd.c:720
+msgid ""
+" **FAIL** REQUIRED FileVersion\n"
+" REF: Page 56, section 5.3.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN FileVersion\n"
+" REF: Halaman 56, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:764
+msgid ""
+" **FAIL** REQUIRED FormatVersion\n"
+" REF: Page 56, section 5.3.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN FormatVersion\n"
+" REF: Halaman 56, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:1153
+#, c-format
+msgid ""
+" **FAIL** REQUIRED ImageableArea for PageSize %s\n"
+" REF: Page 41, section 5.\n"
+" REF: Page 102, section 5.15.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN ImageableArea untuk PageSize %s\n"
+" REF: Halaman 41, seksi 5.\n"
+" REF: Halaman 102, seksi 5.15.\n"
+
+#: systemv/cupstestppd.c:784
+msgid ""
+" **FAIL** REQUIRED LanguageEncoding\n"
+" REF: Pages 56-57, section 5.3.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN LanguageEncoding\n"
+" REF: Halaman 56-57, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:804
+msgid ""
+" **FAIL** REQUIRED LanguageVersion\n"
+" REF: Pages 57-58, section 5.3.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN LanguageVersion\n"
+" REF: Halaman 57-58, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:856
+msgid ""
+" **FAIL** REQUIRED Manufacturer\n"
+" REF: Pages 58-59, section 5.3.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN Manufacturer\n"
+" REF: Halaman 58-59, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:896
+msgid ""
+" **FAIL** REQUIRED ModelName\n"
+" REF: Pages 59-60, section 5.3.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN ModelName\n"
+" REF: Halaman 59-60, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:916
+msgid ""
+" **FAIL** REQUIRED NickName\n"
+" REF: Page 60, section 5.3.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN NickName\n"
+" REF: Halaman 60, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:976
+msgid ""
+" **FAIL** REQUIRED PCFileName\n"
+" REF: Pages 61-62, section 5.3.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN PCFileName\n"
+" REF: Halaman 61-62, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:1051
+msgid ""
+" **FAIL** REQUIRED PSVersion\n"
+" REF: Pages 62-64, section 5.3.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN PSVersion\n"
+" REF: Halaman 62-64, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:956
+msgid ""
+" **FAIL** REQUIRED PageRegion\n"
+" REF: Page 100, section 5.14.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN PageRegion\n"
+" REF: Halaman 100, seksi 5.14.\n"
+
+#: systemv/cupstestppd.c:1122
+msgid ""
+" **FAIL** REQUIRED PageSize\n"
+" REF: Page 41, section 5.\n"
+" REF: Page 99, section 5.14.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN PageSize\n"
+" REF: Halaman 41, seksi 5.\n"
+" REF: Halaman 99, seksi 5.14.\n"
+
+#: systemv/cupstestppd.c:936
+msgid ""
+" **FAIL** REQUIRED PageSize\n"
+" REF: Pages 99-100, section 5.14.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN PageSize\n"
+" REF: Halaman 99-100, seksi 5.14.\n"
+
+#: systemv/cupstestppd.c:1175
+#, c-format
+msgid ""
+" **FAIL** REQUIRED PaperDimension for PageSize %s\n"
+" REF: Page 41, section 5.\n"
+" REF: Page 103, section 5.15.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN PaperDimension untuk PageSize %s\n"
+" REF: Halaman 41, seksi 5.\n"
+" REF: Halaman 103, seksi 5.15.\n"
+
+#: systemv/cupstestppd.c:1011
+msgid ""
+" **FAIL** REQUIRED Product\n"
+" REF: Page 62, section 5.3.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN Product\n"
+" REF: Halaman 62, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:1086
+msgid ""
+" **FAIL** REQUIRED ShortNickName\n"
+" REF: Page 64-65, section 5.3.\n"
+msgstr ""
+" **FAIL** DIPERLUKAN ShortNickName\n"
+" REF: Halaman 64-65, seksi 5.3.\n"
+
+#: systemv/cupstestppd.c:1569
+#, c-format
+msgid " %d ERRORS FOUND\n"
+msgstr " %d KESALAHAN DITEMUKAN\n"
+
+#: systemv/cupstestdsc.c:238 systemv/cupstestdsc.c:280
+#, c-format
+msgid ""
+" Bad %%%%BoundingBox: on line %d!\n"
+" REF: Page 39, %%%%BoundingBox:\n"
+msgstr ""
+" %%%%BoundingBox jelek: pada baris %d!\n"
+" REF: Halaman 39, %%%%BoundingBox:\n"
+
+#: systemv/cupstestdsc.c:309
+#, c-format
+msgid ""
+" Bad %%%%Page: on line %d!\n"
+" REF: Page 53, %%%%Page:\n"
+msgstr ""
+
+#: systemv/cupstestdsc.c:222 systemv/cupstestdsc.c:262
+#, c-format
+msgid ""
+" Bad %%%%Pages: on line %d!\n"
+" REF: Page 43, %%%%Pages:\n"
+msgstr ""
+
+#: systemv/cupstestdsc.c:180
+#, c-format
+msgid ""
+" Line %d is longer than 255 characters (%d)!\n"
+" REF: Page 25, Line Length\n"
+msgstr ""
+" Baris %d lebih dari 255 karakter (%d)!\n"
+" REF: Halaman 25, Line Length (Panjang Baris)\n"
+
+#: systemv/cupstestdsc.c:196
+msgid ""
+" Missing %!PS-Adobe-3.0 on first line!\n"
+" REF: Page 17, 3.1 Conforming Documents\n"
+msgstr ""
+" Kehilangan %!PS-Adobe-3.0 pada baris pertama!\n"
+" REF: Halaman 17, 3.1 Conforming Documents (Menyesuaikan Dokumen)\n"
+
+#: systemv/cupstestdsc.c:366
+#, c-format
+msgid ""
+" Missing %%EndComments comment!\n"
+" REF: Page 41, %%EndComments\n"
+msgstr ""
+" Kehilangan komentar %%EndComments!\n"
+" REF: Halaman 41, %%EndComments\n"
+
+#: systemv/cupstestdsc.c:346
+#, c-format
+msgid ""
+" Missing or bad %%BoundingBox: comment!\n"
+" REF: Page 39, %%BoundingBox:\n"
+msgstr ""
+" Kehilangan atau %%BoundingBox jelek: komentar!\n"
+" REF: Halaman 39, %%BoundingBox:\n"
+
+#: systemv/cupstestdsc.c:376
+#, c-format
+msgid ""
+" Missing or bad %%Page: comments!\n"
+" REF: Page 53, %%Page:\n"
+msgstr ""
+" Kehilangan atau %%Page jelek: komentar!\n"
+" REF: Halaman 53, %%Page:\n"
+
+#: systemv/cupstestdsc.c:356
+#, c-format
+msgid ""
+" Missing or bad %%Pages: comment!\n"
+" REF: Page 43, %%Pages:\n"
+msgstr ""
+" Kehilangan atau %%Pages jelek: komentar!\n"
+" REF: Halaman 43, %%Pages:\n"
+
+#: systemv/cupstestppd.c:1571
+msgid " NO ERRORS FOUND\n"
+msgstr " TIDAK ADA KESALAHAN\n"
+
+#: systemv/cupstestdsc.c:399
+#, c-format
+msgid " Saw %d lines that exceeded 255 characters!\n"
+msgstr " Menemukan %d baris yang melebihi 255 karakter!\n"
+
+#: systemv/cupstestdsc.c:394
+#, c-format
+msgid " Too many %%BeginDocument comments!\n"
+msgstr " Terlalu banyak komentar %%BeginDocument!\n"
+
+#: systemv/cupstestdsc.c:386
+#, c-format
+msgid " Too many %%EndDocument comments!\n"
+msgstr " Terlalu banyak komentar %%EndDocument!\n"
+
+#: systemv/cupstestdsc.c:406
+msgid " Warning: file contains binary data!\n"
+msgstr " Peringatan: berkas mengandung data biner!\n"
+
+#: systemv/cupstestdsc.c:414
+#, c-format
+msgid " Warning: no %%EndComments comment in file!\n"
+msgstr " Peringatan: tidak ada komentar %%EndComments dalam berkas!\n"
+
+#: systemv/cupstestdsc.c:410
+#, c-format
+msgid " Warning: obsolete DSC version %.1f in file!\n"
+msgstr " Peringatan: DSC usang versi %.1f dalam berkas!\n"
+
+#: systemv/cupstestppd.c:577 systemv/cupstestppd.c:592
+#: systemv/cupstestppd.c:613 systemv/cupstestppd.c:628
+#: systemv/cupstestppd.c:656 systemv/cupstestppd.c:676
+#: systemv/cupstestppd.c:699 systemv/cupstestppd.c:717
+#: systemv/cupstestppd.c:743 systemv/cupstestppd.c:761
+#: systemv/cupstestppd.c:781 systemv/cupstestppd.c:801
+#: systemv/cupstestppd.c:819 systemv/cupstestppd.c:835
+#: systemv/cupstestppd.c:853 systemv/cupstestppd.c:874
+#: systemv/cupstestppd.c:893 systemv/cupstestppd.c:913
+#: systemv/cupstestppd.c:933 systemv/cupstestppd.c:953
+#: systemv/cupstestppd.c:973 systemv/cupstestppd.c:991
+#: systemv/cupstestppd.c:1008 systemv/cupstestppd.c:1030
+#: systemv/cupstestppd.c:1048 systemv/cupstestppd.c:1065
+#: systemv/cupstestppd.c:1083 systemv/cupstestppd.c:1099
+#: systemv/cupstestppd.c:1119 systemv/cupstestppd.c:1150
+#: systemv/cupstestppd.c:1172 systemv/cupstestppd.c:1221
+#: systemv/cupstestppd.c:1240 systemv/cupstestppd.c:1284
+#: systemv/cupstestppd.c:1298 systemv/cupstestppd.c:1330
+#: systemv/cupstestppd.c:1357 systemv/cupstestppd.c:1875
+#: systemv/cupstestppd.c:1894 systemv/cupstestppd.c:1912
+#: systemv/cupstestppd.c:1964 systemv/cupstestppd.c:1980
+#: systemv/cupstestppd.c:2017 systemv/cupstestppd.c:2035
+#: systemv/cupstestppd.c:2071 systemv/cupstestppd.c:2085
+#: systemv/cupstestppd.c:2112 systemv/cupstestppd.c:2126
+#: systemv/cupstestppd.c:2172 systemv/cupstestppd.c:2194
+#: systemv/cupstestppd.c:2217 systemv/cupstestppd.c:2234
+#: systemv/cupstestppd.c:2303 systemv/cupstestppd.c:2350
+#: systemv/cupstestppd.c:2374 systemv/cupstestppd.c:2425
+#: systemv/cupstestppd.c:2455 systemv/cupstestppd.c:2480
+#: systemv/cupstestppd.c:2496 systemv/cupstestppd.c:2526
+#: systemv/cupstestppd.c:2552 systemv/cupstestppd.c:2566
+#: systemv/cupstestppd.c:2590 systemv/cupstestppd.c:2604
+#: systemv/cupstestppd.c:2628 systemv/cupstestppd.c:2642
+#: systemv/cupstestppd.c:2666 systemv/cupstestppd.c:2680
+#: systemv/cupstestppd.c:2704 systemv/cupstestppd.c:2718
+#: systemv/cupstestppd.c:2735 systemv/cupstestppd.c:2790
+#: systemv/cupstestppd.c:2825 systemv/cupstestppd.c:2852
+#: systemv/cupstestppd.c:2907 systemv/cupstestppd.c:2922
+#: systemv/cupstestppd.c:2960 systemv/cupstestppd.c:3002
+#: systemv/cupstestppd.c:3016 systemv/cupstestppd.c:3077
+#: systemv/cupstestppd.c:3113 systemv/cupstestppd.c:3127
+#: systemv/cupstestppd.c:3173 systemv/cupstestppd.c:3205
+#: systemv/cupstestppd.c:3222 systemv/cupstestppd.c:3245
+#: systemv/cupstestppd.c:3261 systemv/cupstestppd.c:3299
+#: systemv/cupstestppd.c:3439 systemv/cupstestppd.c:3461
+#: systemv/cupstestppd.c:3567
+msgid " FAIL\n"
+msgstr " GAGAL\n"
+
+#: systemv/cupstestppd.c:462
+#, c-format
+msgid ""
+" FAIL\n"
+" **FAIL** Unable to open PPD file - %s\n"
+msgstr ""
+" GAGAL\n"
+" **FAIL** Tidak bisa membuka berkas PPD - %s\n"
+
+#: systemv/cupstestppd.c:473
+#, c-format
+msgid ""
+" FAIL\n"
+" **FAIL** Unable to open PPD file - %s on line %d.\n"
+msgstr ""
+" GAGAL\n"
+" **FAIL** Tidak bisa membuka berkas PPD - %s pada baris %d.\n"
+
+#: systemv/cupstestppd.c:1381
+msgid " PASS\n"
+msgstr " LEWAT\n"
+
+#: ppdc/sample.c:51
+msgid "#10 Envelope"
+msgstr "#10 Amplop"
+
+#: ppdc/sample.c:52
+msgid "#11 Envelope"
+msgstr "#11 Amplop"
+
+#: ppdc/sample.c:53
+msgid "#12 Envelope"
+msgstr "#12 Amplop"
+
+#: ppdc/sample.c:54
+msgid "#14 Envelope"
+msgstr "#14 Amplop"
+
+#: ppdc/sample.c:55
+msgid "#9 Envelope"
+msgstr "#9 Amplop"
+
+#: berkeley/lpq.c:552
+#, c-format
+msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes\n"
+msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bita\n"
+
+#: berkeley/lpq.c:557
+#, c-format
+msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes\n"
+msgstr "%-7s %-7.7s %-7d %-31.31s %.0f bita\n"
+
+#: filter/bannertops.c:784
+#, c-format
+msgid "%.0f x %.0f millimeters"
+msgstr "%.0f x %.0f milimeter"
+
+#: filter/bannertops.c:805
+#, c-format
+msgid "%.0f x %.0f to %.0f x %.0f millimeters"
+msgstr "%.0f x %.0f hingga %.0f x %.0f milimeter"
+
+#: filter/bannertops.c:775
+#, c-format
+msgid "%.2f x %.2f inches"
+msgstr "%.2f x %.2f inci"
+
+#: filter/bannertops.c:794
+#, c-format
+msgid "%.2f x %.2f to %.2f x %.2f inches"
+msgstr "%.2f x %.2f hingga %.2f x %.2f inci"
+
+#: systemv/lpstat.c:754
+#, c-format
+msgid "%s accepting requests since %s\n"
+msgstr "%s menerima permintaan sejak %s\n"
+
+#: scheduler/ipp.c:10415
+#, c-format
+msgid "%s cannot be changed."
+msgstr "%s tidak bisa diubah."
+
+#: berkeley/lpc.c:194
+#, c-format
+msgid "%s is not implemented by the CUPS version of lpc.\n"
+msgstr "%s tidak diimplementasikan oleh versi lpc CUPS.\n"
+
+#: berkeley/lpq.c:643
+#, c-format
+msgid "%s is not ready\n"
+msgstr "%s tidak siap\n"
+
+#: berkeley/lpq.c:636
+#, c-format
+msgid "%s is ready\n"
+msgstr "%s siap\n"
+
+#: berkeley/lpq.c:639
+#, c-format
+msgid "%s is ready and printing\n"
+msgstr "%s siap dan sedang mencetak\n"
+
+#: systemv/lpstat.c:757
+#, c-format
+msgid ""
+"%s not accepting requests since %s -\n"
+"\t%s\n"
+msgstr ""
+"%s tidak menerima permintaan sejak %s -\n"
+"\t%s\n"
+
+#: scheduler/ipp.c:701
+#, c-format
+msgid "%s not supported!"
+msgstr "%s tidak didukung!"
+
+#: systemv/lpstat.c:767
+#, c-format
+msgid "%s/%s accepting requests since %s\n"
+msgstr "%s/%s menerima permintaan sejak %s\n"
+
+#: systemv/lpstat.c:770
+#, c-format
+msgid ""
+"%s/%s not accepting requests since %s -\n"
+"\t%s\n"
+msgstr ""
+"%s/%s tidak menerima permintaan sejak %s -\n"
+"\t%s\n"
+
+#: berkeley/lpq.c:544
+#, c-format
+msgid "%s: %-33.33s [job %d localhost]\n"
+msgstr "%s: %-33.33s [tugas %d localhost]\n"
+
+#: systemv/cancel.c:303 systemv/cancel.c:367
+#, c-format
+msgid "%s: %s failed: %s\n"
+msgstr "%s: %s gagal: %s\n"
+
+#: systemv/cupsaccept.c:73
+#, c-format
+msgid "%s: Don't know what to do!\n"
+msgstr "%s: Tidak tahu apa yang hendak dikerjakan!\n"
+
+#: berkeley/lpr.c:356 systemv/lp.c:603
+#, c-format
+msgid "%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "%s: Kesalahan - Nama variabel lingkungan %s sebenarnya tidak ada \"%s\"!\n"
+
+#: systemv/lp.c:240
+#, c-format
+msgid "%s: Error - bad job ID!\n"
+msgstr "%s: Kesalahan - ID tugas jelek!\n"
+
+#: systemv/lp.c:227
+#, c-format
+msgid "%s: Error - cannot print files and alter jobs simultaneously!\n"
+msgstr "%s: Kesalahan - tidak bisa mencetak dan mengubah tugas secara bersamaan!\n"
+
+#: systemv/lp.c:523
+#, c-format
+msgid "%s: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr ""
+"%s: Kesalahan - tidak bisa mencetak dari stdin apabila berkas atau ID tugas "
+"disediakan!\n"
+
+#: systemv/lp.c:477
+#, c-format
+msgid "%s: Error - expected character set after '-S' option!\n"
+msgstr "%s: Kesalahan - diharapkan set karakter usai opsi '-S'!\n"
+
+#: systemv/lp.c:497
+#, c-format
+msgid "%s: Error - expected content type after '-T' option!\n"
+msgstr "%s: Kesalahan - diharapkan jenis konten usai opsi '-T'!\n"
+
+#: systemv/lp.c:273
+#, c-format
+msgid "%s: Error - expected copies after '-n' option!\n"
+msgstr "%s: Kesalahan - diharapkan banyaknya rangkap usai opsi '-n'!\n"
+
+#: berkeley/lpr.c:251
+#, c-format
+msgid "%s: Error - expected copy count after '-#' option!\n"
+msgstr "%s: Kesalahan - diharapkan banyak hitungan rangkap usai opsi '-#'!\n"
+
+#: berkeley/lpr.c:219
+#, c-format
+msgid "%s: Error - expected destination after '-P' option!\n"
+msgstr "%s: Kesalahan - diharapkan target usai opsi '-P'!\n"
+
+#: systemv/lpstat.c:238
+#, c-format
+msgid "%s: Error - expected destination after '-b' option!\n"
+msgstr "%s: Kesalahan - diharapkan target usai opsi '-b'!\n"
+
+#: systemv/lp.c:145
+#, c-format
+msgid "%s: Error - expected destination after '-d' option!\n"
+msgstr "%s: Kesalahan - diharapkan target usai opsi '-d'!\n"
+
+#: systemv/lp.c:175
+#, c-format
+msgid "%s: Error - expected form after '-f' option!\n"
+msgstr "%s: Kesalahan - diharapkan formulir usai opsi '-f'!\n"
+
+#: systemv/lp.c:404
+#, c-format
+msgid "%s: Error - expected hold name after '-H' option!\n"
+msgstr "%s: Kesalahan - diharapkan nama yang ditahan usai opsi '-H'!\n"
+
+#: berkeley/lpr.c:111
+#, c-format
+msgid "%s: Error - expected hostname after '-H' option!\n"
+msgstr "%s: Kesalahan - diharapkan nama host usai opsi '-H'!\n"
+
+#: berkeley/lpq.c:188 berkeley/lprm.c:130 systemv/cancel.c:130
+#: systemv/cupsaccept.c:131 systemv/lp.c:196 systemv/lpstat.c:298
+#, c-format
+msgid "%s: Error - expected hostname after '-h' option!\n"
+msgstr "%s: Kesalahan - diharapkan nama host usai opsi '-h'!\n"
+
+#: systemv/lp.c:382
+#, c-format
+msgid "%s: Error - expected mode list after '-y' option!\n"
+msgstr "%s: Kesalahan - diharapkan daftar modus usai opsi '-y'!\n"
+
+#: berkeley/lpr.c:275
+#, c-format
+msgid "%s: Error - expected name after '-%c' option!\n"
+msgstr "%s: Kesalahan - diharapkan nama usai opsi '-%c'!\n"
+
+#: systemv/lp.c:296
+#, c-format
+msgid "%s: Error - expected option string after '-o' option!\n"
+msgstr "%s: Kesalahan - diharapkan opsi string usai opsi '-o'!\n"
+
+#: systemv/lp.c:456
+#, c-format
+msgid "%s: Error - expected page list after '-P' option!\n"
+msgstr "%s: Kesalahan - diharapkan daftar halaman usai opsi '-P'!\n"
+
+#: systemv/lp.c:317
+#, c-format
+msgid "%s: Error - expected priority after '-%c' option!\n"
+msgstr "%s: Kesalahan - diharapkan prioritas usai opsi '-%c'!\n"
+
+#: systemv/cupsaccept.c:150
+#, c-format
+msgid "%s: Error - expected reason text after '-r' option!\n"
+msgstr "%s: Kesalahan - diharapkan teks alasan usai opsi '-r'!\n"
+
+#: systemv/lp.c:364
+#, c-format
+msgid "%s: Error - expected title after '-t' option!\n"
+msgstr "%s: Kesalahan - diharapkan judul usai opsi '-t'!\n"
+
+#: berkeley/lpq.c:117 berkeley/lpr.c:91 berkeley/lprm.c:110
+#: systemv/cancel.c:99 systemv/cupsaccept.c:108 systemv/lp.c:122
+#: systemv/lpadmin.c:471 systemv/lpstat.c:144
+#, c-format
+msgid "%s: Error - expected username after '-U' option!\n"
+msgstr "%s: Kesalahan - diharapkan nama pengguna usai opsi '-U'!\n"
+
+#: systemv/cancel.c:152
+#, c-format
+msgid "%s: Error - expected username after '-u' option!\n"
+msgstr "%s: Kesalahan - diharapkan nama pengguna usai opsi '-u'!\n"
+
+#: berkeley/lpr.c:134
+#, c-format
+msgid "%s: Error - expected value after '-%c' option!\n"
+msgstr "%s: Kesalahan - diharapkan nilai usai opsi '-%c'!\n"
+
+#: systemv/lpstat.c:164 systemv/lpstat.c:178
+#, c-format
+msgid ""
+"%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' "
+"option!\n"
+msgstr ""
+"%s: Kesalahan - diperlukan \"completed\", \"not-completed\", atau \"all\" "
+"usai opsi '-W'!\n"
+
+#: berkeley/lpr.c:361 systemv/lp.c:608
+#, c-format
+msgid "%s: Error - no default destination available.\n"
+msgstr "%s: Kesalahan - tidak tersedia tujuan utama.\n"
+
+#: systemv/lp.c:340
+#, c-format
+msgid "%s: Error - priority must be between 1 and 100.\n"
+msgstr "%s: Kesalahan - prioritas harus antara 1 dan 100.\n"
+
+#: berkeley/lpr.c:365 systemv/lp.c:612
+#, c-format
+msgid "%s: Error - scheduler not responding!\n"
+msgstr "%s: Kesalahan - penjadwal tidak merespon!\n"
+
+#: berkeley/lpr.c:317 systemv/lp.c:556
+#, c-format
+msgid "%s: Error - too many files - \"%s\"\n"
+msgstr "%s: Kesalahan - terlalu banyak berkas - \"%s\"\n"
+
+#: berkeley/lpr.c:299 systemv/lp.c:539
+#, c-format
+msgid "%s: Error - unable to access \"%s\" - %s\n"
+msgstr "%s: Kesalahan - tidak bisa mengakses \"%s\" - %s\n"
+
+#: berkeley/lpr.c:410 systemv/lp.c:645
+#, c-format
+msgid "%s: Error - unable to queue from stdin - %s\n"
+msgstr ""
+
+#: berkeley/lprm.c:93 berkeley/lprm.c:182 systemv/cancel.c:222
+#, c-format
+msgid "%s: Error - unknown destination \"%s\"!\n"
+msgstr "%s: Kesalahan - tujuan tak dikenal \"%s\"!\n"
+
+#: berkeley/lpq.c:157
+#, c-format
+msgid "%s: Error - unknown destination \"%s/%s\"!\n"
+msgstr "%s: Kesalahan - tujuan tak dikenal \"%s/%s\"!\n"
+
+#: berkeley/lpr.c:286 berkeley/lprm.c:148 systemv/cancel.c:164
+#: systemv/cupsaccept.c:174 systemv/lp.c:514 systemv/lpstat.c:459
+#, c-format
+msgid "%s: Error - unknown option '%c'!\n"
+msgstr "%s: Kesalahan - opsi tak dikenal '%c'!\n"
+
+#: systemv/cupsaccept.c:167
+#, c-format
+msgid "%s: Error - unknown option '%s'!\n"
+msgstr "%s: Kesalahan - opsi '%s' tak dikenal!\n"
+
+#: systemv/lp.c:216
+#, c-format
+msgid "%s: Expected job ID after '-i' option!\n"
+msgstr "%s: Diharapkan ID tugas usai opsi '-i'!\n"
+
+#: scheduler/cupsfilter.c:558
+#, c-format
+msgid "%s: Filter \"%s\" not available: %s\n"
+msgstr "%s: Penyaring \"%s\" tak tersedia: %s\n"
+
+#: systemv/lpstat.c:511 systemv/lpstat.c:550
+#, c-format
+msgid "%s: Invalid destination name in list \"%s\"!\n"
+msgstr "%s: Nama tujuan tidak sah pada daftar \"%s\"!\n"
+
+#: scheduler/cupsfilter.c:539
+#, c-format
+msgid "%s: Invalid filter string \"%s\"\n"
+msgstr "%s: String penyaring \"%s\" tidak sah\n"
+
+#: systemv/lp.c:432
+#, c-format
+msgid "%s: Need job ID ('-i jobid') before '-H restart'!\n"
+msgstr "%s: Memerlukan ID tugas ('-i jobid') sebelum '-H restart'!\n"
+
+#: scheduler/cupsfilter.c:453
+#, c-format
+msgid "%s: No filter to convert from %s/%s to %s/%s!\n"
+msgstr "%s: Tidak ada penyaring untuk konversi dari %s/%s ke %s/%s!\n"
+
+#: systemv/cupsaccept.c:208
+#, c-format
+msgid "%s: Operation failed: %s\n"
+msgstr "%s: Operasi gagal: %s\n"
+
+#: berkeley/lpq.c:103 berkeley/lpr.c:77 berkeley/lprm.c:72 systemv/cancel.c:85
+#: systemv/cupsaccept.c:94 systemv/cupsaddsmb.c:91 systemv/lp.c:108
+#: systemv/lpadmin.c:277 systemv/lpinfo.c:94 systemv/lpmove.c:79
+#: systemv/lpstat.c:109
+#, c-format
+msgid "%s: Sorry, no encryption support compiled in!\n"
+msgstr "%s: Maaf, tidak ada dukungan enkripsi yang dikompilasi serta!\n"
+
+#: berkeley/lpq.c:304 scheduler/cupsfilter.c:1106 systemv/cupsaddsmb.c:149
+#: systemv/cupsaddsmb.c:175
+#, c-format
+msgid "%s: Unable to connect to server\n"
+msgstr "%s: Tidak bisa terhubung ke server\n"
+
+#: systemv/cancel.c:245 systemv/cancel.c:326
+#, c-format
+msgid "%s: Unable to contact server!\n"
+msgstr "%s: Tidak bisa mengontak server!\n"
+
+#: scheduler/cupsfilter.c:419
+#, c-format
+msgid "%s: Unable to determine MIME type of \"%s\"!\n"
+msgstr "%s: Tidak bisa menentukan jenis MIME dari \"%s\"!\n"
+
+#: ppdc/ppdc-file.cxx:50 ppdc/ppdmerge.cxx:99
+#, c-format
+msgid "%s: Unable to open %s: %s\n"
+msgstr "%s: Tidak bisa membuka %s: %s\n"
+
+#: scheduler/cupsfilter.c:603
+#, c-format
+msgid "%s: Unable to open PPD file: %s on line %d\n"
+msgstr "%s: Tidak bisa membuka berkas PPD: %s pada baris %d\n"
+
+#: ppdc/ppdmerge.cxx:113
+#, c-format
+msgid "%s: Unable to open PPD file: %s on line %d.\n"
+msgstr "%s: Tidak bisa membuka berkas PPD: %s pada baris %d.\n"
+
+#: scheduler/cupsfilter.c:384
+#, c-format
+msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"!\n"
+msgstr "%s: Tak dapat membaca basis data MIME dari \"%s\" atau \"%s\"!\n"
+
+#: berkeley/lpq.c:161 systemv/lpstat.c:565
+#, c-format
+msgid "%s: Unknown destination \"%s\"!\n"
+msgstr "%s: Tujuan tak dikenal \"%s\"!\n"
+
+#: scheduler/cupsfilter.c:430
+#, c-format
+msgid "%s: Unknown destination MIME type %s/%s!\n"
+msgstr "%s: Jenis MIME yang dituju tak dikenal %s/%s!\n"
+
+#: scheduler/cupsfilter.c:1312
+#, c-format
+msgid "%s: Unknown option '%c'!\n"
+msgstr "%s: Opsi tak dikenal '%c'!\n"
+
+#: scheduler/cupsfilter.c:411
+#, c-format
+msgid "%s: Unknown source MIME type %s/%s!\n"
+msgstr "%s: Sumber jenis MIME tak dikenal %s/%s!\n"
+
+#: berkeley/lpr.c:148
+#, c-format
+msgid ""
+"%s: Warning - '%c' format modifier not supported - output may not be "
+"correct!\n"
+msgstr ""
+"%s: Peringatan - format peubah '%c' tidak didukung - keluaran yang "
+"dihasilkan mungkin tak tepat!\n"
+
+#: systemv/lp.c:485
+#, c-format
+msgid "%s: Warning - character set option ignored!\n"
+msgstr "%s: Peringatan - opsi set karakter diabaikan!\n"
+
+#: systemv/lp.c:505
+#, c-format
+msgid "%s: Warning - content type option ignored!\n"
+msgstr "%s: Peringatan - opsi jenis konten diabaikan!\n"
+
+#: systemv/lp.c:182
+#, c-format
+msgid "%s: Warning - form option ignored!\n"
+msgstr "%s: Peringatan - opsi formulir diabaikan!\n"
+
+#: systemv/lp.c:390
+#, c-format
+msgid "%s: Warning - mode option ignored!\n"
+msgstr "%s: Peringatan - opsi modus diabaikan!\n"
+
+#: berkeley/lpq.c:245
+#, c-format
+msgid "%s: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"%s: kesalahan - nama variabel lingkungan %s merupakan tujuan yang tidak ada "
+"\"%s\"!\n"
+
+#: berkeley/lpr.c:162
+#, c-format
+msgid "%s: error - expected option=value after '-o' option!\n"
+msgstr "%s: kesalahan - diharapkan opsi=nilai usai opsi '-o'!\n"
+
+#: berkeley/lpq.c:250
+#, c-format
+msgid "%s: error - no default destination available.\n"
+msgstr "%s: kesalahan - tidak ada tujuan utama.\n"
+
+#: ppdc/sample.c:281
+msgid "-1"
+msgstr "-1"
+
+#: ppdc/sample.c:272
+msgid "-10"
+msgstr "-10"
+
+#: ppdc/sample.c:364
+msgid "-100"
+msgstr "-100"
+
+#: ppdc/sample.c:363
+msgid "-105"
+msgstr "-105"
+
+#: ppdc/sample.c:271
+msgid "-11"
+msgstr "-11"
+
+#: ppdc/sample.c:362
+msgid "-110"
+msgstr "-110"
+
+#: ppdc/sample.c:361
+msgid "-115"
+msgstr "-115"
+
+#: ppdc/sample.c:270
+msgid "-12"
+msgstr "-12"
+
+#: ppdc/sample.c:360
+msgid "-120"
+msgstr "-120"
+
+#: ppdc/sample.c:269
+msgid "-13"
+msgstr "-13"
+
+#: ppdc/sample.c:268
+msgid "-14"
+msgstr "-14"
+
+#: ppdc/sample.c:267
+msgid "-15"
+msgstr "-15"
+
+#: ppdc/sample.c:280
+msgid "-2"
+msgstr "-2"
+
+#: ppdc/sample.c:380
+msgid "-20"
+msgstr "-20"
+
+#: ppdc/sample.c:379
+msgid "-25"
+msgstr "-25"
+
+#: ppdc/sample.c:279
+msgid "-3"
+msgstr "-3"
+
+#: ppdc/sample.c:378
+msgid "-30"
+msgstr "-30"
+
+#: ppdc/sample.c:377
+msgid "-35"
+msgstr "-35"
+
+#: ppdc/sample.c:278
+msgid "-4"
+msgstr "-4"
+
+#: ppdc/sample.c:376
+msgid "-40"
+msgstr "-40"
+
+#: ppdc/sample.c:375
+msgid "-45"
+msgstr "-45"
+
+#: ppdc/sample.c:277
+msgid "-5"
+msgstr "-5"
+
+#: ppdc/sample.c:374
+msgid "-50"
+msgstr "-50"
+
+#: ppdc/sample.c:373
+msgid "-55"
+msgstr "-55"
+
+#: ppdc/sample.c:276
+msgid "-6"
+msgstr "-6"
+
+#: ppdc/sample.c:372
+msgid "-60"
+msgstr "-60"
+
+#: ppdc/sample.c:371
+msgid "-65"
+msgstr "-65"
+
+#: ppdc/sample.c:275
+msgid "-7"
+msgstr "-7"
+
+#: ppdc/sample.c:370
+msgid "-70"
+msgstr "-70"
+
+#: ppdc/sample.c:369
+msgid "-75"
+msgstr "-75"
+
+#: ppdc/sample.c:274
+msgid "-8"
+msgstr "-8"
+
+#: ppdc/sample.c:368
+msgid "-80"
+msgstr "-80"
+
+#: ppdc/sample.c:367
+msgid "-85"
+msgstr "-85"
+
+#: ppdc/sample.c:273
+msgid "-9"
+msgstr "-9"
+
+#: ppdc/sample.c:366
+msgid "-90"
+msgstr "-90"
+
+#: ppdc/sample.c:365
+msgid "-95"
+msgstr "-95"
+
+#: ppdc/sample.c:282
+msgid "0"
+msgstr "0"
+
+#: ppdc/sample.c:283
+msgid "1"
+msgstr "1"
+
+#: ppdc/sample.c:355
+msgid "1 inch/sec."
+msgstr "1 inci/det."
+
+#: ppdc/sample.c:144
+msgid "1.25x0.25\""
+msgstr "1,25x0,25\""
+
+#: ppdc/sample.c:145
+msgid "1.25x2.25\""
+msgstr "1,25x2,25\""
+
+#: ppdc/sample.c:403
+msgid "1.5 inch/sec."
+msgstr "1,5 inci/det."
+
+#: ppdc/sample.c:146
+msgid "1.50x0.25\""
+msgstr "1,50x0,25\""
+
+#: ppdc/sample.c:147
+msgid "1.50x0.50\""
+msgstr "1,50x0,50\""
+
+#: ppdc/sample.c:148
+msgid "1.50x1.00\""
+msgstr "1,50x1,00\""
+
+#: ppdc/sample.c:149
+msgid "1.50x2.00\""
+msgstr "1,50x2,00\""
+
+#: ppdc/sample.c:292
+msgid "10"
+msgstr "10"
+
+#: ppdc/sample.c:414
+msgid "10 inches/sec."
+msgstr "10 inci/det."
+
+#: ppdc/sample.c:1
+msgid "10 x 11\""
+msgstr "10 x 11\""
+
+#: ppdc/sample.c:2
+msgid "10 x 13\""
+msgstr "10 x 13\""
+
+#: ppdc/sample.c:3
+msgid "10 x 14\""
+msgstr "10 x 14\""
+
+#: ppdc/sample.c:394
+msgid "100"
+msgstr "100"
+
+#: ppdc/sample.c:305
+msgid "100 mm/sec."
+msgstr "100 mm/det."
+
+#: ppdc/sample.c:395
+msgid "105"
+msgstr "105"
+
+#: ppdc/sample.c:293
+msgid "11"
+msgstr "11"
+
+#: ppdc/sample.c:415
+msgid "11 inches/sec."
+msgstr "11 inci/det."
+
+#: ppdc/sample.c:396
+msgid "110"
+msgstr "110"
+
+#: ppdc/sample.c:397
+msgid "115"
+msgstr "115"
+
+#: ppdc/sample.c:294
+msgid "12"
+msgstr "12"
+
+#: ppdc/sample.c:416
+msgid "12 inches/sec."
+msgstr "12 inci/det."
+
+#: ppdc/sample.c:4
+msgid "12 x 11\""
+msgstr "12 x 11\""
+
+#: ppdc/sample.c:398
+msgid "120"
+msgstr "120"
+
+#: ppdc/sample.c:306
+msgid "120 mm/sec."
+msgstr "120 mm/det."
+
+#: ppdc/sample.c:215
+msgid "120x60dpi"
+msgstr "120x60dpi"
+
+#: ppdc/sample.c:221
+msgid "120x72dpi"
+msgstr "120x72dpi"
+
+#: ppdc/sample.c:295
+msgid "13"
+msgstr "13"
+
+#: ppdc/sample.c:204
+msgid "136dpi"
+msgstr "136dpi"
+
+#: ppdc/sample.c:296
+msgid "14"
+msgstr "14"
+
+#: ppdc/sample.c:297
+msgid "15"
+msgstr "15"
+
+#: ppdc/sample.c:299
+msgid "15 mm/sec."
+msgstr "15 mm/det."
+
+#: ppdc/sample.c:5
+msgid "15 x 11\""
+msgstr "15 x 11\""
+
+#: ppdc/sample.c:307
+msgid "150 mm/sec."
+msgstr "150 mm/det."
+
+#: ppdc/sample.c:254
+msgid "150dpi"
+msgstr "150dpi"
+
+#: ppdc/sample.c:339
+msgid "16"
+msgstr "16"
+
+#: ppdc/sample.c:340
+msgid "17"
+msgstr "17"
+
+#: ppdc/sample.c:341
+msgid "18"
+msgstr "18"
+
+#: ppdc/sample.c:216
+msgid "180dpi"
+msgstr "180dpi"
+
+#: ppdc/sample.c:342
+msgid "19"
+msgstr "19"
+
+#: ppdc/sample.c:284
+msgid "2"
+msgstr "2"
+
+#: ppdc/sample.c:356
+msgid "2 inches/sec."
+msgstr "2 inci/det."
+
+#: ppdc/sample.c:242
+msgid "2-Sided Printing"
+msgstr "2-Sisi Pencetakan"
+
+#: ppdc/sample.c:150
+msgid "2.00x0.37\""
+msgstr "2,00x0,37\""
+
+#: ppdc/sample.c:151
+msgid "2.00x0.50\""
+msgstr "2,00x0,50\""
+
+#: ppdc/sample.c:152
+msgid "2.00x1.00\""
+msgstr "2,00x1.00\""
+
+#: ppdc/sample.c:153
+msgid "2.00x1.25\""
+msgstr "2,00x1,25\""
+
+#: ppdc/sample.c:154
+msgid "2.00x2.00\""
+msgstr "2,00x2,00\""
+
+#: ppdc/sample.c:155
+msgid "2.00x3.00\""
+msgstr "2,00x3,00\""
+
+#: ppdc/sample.c:156
+msgid "2.00x4.00\""
+msgstr "2,00x4,00\""
+
+#: ppdc/sample.c:157
+msgid "2.00x5.50\""
+msgstr "2,00x5,50\""
+
+#: ppdc/sample.c:158
+msgid "2.25x0.50\""
+msgstr "2,25x0,50\""
+
+#: ppdc/sample.c:159
+msgid "2.25x1.25\""
+msgstr "2,25x1,25\""
+
+#: ppdc/sample.c:160
+msgid "2.25x4.00\""
+msgstr "2,25x4,00\""
+
+#: ppdc/sample.c:161
+msgid "2.25x5.50\""
+msgstr "2,25x5,50\""
+
+#: ppdc/sample.c:162
+msgid "2.38x5.50\""
+msgstr "2,38x5,50\""
+
+#: ppdc/sample.c:404
+msgid "2.5 inches/sec."
+msgstr "2,5 inci/det."
+
+#: ppdc/sample.c:163
+msgid "2.50x1.00\""
+msgstr "2,50x1,00\""
+
+#: ppdc/sample.c:164
+msgid "2.50x2.00\""
+msgstr "2,50x2,00\""
+
+#: ppdc/sample.c:165
+msgid "2.75x1.25\""
+msgstr "2,75x1,25\""
+
+#: ppdc/sample.c:166
+msgid "2.9 x 1\""
+msgstr "2,9 x 1\""
+
+#: ppdc/sample.c:343
+msgid "20"
+msgstr "20"
+
+#: ppdc/sample.c:300
+msgid "20 mm/sec."
+msgstr "20 mm/det."
+
+#: ppdc/sample.c:308
+msgid "200 mm/sec."
+msgstr "200 mm/det."
+
+#: ppdc/sample.c:205
+msgid "203dpi"
+msgstr "203dpi"
+
+#: ppdc/sample.c:344
+msgid "21"
+msgstr "21"
+
+#: ppdc/sample.c:345
+msgid "22"
+msgstr "22"
+
+#: ppdc/sample.c:346
+msgid "23"
+msgstr "23"
+
+#: ppdc/sample.c:347
+msgid "24"
+msgstr "24"
+
+#: ppdc/sample.c:213
+msgid "24-Pin Series"
+msgstr "Seri 24-Pin"
+
+#: ppdc/sample.c:222
+msgid "240x72dpi"
+msgstr "240x72dpi"
+
+#: ppdc/sample.c:348
+msgid "25"
+msgstr "25"
+
+#: ppdc/sample.c:309
+msgid "250 mm/sec."
+msgstr "250 mm/det."
+
+#: ppdc/sample.c:349
+msgid "26"
+msgstr "26"
+
+#: ppdc/sample.c:350
+msgid "27"
+msgstr "27"
+
+#: ppdc/sample.c:351
+msgid "28"
+msgstr "28"
+
+#: ppdc/sample.c:352
+msgid "29"
+msgstr "29"
+
+#: ppdc/sample.c:285
+msgid "3"
+msgstr "3"
+
+#: ppdc/sample.c:357
+msgid "3 inches/sec."
+msgstr "3 inci/det."
+
+#: ppdc/sample.c:167
+msgid "3.00x1.00\""
+msgstr "3,00x1,00\""
+
+#: ppdc/sample.c:168
+msgid "3.00x1.25\""
+msgstr "3,00x1,25\""
+
+#: ppdc/sample.c:169
+msgid "3.00x2.00\""
+msgstr "3,00x2,00\""
+
+#: ppdc/sample.c:170
+msgid "3.00x3.00\""
+msgstr "3,00x3,00\""
+
+#: ppdc/sample.c:171
+msgid "3.00x5.00\""
+msgstr "3,00x5,00\""
+
+#: ppdc/sample.c:172
+msgid "3.25x2.00\""
+msgstr "3,25x2,00\""
+
+#: ppdc/sample.c:173
+msgid "3.25x5.00\""
+msgstr "3,25x5,00\""
+
+#: ppdc/sample.c:174
+msgid "3.25x5.50\""
+msgstr "3,25x5,50\""
+
+#: ppdc/sample.c:175
+msgid "3.25x5.83\""
+msgstr "3,25x5,83\""
+
+#: ppdc/sample.c:176
+msgid "3.25x7.83\""
+msgstr "3,25x7,83\""
+
+#: ppdc/sample.c:134
+msgid "3.5\" Disk"
+msgstr "Diska 3,5\""
+
+#: ppdc/sample.c:143
+msgid "3.5\" Disk - 2 1/8 x 2 3/4\""
+msgstr "Diska 3.5\" - 2 1/8 x 2 3/4\""
+
+#: ppdc/sample.c:177
+msgid "3.50x1.00\""
+msgstr "3,50x1,00\""
+
+#: ppdc/sample.c:353
+msgid "30"
+msgstr "30"
+
+#: ppdc/sample.c:301
+msgid "30 mm/sec."
+msgstr "30 mm/det."
+
+#: ppdc/sample.c:310
+msgid "300 mm/sec."
+msgstr "300 mm/det."
+
+#: ppdc/sample.c:206
+msgid "300dpi"
+msgstr "300dpi"
+
+#: ppdc/sample.c:381
+msgid "35"
+msgstr "35"
+
+#: ppdc/sample.c:218
+msgid "360dpi"
+msgstr "360dpi"
+
+#: ppdc/sample.c:217
+msgid "360x180dpi"
+msgstr "360x180dpi"
+
+#: ppdc/sample.c:286
+msgid "4"
+msgstr "4"
+
+#: ppdc/sample.c:358
+msgid "4 inches/sec."
+msgstr "4 inci/det."
+
+#: ppdc/sample.c:178
+msgid "4.00x1.00\""
+msgstr "4,00x1,00\""
+
+#: ppdc/sample.c:186
+msgid "4.00x13.00\""
+msgstr "4,00x13,00\""
+
+#: ppdc/sample.c:179
+msgid "4.00x2.00\""
+msgstr "4,00x2,00\""
+
+#: ppdc/sample.c:180
+msgid "4.00x2.50\""
+msgstr "4,00x2,50\""
+
+#: ppdc/sample.c:181
+msgid "4.00x3.00\""
+msgstr "4,00x3,00\""
+
+#: ppdc/sample.c:182
+msgid "4.00x4.00\""
+msgstr "4,00x4,00\""
+
+#: ppdc/sample.c:183
+msgid "4.00x5.00\""
+msgstr "4,00x5,00\""
+
+#: ppdc/sample.c:184
+msgid "4.00x6.00\""
+msgstr "4,00x6,00\""
+
+#: ppdc/sample.c:185
+msgid "4.00x6.50\""
+msgstr "4,00x6,50\""
+
+#: ppdc/sample.c:382
+msgid "40"
+msgstr "40"
+
+#: ppdc/sample.c:302
+msgid "40 mm/sec."
+msgstr "40 mm/det."
+
+#: ppdc/sample.c:383
+msgid "45"
+msgstr "45"
+
+#: ppdc/sample.c:287
+msgid "5"
+msgstr "5"
+
+#: ppdc/sample.c:408
+msgid "5 inches/sec."
+msgstr "5 inci/det."
+
+#: ppdc/sample.c:384
+msgid "50"
+msgstr "50"
+
+#: ppdc/sample.c:385
+msgid "55"
+msgstr "55"
+
+#: ppdc/sample.c:288
+msgid "6"
+msgstr "6"
+
+#: ppdc/sample.c:409
+msgid "6 inches/sec."
+msgstr "6 inci/det."
+
+#: ppdc/sample.c:187
+msgid "6.00x1.00\""
+msgstr "6,00x1,00\""
+
+#: ppdc/sample.c:188
+msgid "6.00x2.00\""
+msgstr "6,00x2,00\""
+
+#: ppdc/sample.c:189
+msgid "6.00x3.00\""
+msgstr "6,00x3,00\""
+
+#: ppdc/sample.c:190
+msgid "6.00x4.00\""
+msgstr "6,00x4,00\""
+
+#: ppdc/sample.c:191
+msgid "6.00x5.00\""
+msgstr "6,00x5,00\""
+
+#: ppdc/sample.c:192
+msgid "6.00x6.00\""
+msgstr "6,00x6,00\""
+
+#: ppdc/sample.c:193
+msgid "6.00x6.50\""
+msgstr "6,00x6,50\""
+
+#: ppdc/sample.c:386
+msgid "60"
+msgstr "60"
+
+#: ppdc/sample.c:303
+msgid "60 mm/sec."
+msgstr "60 mm/det."
+
+#: ppdc/sample.c:233
+msgid "600dpi"
+msgstr "600dpi"
+
+#: ppdc/sample.c:214
+msgid "60dpi"
+msgstr "60dpi"
+
+#: ppdc/sample.c:220
+msgid "60x720dpi"
+msgstr "60x720dpi"
+
+#: ppdc/sample.c:387
+msgid "65"
+msgstr "65"
+
+#: ppdc/sample.c:289
+msgid "7"
+msgstr "7"
+
+#: ppdc/sample.c:411
+msgid "7 inches/sec."
+msgstr "7 inci/det."
+
+#: ppdc/sample.c:6
+msgid "7 x 9\""
+msgstr "7 x 9\""
+
+#: ppdc/sample.c:388
+msgid "70"
+msgstr "70"
+
+#: ppdc/sample.c:224
+msgid "720dpi"
+msgstr "720dpi"
+
+#: ppdc/sample.c:389
+msgid "75"
+msgstr "75"
+
+#: ppdc/sample.c:290
+msgid "8"
+msgstr "8"
+
+#: ppdc/sample.c:412
+msgid "8 inches/sec."
+msgstr "8 inci/det."
+
+#: ppdc/sample.c:7
+msgid "8 x 10\""
+msgstr "8 x 10\""
+
+#: ppdc/sample.c:194
+msgid "8.00x1.00\""
+msgstr "8,00x1,00\""
+
+#: ppdc/sample.c:195
+msgid "8.00x2.00\""
+msgstr "8,00x2,00\""
+
+#: ppdc/sample.c:196
+msgid "8.00x3.00\""
+msgstr "8,00x3,00\""
+
+#: ppdc/sample.c:197
+msgid "8.00x4.00\""
+msgstr "8,00x4,00\""
+
+#: ppdc/sample.c:198
+msgid "8.00x5.00\""
+msgstr "8,00x5,00\""
+
+#: ppdc/sample.c:199
+msgid "8.00x6.00\""
+msgstr "8,00x6,00\""
+
+#: ppdc/sample.c:200
+msgid "8.00x6.50\""
+msgstr "8,00x6,50\""
+
+#: ppdc/sample.c:390
+msgid "80"
+msgstr "80"
+
+#: ppdc/sample.c:304
+msgid "80 mm/sec."
+msgstr "80 mm/det."
+
+#: ppdc/sample.c:391
+msgid "85"
+msgstr "85"
+
+#: ppdc/sample.c:291
+msgid "9"
+msgstr "9"
+
+#: ppdc/sample.c:413
+msgid "9 inches/sec."
+msgstr "9 inci/det."
+
+#: ppdc/sample.c:8
+msgid "9 x 11\""
+msgstr "9 x 11\""
+
+#: ppdc/sample.c:9
+msgid "9 x 12\""
+msgstr "9 x 12\""
+
+#: ppdc/sample.c:219
+msgid "9-Pin Series"
+msgstr "Seri 9-Pin"
+
+#: ppdc/sample.c:392
+msgid "90"
+msgstr "90"
+
+#: ppdc/sample.c:393
+msgid "95"
+msgstr "95"
+
+#: berkeley/lpc.c:218
+msgid "?Invalid help command unknown\n"
+msgstr ""
+
+#: cgi-bin/admin.c:2343
+msgid "A Samba password is required to export printer drivers!"
+msgstr "Diperlukan sandi Samba untuk mengekspor penggerak pencetak!"
+
+#: cgi-bin/admin.c:2339
+msgid "A Samba username is required to export printer drivers!"
+msgstr "Diperlukan nama pengguna Samba untuk mengekspor penggerak pencetak!"
+
+#: scheduler/ipp.c:2390
+#, c-format
+msgid "A class named \"%s\" already exists!"
+msgstr "Kelas bernama \"%s\" sudah ada!"
+
+#: scheduler/ipp.c:1013
+#, c-format
+msgid "A printer named \"%s\" already exists!"
+msgstr "Pencetak bernama \"%s\" sudah ada!"
+
+#: ppdc/sample.c:10
+msgid "A0"
+msgstr "A0"
+
+#: ppdc/sample.c:11
+msgid "A1"
+msgstr "A1"
+
+#: ppdc/sample.c:24
+msgid "A10"
+msgstr "A10"
+
+#: ppdc/sample.c:12
+msgid "A2"
+msgstr "A2"
+
+#: ppdc/sample.c:13
+msgid "A3"
+msgstr "A3"
+
+#: ppdc/sample.c:14
+msgid "A3 (Oversize)"
+msgstr "A3 (Besar)"
+
+#: ppdc/sample.c:15
+msgid "A4"
+msgstr "A4"
+
+#: ppdc/sample.c:16
+msgid "A4 (Oversize)"
+msgstr "A4 (Besar)"
+
+#: ppdc/sample.c:17
+msgid "A4 (Small)"
+msgstr "A4 (Kecil)"
+
+#: ppdc/sample.c:18
+msgid "A5"
+msgstr "A5"
+
+#: ppdc/sample.c:19
+msgid "A5 (Oversize)"
+msgstr "A5 (Besar)"
+
+#: ppdc/sample.c:20
+msgid "A6"
+msgstr "A6"
+
+#: ppdc/sample.c:21
+msgid "A7"
+msgstr "A7"
+
+#: ppdc/sample.c:22
+msgid "A8"
+msgstr "A8"
+
+#: ppdc/sample.c:23
+msgid "A9"
+msgstr "A9"
+
+#: ppdc/sample.c:25
+msgid "ANSI A"
+msgstr "ANSI A"
+
+#: ppdc/sample.c:26
+msgid "ANSI B"
+msgstr "ANSI B"
+
+#: ppdc/sample.c:27
+msgid "ANSI C"
+msgstr "ANSI C"
+
+#: ppdc/sample.c:28
+msgid "ANSI D"
+msgstr "ANSI D"
+
+#: ppdc/sample.c:29
+msgid "ANSI E"
+msgstr "ANSI E"
+
+#: ppdc/sample.c:30
+msgid "ARCH A"
+msgstr "ARCH A"
+
+#: ppdc/sample.c:31
+msgid "ARCH B"
+msgstr "ARCH B"
+
+#: ppdc/sample.c:32
+msgid "ARCH C"
+msgstr "ARCH C"
+
+#: ppdc/sample.c:33
+msgid "ARCH D"
+msgstr "ARCH D"
+
+#: ppdc/sample.c:34
+msgid "ARCH E"
+msgstr "ARCH E"
+
+#: cgi-bin/classes.c:154 cgi-bin/printers.c:157
+msgid "Accept Jobs"
+msgstr "Terima Tugas"
+
+#: cups/http-support.c:1196
+msgid "Accepted"
+msgstr "Diterima"
+
+#: cgi-bin/admin.c:480
+msgid "Add Class"
+msgstr "Tambah Kelas"
+
+#: cgi-bin/admin.c:778
+msgid "Add Printer"
+msgstr "Tambah Pencetak"
+
+#: cgi-bin/admin.c:355 cgi-bin/admin.c:388 cgi-bin/admin.c:436
+#: cgi-bin/admin.c:446
+msgid "Add RSS Subscription"
+msgstr "Tambah Subskripsi RSS"
+
+#: ppdc/sample.c:126
+msgid "Address"
+msgstr "Alamat"
+
+#: ppdc/sample.c:135
+msgid "Address - 1 1/8 x 3 1/2\""
+msgstr "Alamat - 1 1/8 x 3 1/2\""
+
+#: cgi-bin/admin.c:187 cgi-bin/admin.c:218 cgi-bin/admin.c:2761
+msgid "Administration"
+msgstr "Administrasi"
+
+#: ppdc/sample.c:400
+msgid "Always"
+msgstr "Selalu"
+
+#: backend/socket.c:126
+msgid "AppSocket/HP JetDirect"
+msgstr "AppSocket/HP JetDirect"
+
+#: ppdc/sample.c:421
+msgid "Applicator"
+msgstr "Aplikator"
+
+#: scheduler/ipp.c:1135
+#, c-format
+msgid "Attempt to set %s printer-state to bad value %d!"
+msgstr ""
+
+#: scheduler/ipp.c:341
+#, c-format
+msgid "Attribute groups are out of order (%x < %x)!"
+msgstr "Kelompok atribut di luar jangkauan (%x < %x)!"
+
+#: ppdc/sample.c:35
+msgid "B0"
+msgstr "B0"
+
+#: ppdc/sample.c:37
+msgid "B1"
+msgstr "B1"
+
+#: ppdc/sample.c:36
+msgid "B10"
+msgstr "B10"
+
+#: ppdc/sample.c:38
+msgid "B2"
+msgstr "B2"
+
+#: ppdc/sample.c:39
+msgid "B3"
+msgstr "B3"
+
+#: ppdc/sample.c:40
+msgid "B4"
+msgstr "B4"
+
+#: ppdc/sample.c:41
+msgid "B5"
+msgstr "B5"
+
+#: ppdc/sample.c:42
+msgid "B6"
+msgstr "B6"
+
+#: ppdc/sample.c:43
+msgid "B7"
+msgstr "B7"
+
+#: ppdc/sample.c:44
+msgid "B8"
+msgstr "B8"
+
+#: ppdc/sample.c:45
+msgid "B9"
+msgstr "B9"
+
+#: cups/dest.c:317
+msgid "Bad NULL dests pointer"
+msgstr ""
+
+#: cups/ppd.c:342
+msgid "Bad OpenGroup"
+msgstr "OpenGroup Jelek"
+
+#: cups/ppd.c:344
+msgid "Bad OpenUI/JCLOpenUI"
+msgstr "OpenUI/JCLOpenUI Jelek"
+
+#: cups/ppd.c:346
+msgid "Bad OrderDependency"
+msgstr "OrderDependency Jelek"
+
+#: cups/http-support.c:1211
+msgid "Bad Request"
+msgstr "Permintaan Jelek"
+
+#: cups/snmp.c:1003
+msgid "Bad SNMP version number"
+msgstr "Nomor versi SNMP jelek"
+
+#: cups/ppd.c:347
+msgid "Bad UIConstraints"
+msgstr "UIConstraints Jelek"
+
+#: scheduler/ipp.c:1433
+#, c-format
+msgid "Bad copies value %d."
+msgstr "Nilai rangkap %d jelek."
+
+#: cups/ppd.c:355
+msgid "Bad custom parameter"
+msgstr "Parameter ubahan jelek"
+
+#: cups/http-support.c:1339
+#, c-format
+msgid "Bad device URI \"%s\"!\n"
+msgstr "URI perangkat \"%s\" jelek!\n"
+
+#: scheduler/ipp.c:2508
+#, c-format
+msgid "Bad device-uri \"%s\"!"
+msgstr "device-uri \"%s\" jelek!"
+
+#: scheduler/ipp.c:2548
+#, c-format
+msgid "Bad device-uri scheme \"%s\"!"
+msgstr "Skema device-uri \"%s\" jelek!"
+
+#: scheduler/ipp.c:9835 scheduler/ipp.c:11314
+#, c-format
+msgid "Bad document-format \"%s\"!"
+msgstr "document-format \"%s\" jelek!"
+
+#: cups/util.c:930
+msgid "Bad filename buffer!"
+msgstr "Nama berkas penyangga jelek!"
+
+#: ppdc/ppdc-import.cxx:265
+#, c-format
+msgid "Bad font attribute: %s\n"
+msgstr "Atribut huruf jelek: %s\n"
+
+#: scheduler/ipp.c:10431
+msgid "Bad job-priority value!"
+msgstr "Nilai job-priority jelek!"
+
+#: scheduler/ipp.c:1463
+#, c-format
+msgid "Bad job-sheets value \"%s\"!"
+msgstr "Nilai job-sheets \"%s\" jelek!"
+
+#: scheduler/ipp.c:1447
+msgid "Bad job-sheets value type!"
+msgstr "Jenis nilai job-sheets jelek!"
+
+#: scheduler/ipp.c:10461
+msgid "Bad job-state value!"
+msgstr "Nilai job-state jelek!"
+
+#: scheduler/ipp.c:3663 scheduler/ipp.c:4022 scheduler/ipp.c:6650
+#: scheduler/ipp.c:6792 scheduler/ipp.c:8067 scheduler/ipp.c:8322
+#: scheduler/ipp.c:9166 scheduler/ipp.c:9392 scheduler/ipp.c:9747
+#: scheduler/ipp.c:10323
+#, c-format
+msgid "Bad job-uri attribute \"%s\"!"
+msgstr "Atribut job-uri \"%s\" jelek!"
+
+#: scheduler/ipp.c:2129 scheduler/ipp.c:6197
+#, c-format
+msgid "Bad notify-pull-method \"%s\"!"
+msgstr "notify-pull-method \"%s\" jelek!"
+
+#: scheduler/ipp.c:2093 scheduler/ipp.c:6161
+#, c-format
+msgid "Bad notify-recipient-uri URI \"%s\"!"
+msgstr "URI notify-recipient-uri \"%s\" jelek!"
+
+#: scheduler/ipp.c:1479
+#, c-format
+msgid "Bad number-up value %d."
+msgstr "Nilai number-up %d jelek."
+
+#: cups/adminutil.c:303
+#, c-format
+msgid "Bad option + choice on line %d!"
+msgstr "Opsi + yang dipilih pada baris %d jelek!"
+
+#: scheduler/ipp.c:1496
+#, c-format
+msgid "Bad page-ranges values %d-%d."
+msgstr "Nilai page-ranges %d-%d jelek."
+
+#: scheduler/ipp.c:2592
+#, c-format
+msgid "Bad port-monitor \"%s\"!"
+msgstr "port-monitor \"%s\" jelek!"
+
+#: scheduler/ipp.c:2640
+#, c-format
+msgid "Bad printer-state value %d!"
+msgstr "Nilai printer-state %d jelek!"
+
+#: scheduler/ipp.c:309
+#, c-format
+msgid "Bad request ID %d!"
+msgstr "ID permintaan %d jelek!"
+
+#: scheduler/ipp.c:294
+#, c-format
+msgid "Bad request version number %d.%d!"
+msgstr ""
+
+#: cgi-bin/admin.c:1385
+msgid "Bad subscription ID!"
+msgstr "ID subskripsi jelek!"
+
+#: cgi-bin/admin.c:3301 cgi-bin/admin.c:3524
+msgid "Banners"
+msgstr "Pataka"
+
+#: filter/bannertops.c:666
+msgid "Billing Information: "
+msgstr "Informasi Tagihan: "
+
+#: ppdc/sample.c:258
+msgid "Bond Paper"
+msgstr "Kertas Surat"
+
+#: ppdc/sample.c:56
+msgid "C0 Envelope"
+msgstr "C0 Amplop"
+
+#: ppdc/sample.c:57
+msgid "C1 Envelope"
+msgstr "C1 Amplop"
+
+#: ppdc/sample.c:58
+msgid "C2 Envelope"
+msgstr "C2 Amplop"
+
+#: ppdc/sample.c:59
+msgid "C3 Envelope"
+msgstr "C3 Amplop"
+
+#: ppdc/sample.c:46
+msgid "C4"
+msgstr "C4"
+
+#: ppdc/sample.c:60
+msgid "C4 Envelope"
+msgstr "C4 Amplop"
+
+#: ppdc/sample.c:47
+msgid "C5"
+msgstr "C5"
+
+#: ppdc/sample.c:61
+msgid "C5 Envelope"
+msgstr "C5 Amplop"
+
+#: ppdc/sample.c:48
+msgid "C6"
+msgstr "C6"
+
+#: ppdc/sample.c:63
+msgid "C6 Envelope"
+msgstr "C6 Amplop"
+
+#: ppdc/sample.c:62
+msgid "C65 Envelope"
+msgstr "C65 Amplop"
+
+#: ppdc/sample.c:64
+msgid "C7 Envelope"
+msgstr "C7 Amplop"
+
+#: ppdc/sample.c:226
+msgid "CMYK"
+msgstr "CMYK"
+
+#: ppdc/sample.c:334
+msgid "CPCL Label Printer"
+msgstr ""
+
+#: cgi-bin/admin.c:1386 cgi-bin/admin.c:1425 cgi-bin/admin.c:1435
+msgid "Cancel RSS Subscription"
+msgstr "Batal Subskripsi RSS"
+
+#: cgi-bin/admin.c:1608 cgi-bin/admin.c:1772 cgi-bin/admin.c:1784
+#: cgi-bin/admin.c:1795
+msgid "Change Settings"
+msgstr "Ubah Pengaturan"
+
+#: scheduler/ipp.c:2141 scheduler/ipp.c:6209
+#, c-format
+msgid "Character set \"%s\" not supported!"
+msgstr "Set karakter \"%s\" tidak didukung!"
+
+#: ppdc/sample.c:65
+msgid "Chou3 Envelope"
+msgstr "Chou3 Amplop"
+
+#: ppdc/sample.c:66
+msgid "Chou4 Envelope"
+msgstr "Chou4 Amplop"
+
+#: cgi-bin/classes.c:180 cgi-bin/classes.c:307
+msgid "Classes"
+msgstr "Kelas"
+
+#: cgi-bin/printers.c:167
+msgid "Clean Print Heads"
+msgstr "Bersihkan Kepala Pencetak"
+
+#: ppdc/sample.c:253
+msgid "Color"
+msgstr "Warna"
+
+#: ppdc/sample.c:225
+msgid "Color Mode"
+msgstr "Modus Warna"
+
+#: berkeley/lpc.c:209
+msgid ""
+"Commands may be abbreviated. Commands are:\n"
+"\n"
+"exit help quit status ?\n"
+msgstr ""
+"Perintah bisa saja singkat. Perintahnya:\n"
+"\n"
+"exit help quit status ?\n"
+
+#: cups/snmp.c:1007
+msgid "Community name uses indefinite length"
+msgstr "Nama komunitas memiliki panjang tak terdefinisi"
+
+#: cups/http-support.c:1184
+msgid "Continue"
+msgstr "Lanjut"
+
+#: ppdc/sample.c:336
+msgid "Continuous"
+msgstr "Terus-menerus"
+
+#: scheduler/ipp.c:8616 scheduler/ipp.c:8632 scheduler/ipp.c:9851
+#, c-format
+msgid "Could not scan type \"%s\"!"
+msgstr "Tidak akan memindai jenis \"%s\"!"
+
+#: cups/localize.c:319
+msgid "Cover open."
+msgstr "Penutup terbuka."
+
+#: cups/http-support.c:1193
+msgid "Created"
+msgstr "Dibuat"
+
+#: filter/bannertops.c:854
+msgid "Created On: "
+msgstr "Dibuat Pada: "
+
+#: cups/ppd.c:1072 cups/ppd.c:1112 cups/ppd.c:1326 cups/ppd.c:1429
+msgid "Custom"
+msgstr "Ubahan"
+
+#: ppdc/sample.c:330
+msgid "CustominCutInterval"
+msgstr "CustominCutInterval"
+
+#: ppdc/sample.c:328
+msgid "CustominTearInterval"
+msgstr "CustominTearInterval"
+
+#: ppdc/sample.c:314
+msgid "Cut"
+msgstr "Potong"
+
+#: ppdc/sample.c:422
+msgid "Cutter"
+msgstr "Pemotong"
+
+#: ppdc/sample.c:49
+msgid "DL"
+msgstr "DL"
+
+#: ppdc/sample.c:67
+msgid "DL Envelope"
+msgstr "DL Amplop"
+
+#: ppdc/sample.c:211
+msgid "Dark"
+msgstr "Gelap"
+
+#: ppdc/sample.c:207
+msgid "Darkness"
+msgstr "Gelap"
+
+#: cgi-bin/admin.c:2068 cgi-bin/admin.c:2079 cgi-bin/admin.c:2124
+msgid "Delete Class"
+msgstr "Hapus Kelas"
+
+#: cgi-bin/admin.c:2153 cgi-bin/admin.c:2164 cgi-bin/admin.c:2209
+msgid "Delete Printer"
+msgstr "Hapus Pencetak"
+
+#: filter/bannertops.c:735
+msgid "Description: "
+msgstr "Deskripsi: "
+
+#: ppdc/sample.c:252
+msgid "DeskJet Series"
+msgstr "Seri Deskjet"
+
+#: scheduler/ipp.c:1399
+#, c-format
+msgid "Destination \"%s\" is not accepting jobs."
+msgstr "Tujuan \"%s\" bukanlah tugas yang diterima."
+
+#: cups/localize.c:353
+msgid "Developer almost empty."
+msgstr "Developer hampir kosong."
+
+#: cups/localize.c:355
+msgid "Developer empty!"
+msgstr "Developer kosong!"
+
+#: systemv/lpinfo.c:305
+#, c-format
+msgid ""
+"Device: uri = %s\n"
+" class = %s\n"
+" info = %s\n"
+" make-and-model = %s\n"
+" device-id = %s\n"
+" location = %s\n"
+msgstr ""
+"Perangkat: uri = %s\n"
+" class = %s\n"
+" info = %s\n"
+" make-and-model = %s\n"
+" device-id = %s\n"
+" location = %s\n"
+
+#: ppdc/sample.c:407
+msgid "Direct Thermal Media"
+msgstr "Media Termal Langsung"
+
+#: ppdc/sample.c:316
+msgid "Disabled"
+msgstr "Dinonaktifkan"
+
+#: scheduler/ipp.c:6697
+#, c-format
+msgid "Document %d not found in job %d."
+msgstr "Dokumen %d tidak ditemukan di tugas %d."
+
+#: cups/localize.c:323
+msgid "Door open."
+msgstr "Pintu terbuka."
+
+#: ppdc/sample.c:50
+msgid "Double Postcard"
+msgstr "Kartu Pos Ganda"
+
+#: filter/bannertops.c:820
+msgid "Driver Name: "
+msgstr "Nama Penggerak: "
+
+#: filter/bannertops.c:831
+msgid "Driver Version: "
+msgstr "Versi Penggerak: "
+
+#: ppdc/sample.c:247
+msgid "Duplexer"
+msgstr "Pendupleks"
+
+#: ppdc/sample.c:201
+msgid "Dymo"
+msgstr "Dymo"
+
+#: filter/pstops.c:446
+#, c-format
+msgid "EMERG: Unable to allocate memory for page info: %s\n"
+msgstr "EMERG: Tidak bisa mengalokasikan memori untuk halaman info: %s\n"
+
+#: filter/pstops.c:438
+#, c-format
+msgid "EMERG: Unable to allocate memory for pages array: %s\n"
+msgstr "EMERG: Tidak bisa mengalokasikan memori untuk larik halaman: %s\n"
+
+#: ppdc/sample.c:402
+msgid "EPL1 Label Printer"
+msgstr "EPL1 Pencetak Label"
+
+#: ppdc/sample.c:405
+msgid "EPL2 Label Printer"
+msgstr "EPL2 Pencetak Label"
+
+#: driver/rastertoescpx.c:1776 driver/rastertopclx.c:1801
+#, c-format
+msgid "ERROR: %s job-id user title copies options [file]\n"
+msgstr ""
+
+#: filter/pstops.c:707
+#, c-format
+msgid "ERROR: Bad %%BoundingBox: comment seen!\n"
+msgstr ""
+
+#: filter/pstops.c:2220
+#, c-format
+msgid "ERROR: Bad %%IncludeFeature: comment!\n"
+msgstr ""
+
+#: filter/pstops.c:1286 filter/pstops.c:1292
+#, c-format
+msgid "ERROR: Bad %%Page: comment in file!\n"
+msgstr ""
+
+#: filter/pstops.c:1363
+#, c-format
+msgid "ERROR: Bad %%PageBoundingBox: comment in file!\n"
+msgstr ""
+
+#: backend/scsi-irix.c:100 backend/scsi-linux.c:114
+#, c-format
+msgid "ERROR: Bad SCSI device file \"%s\"!\n"
+msgstr "ERROR: Berkas perangkat SCSI \"%s\" jelek!\n"
+
+#: filter/pstext.c:276 filter/texttops.c:284 filter/texttops.c:295
+#, c-format
+msgid "ERROR: Bad charset file %s\n"
+msgstr "ERROR: Berkas set karakter %s jelek\n"
+
+#: filter/texttops.c:453
+#, c-format
+msgid "ERROR: Bad charset type %s\n"
+msgstr "ERROR: Jenis set karakter %s jelek\n"
+
+#: filter/textcommon.c:613
+#, c-format
+msgid "ERROR: Bad columns value %d!\n"
+msgstr "ERROR: Nilai kolom %d jelek!\n"
+
+#: filter/textcommon.c:624
+#, c-format
+msgid "ERROR: Bad cpi value %f!\n"
+msgstr "ERROR: Nilai cpi %f jelek!\n"
+
+#: filter/pstext.c:320 filter/pstext.c:357 filter/texttops.c:348
+#: filter/texttops.c:384
+#, c-format
+msgid "ERROR: Bad font description line: %s\n"
+msgstr "ERROR: Baris deskripsi huruf: %s jelek\n"
+
+#: filter/textcommon.c:635
+#, c-format
+msgid "ERROR: Bad lpi value %f!\n"
+msgstr "ERROR: Nilai lpi %f jelek!\n"
+
+#: filter/imagetoraster.c:458
+msgid "ERROR: Bad page setup!\n"
+msgstr "ERROR: Pengaturan halaman jelek!\n"
+
+#: filter/pstext.c:334 filter/texttops.c:361
+#, c-format
+msgid "ERROR: Bad text direction %s\n"
+msgstr "ERROR: Arah teks %s jelek\n"
+
+#: filter/pstext.c:371 filter/texttops.c:397
+#, c-format
+msgid "ERROR: Bad text width %s\n"
+msgstr "ERROR: Lebar teks %s jelek\n"
+
+#: backend/ipp.c:749
+msgid "ERROR: Destination printer does not exist!\n"
+msgstr "ERROR: Pencetak yang dituju tidak ada!\n"
+
+#: filter/pstops.c:696
+#, c-format
+msgid "ERROR: Duplicate %%BoundingBox: comment seen!\n"
+msgstr ""
+
+#: filter/pstops.c:648
+#, c-format
+msgid "ERROR: Duplicate %%Pages: comment seen!\n"
+msgstr ""
+
+#: backend/ipp.c:468 filter/pstops.c:303
+msgid "ERROR: Empty print file!\n"
+msgstr "ERROR: Mencetak berkas kosong!\n"
+
+#: backend/pap.c:838
+#, c-format
+msgid "ERROR: Error %d sending PAPSendData request: %s\n"
+msgstr "ERROR: Kesalahan %d mengirim permintaan PAPSendData: %s\n"
+
+#: ppdc/ppdc-catalog.cxx:338 ppdc/ppdc-catalog.cxx:350
+#, c-format
+msgid "ERROR: Expected quoted string on line %d of %s!\n"
+msgstr ""
+
+#: backend/usb-darwin.c:377 backend/usb-darwin.c:435 backend/usb-darwin.c:500
+#: backend/usb-darwin.c:518
+msgid "ERROR: Fatal USB error!\n"
+msgstr "ERROR: Kesalahan fatal USB!\n"
+
+#: filter/hpgl-input.c:139
+msgid "ERROR: Invalid HP-GL/2 command seen, unable to print file!\n"
+msgstr "ERROR: Ketidaksahan HP-GL/2 komentar terlihat, tak bisa mencetak berkas!\n"
+
+#: filter/pstops.c:1771
+#, c-format
+msgid "ERROR: Missing %%EndProlog!\n"
+msgstr ""
+
+#: filter/pstops.c:1842
+#, c-format
+msgid "ERROR: Missing %%EndSetup!\n"
+msgstr ""
+
+#: filter/bannertops.c:222
+#, c-format
+msgid "ERROR: Missing value on line %d of banner file!\n"
+msgstr "ERROR: Kehilangan nilai pada baris %d dari berkas pataka (banner)!\n"
+
+#: ppdc/ppdc-catalog.cxx:415
+#, c-format
+msgid "ERROR: Need a msgid line before any translation strings on line %d of %s!\n"
+msgstr "ERROR: Memerlukan baris msgid sebelum string translasi pada baris %d dari %s!\n"
+
+#: filter/pstops.c:759
+#, c-format
+msgid "ERROR: No %%BoundingBox: comment in header!\n"
+msgstr ""
+
+#: filter/pstops.c:762
+#, c-format
+msgid "ERROR: No %%Pages: comment in header!\n"
+msgstr ""
+
+#: backend/usb.c:200
+msgid ""
+"ERROR: No device URI found in argv[0] or in DEVICE_URI environment "
+"variable!\n"
+msgstr ""
+"ERROR: Tak ditemukan URI perangkat pada argv[0] atau dalam variabel "
+"lingkungan DEVICE_URI!\n"
+
+#: filter/pstext.c:433
+#, c-format
+msgid "ERROR: No fonts in charset file %s\n"
+msgstr "ERROR: Tidak ada huruf pada berkas set karakter %s\n"
+
+#: driver/rastertoescpx.c:1906 driver/rastertopclx.c:1931
+#: filter/rastertoepson.c:1129 filter/rastertohp.c:857
+#: filter/rastertolabel.c:1283
+msgid "ERROR: No pages found!\n"
+msgstr "ERROR: Tidak ketemu halaman!\n"
+
+#: backend/runloop.c:348
+msgid "ERROR: Out of paper!\n"
+msgstr "ERROR: Kehabisan kertas!\n"
+
+#: backend/ipp.c:1754
+msgid "ERROR: PRINTER environment variable not defined!\n"
+msgstr "ERROR: Variabel lingkungan PRINTER belum ditentukan!\n"
+
+#: backend/ipp.c:1066
+#, c-format
+msgid "ERROR: Print file was not accepted (%s)!\n"
+msgstr "ERROR: Berkas cetak tidak diterima (%s)!\n"
+
+#: backend/pap.c:521
+msgid "ERROR: Printer not responding\n"
+msgstr "ERROR: Pencetak tidak merespon\n"
+
+#: backend/ipp.c:581 backend/ipp.c:716 backend/lpd.c:848 backend/socket.c:310
+msgid "ERROR: Printer not responding!\n"
+msgstr "ERROR: Pencetak tidak merespon!\n"
+
+#: backend/pap.c:858
+msgid "ERROR: Printer sent unexpected EOF\n"
+msgstr "ERROR: Pencetak mengirim EOF yang tak diharapkan\n"
+
+#: backend/lpd.c:1052 backend/lpd.c:1199
+#, c-format
+msgid "ERROR: Remote host did not accept control file (%d)\n"
+msgstr "ERROR: Host jarak jauh tidak menerima berkas kontrol (%d)\n"
+
+#: backend/lpd.c:1147
+#, c-format
+msgid "ERROR: Remote host did not accept data file (%d)\n"
+msgstr "ERROR: Host jarak jauh tidak menerima data berkas (%d)\n"
+
+#: backend/pap.c:1694
+msgid "ERROR: There was a timeout error while sending data to the printer\n"
+msgstr "ERROR: Kehabisan waktu saat mengirim data ke pencetak\n"
+
+#: backend/ipp.c:1145
+#, c-format
+msgid "ERROR: Unable to add file %d to job: %s\n"
+msgstr "ERROR: Tidak bisa menambah berkas %d untuk tugas: %s\n"
+
+#: backend/ipp.c:1383
+#, c-format
+msgid "ERROR: Unable to cancel job %d: %s\n"
+msgstr "ERROR: Tidak bisa membatalkan tugas %d: %s\n"
+
+#: filter/pdftops.c:136
+msgid "ERROR: Unable to copy PDF file"
+msgstr "ERROR: Tidak bisa menyalin berkas PPD"
+
+#: filter/pdftops.c:412
+msgid "ERROR: Unable to create pipe"
+msgstr "ERROR: Tidak bisa membuat pipa"
+
+#: backend/lpd.c:772
+msgid "ERROR: Unable to create socket"
+msgstr "ERROR: Tidak bisa membuat soket"
+
+#: backend/ipp.c:1476
+#, c-format
+msgid "ERROR: Unable to create temporary compressed print file: %s\n"
+msgstr "ERROR: Tidak bisa membuat berkas cetak berkompresi temporer: %s\n"
+
+#: backend/ipp.c:431 backend/ipp.c:1776 backend/lpd.c:446 filter/pstops.c:2719
+#: scheduler/cupsfilter.c:1121 systemv/lpadmin.c:1453 systemv/lpadmin.c:1842
+msgid "ERROR: Unable to create temporary file"
+msgstr "ERROR: Tidak bisa membuat berkas temporer"
+
+#: backend/ipp.c:1831
+#, c-format
+msgid "ERROR: Unable to exec pictwpstops: %s\n"
+msgstr "ERROR: Tidak bisa mengeksekusi pictwpstops: %s\n"
+
+#: filter/pdftops.c:433 filter/pdftops.c:447
+msgid "ERROR: Unable to execute gs program"
+msgstr "ERROR: Tidak bisa mengeksekusi program gs"
+
+#: filter/pdftops.c:430 filter/pdftops.c:445
+msgid "ERROR: Unable to execute pdftops program"
+msgstr "ERROR: Tidak bisa mengeksekusi program pdftops"
+
+#: filter/pdftops.c:467 filter/pdftops.c:477
+msgid "ERROR: Unable to execute pstops program"
+msgstr "ERROR: Tidak bisa mengeksekusi program pstops"
+
+#: backend/ipp.c:1844
+#, c-format
+msgid "ERROR: Unable to fork pictwpstops: %s\n"
+msgstr ""
+
+#: backend/pap.c:712
+msgid "ERROR: Unable to get PAP request"
+msgstr "ERROR: Tidak bisa memperoleh permintaan PAP"
+
+#: backend/pap.c:701
+msgid "ERROR: Unable to get PAP response"
+msgstr "ERROR: Tidak bisa memperoleh respon PAP"
+
+#: backend/ipp.c:1761
+#, c-format
+msgid "ERROR: Unable to get PPD file for printer \"%s\" - %s.\n"
+msgstr "ERROR: Tidak bisa memperoleh berkas PPD untuk pencetak \"%s\" - %s.\n"
+
+#: backend/pap.c:302
+msgid "ERROR: Unable to get default AppleTalk zone"
+msgstr "ERROR: Tidak bisa memperoleh zona baku AppleTalk"
+
+#: backend/ipp.c:1232
+#, c-format
+msgid "ERROR: Unable to get job %d attributes (%s)!\n"
+msgstr "ERROR: Tidak bisa memperoleh atribut tugas %d (%s)!\n"
+
+#: backend/ipp.c:759
+#, c-format
+msgid "ERROR: Unable to get printer status (%s)!\n"
+msgstr "ERROR: Tidak bisa memperoleh status pencetak (%s)!\n"
+
+#: backend/ipp.c:422 backend/ipp.c:599 backend/lpd.c:437 backend/lpd.c:705
+#: backend/socket.c:268
+#, c-format
+msgid "ERROR: Unable to locate printer '%s'!\n"
+msgstr "ERROR: Tidak bisa menentukan lokasi pencetak '%s'!\n"
+
+#: backend/pap.c:688
+msgid "ERROR: Unable to look for PAP response"
+msgstr ""
+
+#: backend/pap.c:322
+msgid "ERROR: Unable to lookup AppleTalk printers"
+msgstr ""
+
+#: backend/pap.c:451
+msgid "ERROR: Unable to make AppleTalk address"
+msgstr "ERROR: Tidak bisa membuat alamat AppleTalk"
+
+#: filter/pstext.c:247 filter/texttops.c:248
+#, c-format
+msgid "ERROR: Unable to open \"%s\" - %s\n"
+msgstr "ERROR: Tidak bisa membuka \"%s\" - %s\n"
+
+#: filter/pstext.c:264 filter/texttops.c:268
+#, c-format
+msgid "ERROR: Unable to open %s: %s\n"
+msgstr "ERROR: Tidak bisa membuka %s: %s\n"
+
+#: driver/rastertoescpx.c:1791 driver/rastertopclx.c:1816
+msgid "ERROR: Unable to open PPD file!\n"
+msgstr "ERROR: Tidak bisa membuka berkas PPD!\n"
+
+#: filter/bannertops.c:184
+#, c-format
+msgid "ERROR: Unable to open banner file \"%s\" - %s\n"
+msgstr ""
+
+#: backend/parallel.c:249 backend/scsi-irix.c:140 backend/scsi-linux.c:154
+#: backend/serial.c:262 backend/usb-unix.c:146
+#, c-format
+msgid "ERROR: Unable to open device file \"%s\": %s\n"
+msgstr "ERROR: Tidak bisa membuka berkas perangkat \"%s\": %s\n"
+
+#: filter/pstops.c:291
+#, c-format
+msgid "ERROR: Unable to open file \"%s\" - %s\n"
+msgstr "ERROR: Tidak bisa membuka berkas \"%s\" - %s\n"
+
+#: filter/gziptoany.c:74
+#, c-format
+msgid "ERROR: Unable to open file \"%s\": %s\n"
+msgstr "ERROR: Tidak bisa membuka berkas \"%s\": %s\n"
+
+#: filter/imagetops.c:313 filter/imagetoraster.c:635
+msgid "ERROR: Unable to open image file for printing!\n"
+msgstr "ERROR: Tidak bisa membuka berkas gambar untuk mencetak!\n"
+
+#: backend/ipp.c:1492 backend/pap.c:249 backend/parallel.c:151
+#: backend/scsi.c:181 backend/serial.c:189 backend/socket.c:156
+#, c-format
+msgid "ERROR: Unable to open print file \"%s\": %s\n"
+msgstr "ERROR: Tidak bisa membuka berkas cetak \"%s\": %s\n"
+
+#: backend/usb.c:237
+#, c-format
+msgid "ERROR: Unable to open print file %s - %s\n"
+msgstr "ERROR: Tidak bisa membuka berkas cetak %s - %s\n"
+
+#: backend/lpd.c:487
+#, c-format
+msgid "ERROR: Unable to open print file %s: %s\n"
+msgstr "ERROR: Tidak bisa membuka berkas cetak %s: %s\n"
+
+#: driver/rastertoescpx.c:1806 driver/rastertopclx.c:1831
+#: filter/rastertoepson.c:1001 filter/rastertohp.c:726
+#: filter/rastertolabel.c:1148
+#, c-format
+msgid "ERROR: Unable to open raster file - %s\n"
+msgstr ""
+
+#: backend/ipp.c:1484
+#, c-format
+msgid "ERROR: Unable to open temporary compressed print file: %s\n"
+msgstr "ERROR: Tidak bisa membuka berkas cetak temporer berkompresi: %s\n"
+
+#: filter/texttops.c:200
+#, c-format
+msgid "ERROR: Unable to print %d text columns!\n"
+msgstr ""
+
+#: filter/texttops.c:179
+#, c-format
+msgid "ERROR: Unable to print %dx%d text page!\n"
+msgstr ""
+
+#: backend/serial.c:615
+msgid "ERROR: Unable to read print data"
+msgstr "ERROR: Tidak bisa membaca data yang hendak dicetak"
+
+#: backend/usb-darwin.c:602 backend/usb-darwin.c:644
+msgid "ERROR: Unable to read print data!\n"
+msgstr "ERROR: Tidak bisa membaca data yang hendak dicetak!\n"
+
+#: backend/lpd.c:789
+msgid "ERROR: Unable to reserve port"
+msgstr ""
+
+#: filter/pstops.c:563
+#, c-format
+msgid "ERROR: Unable to seek to offset %ld in file - %s\n"
+msgstr "ERROR: Tidak bisa mencari letak %ld dalam berkas - %s\n"
+
+#: filter/pstops.c:561
+#, c-format
+msgid "ERROR: Unable to seek to offset %lld in file - %s\n"
+msgstr "ERROR: Tidak bisa mencari letak %lld dalam berkas - %s\n"
+
+#: backend/lpd.c:603
+msgid "ERROR: Unable to send LPD command"
+msgstr "ERROR: Tidak bisa mengirim perintah LPD"
+
+#: backend/pap.c:571
+msgid "ERROR: Unable to send PAP tickle request"
+msgstr ""
+
+#: backend/pap.c:580
+msgid "ERROR: Unable to send initial PAP send data request"
+msgstr ""
+
+#: backend/scsi-irix.c:219 backend/scsi-linux.c:237
+#, c-format
+msgid "ERROR: Unable to send print data (%d)\n"
+msgstr "ERROR: Tidak bisa mengirim data yang hendak dicetak (%d)\n"
+
+#: backend/usb-darwin.c:720
+msgid "ERROR: Unable to send print data!\n"
+msgstr "ERROR: Tidak bisa mengirim data yang hendak dicetak!\n"
+
+#: backend/lpd.c:1103
+msgid "ERROR: Unable to send print file to printer"
+msgstr "ERROR: Tidak bisa mengirim data ke pencetak"
+
+#: backend/lpd.c:1117
+msgid "ERROR: Unable to send trailing nul to printer"
+msgstr ""
+
+#: backend/ipp.c:1857
+#, c-format
+msgid "ERROR: Unable to wait for pictwpstops: %s\n"
+msgstr "ERROR: Tidak bisa menunggu pictwpstops: %s\n"
+
+#: backend/ipp.c:1503
+#, c-format
+msgid "ERROR: Unable to write %d bytes to \"%s\": %s\n"
+msgstr "ERROR: Tidak bisa menulis %d bita ke \"%s\": %s\n"
+
+#: backend/usb-libusb.c:169 backend/usb-libusb.c:765
+#, c-format
+msgid "ERROR: Unable to write %d bytes to printer!\n"
+msgstr "ERROR: Tidak bisa menulis %d bita ke pencetak!\n"
+
+#: backend/lpd.c:1033 backend/lpd.c:1180
+msgid "ERROR: Unable to write control file"
+msgstr "ERROR: Tidak bisa menulis berkas kontrol"
+
+#: backend/serial.c:691
+msgid "ERROR: Unable to write print data"
+msgstr "ERROR: Tidak bisa menulis data yang hendak dicetak"
+
+#: backend/runloop.c:122 backend/runloop.c:363
+#, c-format
+msgid "ERROR: Unable to write print data: %s\n"
+msgstr "ERROR: Tidak bisa menulis data yang hendak dicetak: %s\n"
+
+#: filter/imagetoraster.c:1197 filter/imagetoraster.c:1293
+#: filter/imagetoraster.c:1333
+msgid "ERROR: Unable to write raster data to driver!\n"
+msgstr ""
+
+#: backend/ipp.c:443 backend/lpd.c:456
+msgid "ERROR: Unable to write to temporary file"
+msgstr "ERROR: Tidak bisa menulis di berkas temporer"
+
+#: filter/gziptoany.c:96
+#, c-format
+msgid "ERROR: Unable to write uncompressed document data: %s\n"
+msgstr ""
+
+#: ppdc/ppdc-catalog.cxx:432
+#, c-format
+msgid "ERROR: Unexpected text on line %d of %s!\n"
+msgstr "ERROR: Teks tak diharapkan pada baris %d dari %s!\n"
+
+#: backend/ipp.c:346
+#, c-format
+msgid "ERROR: Unknown encryption option value \"%s\"!\n"
+msgstr "ERROR: Nilai opsi enkripsi \"%s\" tak dikenal!\n"
+
+#: backend/lpd.c:354
+#, c-format
+msgid "ERROR: Unknown file order \"%s\"\n"
+msgstr "ERROR: Urutan berkas \"%s\" tak dikenal\n"
+
+#: backend/lpd.c:326
+#, c-format
+msgid "ERROR: Unknown format character \"%c\"\n"
+msgstr "ERROR: Format karakter \"%c\" tak dikenal\n"
+
+#: ppdc/ppdc-catalog.cxx:460
+#, c-format
+msgid "ERROR: Unknown message catalog format for \"%s\"!\n"
+msgstr "ERROR: Format katalog pesan \"%s\" tak dikenal!\n"
+
+#: backend/ipp.c:392
+#, c-format
+msgid "ERROR: Unknown option \"%s\" with value \"%s\"!\n"
+msgstr "ERROR: Opsi \"%s\" dengan nilai \"%s\" tak dikenal!\n"
+
+#: backend/lpd.c:340
+#, c-format
+msgid "ERROR: Unknown print mode \"%s\"\n"
+msgstr "ERROR: Modus cetak \"%s\" tak dikenal\n"
+
+#: backend/ipp.c:363
+#, c-format
+msgid "ERROR: Unknown version option value \"%s\"!\n"
+msgstr "ERROR: Nilai opsi versi \"%s\" tak dikenal!\n"
+
+#: filter/pstops.c:2418
+#, c-format
+msgid "ERROR: Unsupported brightness value %s, using brightness=100!\n"
+msgstr "ERROR: Nilai kecerahan %s tak didukung, gunakanlah brightness=100!\n"
+
+#: filter/pstops.c:2487
+#, c-format
+msgid "ERROR: Unsupported gamma value %s, using gamma=1000!\n"
+msgstr "ERROR: Nilai gama %s tak didukung, gunakanlah gamma=1000!\n"
+
+#: filter/pstops.c:2541
+#, c-format
+msgid "ERROR: Unsupported number-up value %d, using number-up=1!\n"
+msgstr "ERROR: Nilai number-up %d tak didukung, gunakanlah number-up=1!\n"
+
+#: filter/pstops.c:2574
+#, c-format
+msgid "ERROR: Unsupported number-up-layout value %s, using number-up-layout=lrtb!\n"
+msgstr ""
+"ERROR: Nilai number-up-layout %s tak didukung, gunakanlah number-up-"
+"layout=lrtb!\n"
+
+#: filter/pstops.c:2624
+#, c-format
+msgid "ERROR: Unsupported page-border value %s, using page-border=none!\n"
+msgstr "ERROR: Nilai page-border %s tak didukung, gunakanlah page-border=none!\n"
+
+#: filter/pstops.c:2090
+#, c-format
+msgid "ERROR: doc_printf overflow (%d bytes) detected, aborting!\n"
+msgstr "ERROR: Kelebihan doc_printf (%d bita) terdeteksi, dibatalkan!\n"
+
+#: backend/ipp.c:1876
+#, c-format
+msgid "ERROR: pictwpstops exited on signal %d!\n"
+msgstr "ERROR: pictwpstops tertutup pada sinyal %d!\n"
+
+#: backend/ipp.c:1873
+#, c-format
+msgid "ERROR: pictwpstops exited with status %d!\n"
+msgstr "ERROR: pictwpstops tertutup dengan status %d!\n"
+
+#: backend/ipp.c:609 backend/lpd.c:877 backend/socket.c:333
+msgid ""
+"ERROR: recoverable: Unable to connect to printer; will retry in 30 "
+"seconds...\n"
+msgstr ""
+"ERROR: pemulihan: Tidak bisa menghubungi pencetak; akan mencoba ulang dalam 30 "
+"detik...\n"
+
+#: backend/pap.c:629
+msgid "ERROR: select() failed"
+msgstr "ERROR: select() gagal"
+
+#: backend/lpd.c:940
+msgid "ERROR: unable to stat print file"
+msgstr "ERROR: tak dapat memulai berkas yang hendak dicetak"
+
+#: cgi-bin/admin.c:1823 cgi-bin/admin.c:1835 cgi-bin/admin.c:1889
+#: cgi-bin/admin.c:1896 cgi-bin/admin.c:1931 cgi-bin/admin.c:1944
+#: cgi-bin/admin.c:1968 cgi-bin/admin.c:2041
+msgid "Edit Configuration File"
+msgstr "Sunting Berkas Konfigurasi"
+
+#: cups/adminutil.c:348
+msgid "Empty PPD file!"
+msgstr "Berkas PPD kosong!"
+
+#: cgi-bin/admin.c:3545
+msgid "Ending Banner"
+msgstr "Akhir Pataka"
+
+#: systemv/lppasswd.c:205
+msgid "Enter old password:"
+msgstr "Masukkan sandi lama:"
+
+#: systemv/lppasswd.c:234
+msgid "Enter password again:"
+msgstr "Masukkan lagi sandinya:"
+
+#: systemv/lppasswd.c:223
+msgid "Enter password:"
+msgstr "Masukkan sandi:"
+
+#: scheduler/client.c:2392
+msgid ""
+"Enter your username and password or the root username and password to access "
+"this page. If you are using Kerberos authentication, make sure you have a "
+"valid Kerberos ticket."
+msgstr ""
+"Masukkan nama pengguna dan sandi Anda atau nama pengguna dan sandi root "
+"untuk mengakses halaman ini. Apabila Anda menggunakan otentikasi Kerberos, "
+"pastikan bahwa Anda memiliki tiket Kerberos yang sah."
+
+#: ppdc/sample.c:241
+msgid "Envelope Feed"
+msgstr "Amplop Feed"
+
+#: ppdc/sample.c:212
+msgid "Epson"
+msgstr "Epson"
+
+#: cgi-bin/admin.c:3588
+msgid "Error Policy"
+msgstr "Polis Kesalahan"
+
+#: systemv/lpinfo.c:109 systemv/lpmove.c:94
+msgid "Error: need hostname after '-h' option!\n"
+msgstr "Kesalahan: perlu nama host usai opsi '-h'!\n"
+
+#: ppdc/sample.c:326
+msgid "Every 10 Labels"
+msgstr "Tiap 10 Label"
+
+#: ppdc/sample.c:318
+msgid "Every 2 Labels"
+msgstr "Tiap 2 Label"
+
+#: ppdc/sample.c:319
+msgid "Every 3 Labels"
+msgstr "Tiap 3 Label"
+
+#: ppdc/sample.c:320
+msgid "Every 4 Labels"
+msgstr "Tiap 4 Label"
+
+#: ppdc/sample.c:321
+msgid "Every 5 Labels"
+msgstr "Tiap 5 Label"
+
+#: ppdc/sample.c:322
+msgid "Every 6 Labels"
+msgstr "Tiap 6 Label"
+
+#: ppdc/sample.c:323
+msgid "Every 7 Labels"
+msgstr "Tiap 7 Label"
+
+#: ppdc/sample.c:324
+msgid "Every 8 Labels"
+msgstr "Tiap 8 Label"
+
+#: ppdc/sample.c:325
+msgid "Every 9 Labels"
+msgstr "Tiap 9 Label"
+
+#: ppdc/sample.c:317
+msgid "Every Label"
+msgstr "Tiap Label"
+
+#: cups/http-support.c:1239
+msgid "Expectation Failed"
+msgstr ""
+
+#: cgi-bin/admin.c:2331 cgi-bin/admin.c:2350
+msgid "Export Printers to Samba"
+msgstr "Ekspor Pencetak melalui Samba"
+
+#: systemv/cupstestdsc.c:176 systemv/cupstestdsc.c:193
+#: systemv/cupstestdsc.c:218 systemv/cupstestdsc.c:235
+#: systemv/cupstestdsc.c:259 systemv/cupstestdsc.c:277
+#: systemv/cupstestdsc.c:306 systemv/cupstestdsc.c:343
+#: systemv/cupstestdsc.c:353 systemv/cupstestdsc.c:363
+#: systemv/cupstestdsc.c:373 systemv/cupstestdsc.c:383
+#: systemv/cupstestdsc.c:391
+msgid "FAIL\n"
+msgstr "GAGAL\n"
+
+#: ppdc/sample.c:132
+msgid "File Folder"
+msgstr "Map"
+
+#: ppdc/sample.c:141
+msgid "File Folder - 9/16 x 3 7/16\""
+msgstr "Map - 9/16 x 3 7/16\""
+
+#: scheduler/ipp.c:2528
+#, c-format
+msgid ""
+"File device URIs have been disabled! To enable, see the FileDevice directive "
+"in \"%s/cupsd.conf\"."
+msgstr ""
+"Berkas URI perangkat telah dinonaktifkan! Untuk mengaktifkannya, lihatlah "
+"petunjuk FileDevice dalam \"%s/cupsd.conf\"."
+
+#: ppdc/sample.c:92
+msgid "Folio"
+msgstr "Folio"
+
+#: cups/http-support.c:1218
+msgid "Forbidden"
+msgstr "Terlarang"
+
+#: cups/localize.c:345
+msgid "Fuser temperature high!"
+msgstr "Suhu fusi tinggi!"
+
+#: cups/localize.c:347
+msgid "Fuser temperature low!"
+msgstr "Suhu fusi rendah!"
+
+#: cups/ppd.c:700 cups/ppd.c:1230
+msgid "General"
+msgstr "Umum"
+
+#: ppdc/sample.c:231
+msgid "Generic"
+msgstr "Umum"
+
+#: ppdc/sample.c:89
+msgid "German FanFold"
+msgstr "FanFold Jerman"
+
+#: ppdc/sample.c:90
+msgid "German FanFold Legal"
+msgstr "FanFold Legal Jerman"
+
+#: cups/snmp.c:1017
+msgid "Get-Response-PDU uses indefinite length"
+msgstr "Get-Response-PDU memiliki panjang tak terdefinisi"
+
+#: ppdc/sample.c:261
+msgid "Glossy Paper"
+msgstr "Kertas Glosi"
+
+#: scheduler/ipp.c:3641 scheduler/ipp.c:3947 scheduler/ipp.c:6627
+#: scheduler/ipp.c:6769 scheduler/ipp.c:8044 scheduler/ipp.c:9143
+#: scheduler/ipp.c:9369 scheduler/ipp.c:9724 scheduler/ipp.c:10300
+msgid "Got a printer-uri attribute but no job-id!"
+msgstr "Memperoleh atribut printer-uri tetapi bukan job-id!"
+
+#: ppdc/sample.c:227
+msgid "Grayscale"
+msgstr "Skala Abu-abu"
+
+#: ppdc/sample.c:251
+msgid "HP"
+msgstr "HP"
+
+#: ppdc/sample.c:133
+msgid "Hanging Folder"
+msgstr "Map Gantung"
+
+#: ppdc/sample.c:142
+msgid "Hanging Folder - 9/16 x 2\""
+msgstr "Map Gantung - 9/16 x 2\""
+
+#: backend/pap.c:296
+msgid "INFO: AppleTalk disabled in System Preferences\n"
+msgstr "INFO: AppleTalk ditiadakan pada Preferensi Sistem\n"
+
+#: backend/pap.c:511
+msgid "INFO: AppleTalk disabled in System Preferences.\n"
+msgstr "INFO: AppleTalk ditiadakan pada Preferensi Sistem.\n"
+
+#: backend/ipp.c:1359
+msgid "INFO: Canceling print job...\n"
+msgstr "INFO: Membatalkan tugas mencetak...\n"
+
+#: backend/ipp.c:629 backend/lpd.c:896 backend/socket.c:354
+msgid "INFO: Connected to printer...\n"
+msgstr "INFO: Terhubung ke pencetak...\n"
+
+#: backend/ipp.c:544 backend/lpd.c:729 backend/socket.c:274
+msgid "INFO: Connecting to printer...\n"
+msgstr "INFO: Menghubungi pencetak...\n"
+
+#: backend/lpd.c:1055 backend/lpd.c:1202
+msgid "INFO: Control file sent successfully\n"
+msgstr "INFO: Berkas kontrol berhasil dikirim\n"
+
+#: backend/ipp.c:435 backend/lpd.c:450
+msgid "INFO: Copying print data...\n"
+msgstr "INFO: Menyalin data yang hendak dicetak...\n"
+
+#: backend/lpd.c:1150
+msgid "INFO: Data file sent successfully\n"
+msgstr "INFO: Berkas data berhasil dikirim\n"
+
+#: driver/rastertoescpx.c:1887 driver/rastertopclx.c:1912
+#, c-format
+msgid "INFO: Finished page %d...\n"
+msgstr "INFO: Halaman selesai %d...\n"
+
+#: filter/imagetoraster.c:1140
+#, c-format
+msgid "INFO: Formatting page %d...\n"
+msgstr "INFO: Memformat halaman %d...\n"
+
+#: filter/imagetoraster.c:621
+msgid "INFO: Loading image file...\n"
+msgstr "INFO: Memuat berkas gambar...\n"
+
+#: cups/http-support.c:1428
+msgid "INFO: Looking for printer...\n"
+msgstr "INFO: Mencari pencetak...\n"
+
+#: backend/pap.c:928
+msgid "INFO: Opening connection\n"
+msgstr "INFO: Membuka hubungan\n"
+
+#: backend/socket.c:425
+msgid "INFO: Print file sent, waiting for printer to finish...\n"
+msgstr "INFO: Berkas cetak dikirim, menunggu pencetak selesai mengerjakannya...\n"
+
+#: backend/ipp.c:1044 backend/usb-unix.c:132
+msgid "INFO: Printer busy; will retry in 10 seconds...\n"
+msgstr "INFO: Pencetak sibuk; dicoba ulang 10 detik lagi...\n"
+
+#: backend/parallel.c:236 backend/scsi-irix.c:147 backend/scsi-linux.c:161
+#: backend/serial.c:256
+msgid "INFO: Printer busy; will retry in 30 seconds...\n"
+msgstr "INFO: Pencetak sibuk; dicoba ulang 30 detik lagi...\n"
+
+#: backend/usb-unix.c:437
+msgid "INFO: Printer busy; will retry in 5 seconds...\n"
+msgstr "INFO: Pencetak sibuk; dicoba ulang 5 detik lagi...\n"
+
+#: backend/ipp.c:742 backend/ipp.c:1055
+#, c-format
+msgid "INFO: Printer does not support IPP/%d.%d, trying IPP/1.0...\n"
+msgstr "INFO: Pencetak tidak mendukung IPP/%d.%d, mencoba IPP/1.0...\n"
+
+#: backend/usb-unix.c:521
+msgid "INFO: Printer is busy; will retry in 5 seconds...\n"
+msgstr "INFO: Pencetak sibuk; dicoba ulang 5 detik lagi...\n"
+
+#: backend/runloop.c:357
+msgid "INFO: Printer is currently off-line.\n"
+msgstr "INFO: Pencetak saat ini tak terhubung.\n"
+
+#: backend/runloop.c:243
+msgid "INFO: Printer is currently offline.\n"
+msgstr "INFO: Pencetak saat ini tak terhubung.\n"
+
+#: backend/runloop.c:379 backend/usb-darwin.c:1254
+msgid "INFO: Printer is now online.\n"
+msgstr "INFO: Pencetak saat ini terhubung.\n"
+
+#: backend/usb-darwin.c:1272
+msgid "INFO: Printer is offline.\n"
+msgstr "INFO: Pencetak saat ini tak terhubung.\n"
+
+#: backend/parallel.c:242 backend/usb-unix.c:139
+msgid "INFO: Printer not connected; will retry in 30 seconds...\n"
+msgstr "INFO: Pencetak tak terhubung; dicoba ulang 30 detik lagi...\n"
+
+#: driver/rastertoescpx.c:1873 driver/rastertopclx.c:1895
+#: filter/rastertoepson.c:1080 filter/rastertohp.c:803
+#: filter/rastertolabel.c:1235
+#, c-format
+msgid "INFO: Printing page %d, %d%% complete...\n"
+msgstr "INFO: Mencetak halaman %d, %d%% selesai...\n"
+
+#: filter/imagetops.c:808
+#, c-format
+msgid "INFO: Printing page %d...\n"
+msgstr "INFO: Mencetak halaman %d...\n"
+
+#: backend/socket.c:457 driver/rastertoescpx.c:1911 driver/rastertopclx.c:1936
+#: filter/rastertoepson.c:1134 filter/rastertohp.c:862
+#: filter/rastertolabel.c:1288
+msgid "INFO: Ready to print.\n"
+msgstr "INFO: Siap mencetak.\n"
+
+#: backend/lpd.c:1174
+#, c-format
+msgid "INFO: Sending control file (%lu bytes)\n"
+msgstr "INFO: Mengirim berkas kontrol (%lu bita)\n"
+
+#: backend/lpd.c:1027
+#, c-format
+msgid "INFO: Sending control file (%u bytes)\n"
+msgstr "INFO: Mengirim berkas kontrol (%u bita)\n"
+
+#: backend/pap.c:564
+msgid "INFO: Sending data\n"
+msgstr "INFO: Mengirim data\n"
+
+#: backend/lpd.c:1086
+#, c-format
+msgid "INFO: Sending data file (%ld bytes)\n"
+msgstr "INFO: Mengirim berkas data (%ld bita)\n"
+
+#: backend/lpd.c:1084
+#, c-format
+msgid "INFO: Sending data file (%lld bytes)\n"
+msgstr "INFO: Mengirim berkas data (%lld bita)\n"
+
+#: backend/usb-darwin.c:534
+msgid "INFO: Sending print data...\n"
+msgstr "INFO: Mengirim data yang hendak dicetak...\n"
+
+#: backend/parallel.c:294 backend/socket.c:404 backend/usb-unix.c:201
+#, c-format
+msgid "INFO: Sent print file, %ld bytes...\n"
+msgstr "INFO: Mengirim berkas yang hendak dicetak, %ld bita...\n"
+
+#: backend/parallel.c:292 backend/socket.c:402 backend/usb-unix.c:199
+#, c-format
+msgid "INFO: Sent print file, %lld bytes...\n"
+msgstr "INFO: Mengirim berkas yang hendak dicetak, %lld bita...\n"
+
+#: backend/lpd.c:1098
+#, c-format
+msgid "INFO: Spooling LPR job, %.0f%% complete...\n"
+msgstr ""
+
+#: driver/rastertoescpx.c:1859 driver/rastertopclx.c:1880
+#, c-format
+msgid "INFO: Starting page %d...\n"
+msgstr "INFO: Memulai halaman %d...\n"
+
+#: backend/ipp.c:561 backend/ipp.c:823 backend/lpd.c:829
+#: backend/parallel.c:221 backend/scsi-irix.c:125 backend/scsi-linux.c:139
+#: backend/serial.c:241 backend/socket.c:293 backend/usb-unix.c:117
+msgid "INFO: Unable to contact printer, queuing on next printer in class...\n"
+msgstr ""
+"INFO: Tidak bisa menghubungi pencetak, diantrikan ke pencetak selanjutnya pada "
+"kelas...\n"
+
+#: backend/pap.c:309
+#, c-format
+msgid "INFO: Using default AppleTalk zone \"%s\"\n"
+msgstr "INFO: Menggunakan zona baku AppleTalk \"%s\"\n"
+
+#: backend/ipp.c:1170
+msgid "INFO: Waiting for job to complete...\n"
+msgstr "INFO: Menunggu tugas diselesaikan...\n"
+
+#: backend/usb-darwin.c:454 backend/usb-libusb.c:117
+msgid "INFO: Waiting for printer to become available...\n"
+msgstr "INFO: Menunggu pencetak tersedia...\n"
+
+#: ppdc/sample.c:93
+msgid "ISO B0"
+msgstr "ISO B0"
+
+#: ppdc/sample.c:94
+msgid "ISO B1"
+msgstr "ISO B1"
+
+#: ppdc/sample.c:104
+msgid "ISO B10"
+msgstr "ISO B10"
+
+#: ppdc/sample.c:95
+msgid "ISO B2"
+msgstr "ISO B2"
+
+#: ppdc/sample.c:96
+msgid "ISO B3"
+msgstr "ISO B3"
+
+#: ppdc/sample.c:97
+msgid "ISO B4"
+msgstr "ISO B4"
+
+#: ppdc/sample.c:69
+msgid "ISO B4 Envelope"
+msgstr "ISO B4 Amplop"
+
+#: ppdc/sample.c:98
+msgid "ISO B5"
+msgstr "ISO B5"
+
+#: ppdc/sample.c:99
+msgid "ISO B5 (Oversize)"
+msgstr "ISO B5 (Besar)"
+
+#: ppdc/sample.c:70
+msgid "ISO B5 Envelope"
+msgstr "ISO B5 Amplop"
+
+#: ppdc/sample.c:100
+msgid "ISO B6"
+msgstr "ISO B6"
+
+#: ppdc/sample.c:71
+msgid "ISO B6 Envelope"
+msgstr "ISO B6 Amplop"
+
+#: ppdc/sample.c:101
+msgid "ISO B7"
+msgstr "ISO B7"
+
+#: ppdc/sample.c:102
+msgid "ISO B8"
+msgstr "ISO B8"
+
+#: ppdc/sample.c:103
+msgid "ISO B9"
+msgstr "ISO B9"
+
+#: cups/ppd.c:350
+msgid "Illegal control character"
+msgstr "Karakter kontrol ilegal"
+
+#: cups/ppd.c:351
+msgid "Illegal main keyword string"
+msgstr "String kata kunci utama ilegal"
+
+#: cups/ppd.c:352
+msgid "Illegal option keyword string"
+msgstr "String opsi kata kunci ilegal"
+
+#: cups/ppd.c:353
+msgid "Illegal translation string"
+msgstr "String translasi ilegal"
+
+#: cups/ppd.c:354
+msgid "Illegal whitespace character"
+msgstr ""
+
+#: cups/localize.c:337
+msgid "Ink/toner almost empty."
+msgstr "Tinta/toner hampir kosong."
+
+#: cups/localize.c:339
+msgid "Ink/toner empty!"
+msgstr "Tinta/toner kosong!"
+
+#: cups/localize.c:341
+msgid "Ink/toner waste bin almost full."
+msgstr "Baki buangan tinta/toner hampir penuh."
+
+#: cups/localize.c:343
+msgid "Ink/toner waste bin full!"
+msgstr "Baki buangan tinta/toner sudah penuh!"
+
+#: ppdc/sample.c:246
+msgid "Installable Options"
+msgstr ""
+
+#: ppdc/sample.c:249
+msgid "Installed"
+msgstr ""
+
+#: ppdc/sample.c:264
+msgid "IntelliBar Label Printer"
+msgstr "Pencetak Label IntelliBar"
+
+#: ppdc/sample.c:263
+msgid "Intellitech"
+msgstr "Intellitech"
+
+#: cups/localize.c:321
+msgid "Interlock open."
+msgstr ""
+
+#: cups/http-support.c:1245
+msgid "Internal Server Error"
+msgstr "Kesalahan Internal Server"
+
+#: cups/ppd.c:341
+msgid "Internal error"
+msgstr "Kesalahan internal"
+
+#: ppdc/sample.c:130
+msgid "Internet Postage 2-Part"
+msgstr "Perangko Internet 2-Bagian"
+
+#: ppdc/sample.c:139
+msgid "Internet Postage 2-Part - 2 1/4 x 7 1/2\""
+msgstr "Perangko Internet 2-Bagian - 2 1/4 x 7 1/2\""
+
+#: ppdc/sample.c:131
+msgid "Internet Postage 3-Part"
+msgstr "Perangko Internet 3-Bagian"
+
+#: ppdc/sample.c:140
+msgid "Internet Postage 3-Part - 2 1/4 x 7\""
+msgstr "Perangko Internet 3-Bagian - 2 1/4 x 7\""
+
+#: backend/ipp.c:206
+msgid "Internet Printing Protocol"
+msgstr "Protokol Cetak Internet"
+
+#: ppdc/sample.c:68
+msgid "Invite Envelope"
+msgstr "Amplop Undangan"
+
+#: ppdc/sample.c:72
+msgid "Italian Envelope"
+msgstr "Amplop Italia"
+
+#: cups/ppd.c:1348
+msgid "JCL"
+msgstr "JCL"
+
+#: scheduler/ipp.c:9442
+#, c-format
+msgid "Job #%d cannot be restarted - no files!"
+msgstr "Tugas #%d tidak bisa dicetak ulang - tidak ada berkas!"
+
+#: scheduler/ipp.c:3682 scheduler/ipp.c:4050 scheduler/ipp.c:6668
+#: scheduler/ipp.c:6810 scheduler/ipp.c:7921 scheduler/ipp.c:8085
+#: scheduler/ipp.c:8295 scheduler/ipp.c:8340 scheduler/ipp.c:9184
+#: scheduler/ipp.c:9410 scheduler/ipp.c:9765 scheduler/ipp.c:10341
+#, c-format
+msgid "Job #%d does not exist!"
+msgstr "Tugas #%d tidak ada!"
+
+#: scheduler/ipp.c:4082
+#, c-format
+msgid "Job #%d is already aborted - can't cancel."
+msgstr "Tugas #%d telah dibatalkan - tidak bisa dibatalkan lagi."
+
+#: scheduler/ipp.c:4076
+#, c-format
+msgid "Job #%d is already canceled - can't cancel."
+msgstr "Tugas #%d sudah dibatalkan - tidak bisa dibatalkan lagi."
+
+#: scheduler/ipp.c:4088
+#, c-format
+msgid "Job #%d is already completed - can't cancel."
+msgstr "Tugas #%d sudah diselesaikan - tidak bisa dibatalkan."
+
+#: scheduler/ipp.c:8382 scheduler/ipp.c:10356
+#, c-format
+msgid "Job #%d is finished and cannot be altered!"
+msgstr "Tugas #%d sudah diselesaikan dan tidak dapat diubah!"
+
+#: scheduler/ipp.c:9424
+#, c-format
+msgid "Job #%d is not complete!"
+msgstr "Tugas #%d tidak selesai!"
+
+#: scheduler/ipp.c:3697
+#, c-format
+msgid "Job #%d is not held for authentication!"
+msgstr "Tugas #%d tidak ditahan untuk otentikasi!"
+
+#: scheduler/ipp.c:9198
+#, c-format
+msgid "Job #%d is not held!"
+msgstr "Tugas #%d tidak ditahan!"
+
+#: scheduler/ipp.c:7899
+#, c-format
+msgid "Job #%s does not exist!"
+msgstr "Tugas #%s tidak ada!"
+
+#: scheduler/ipp.c:6295
+#, c-format
+msgid "Job %d not found!"
+msgstr "Tugas %d tidak ketemu!"
+
+#: cgi-bin/ipp-var.c:1050
+msgid "Job Completed"
+msgstr "Tugas Diselesaikan"
+
+#: cgi-bin/ipp-var.c:1048
+msgid "Job Created"
+msgstr "Tugas Dibuat"
+
+#: filter/bannertops.c:623
+msgid "Job ID: "
+msgstr "ID Tugas: "
+
+#: cgi-bin/ipp-var.c:1054
+msgid "Job Options Changed"
+msgstr "Perubahan Opsi Tugas"
+
+#: cgi-bin/ipp-var.c:1052
+msgid "Job Stopped"
+msgstr "Tugas Dihentikan"
+
+#: filter/bannertops.c:631
+msgid "Job UUID: "
+msgstr "UUID Tugas: "
+
+#: scheduler/ipp.c:10439
+msgid "Job is completed and cannot be changed."
+msgstr "Tugas sudah diselesaikan dan tidak bisa diubah."
+
+#: cgi-bin/jobs.c:197
+msgid "Job operation failed:"
+msgstr "Operasi tugas gagal:"
+
+#: scheduler/ipp.c:10475 scheduler/ipp.c:10494 scheduler/ipp.c:10505
+msgid "Job state cannot be changed."
+msgstr "Status tugas tidak bisa diubah."
+
+#: scheduler/ipp.c:9289
+msgid "Job subscriptions cannot be renewed!"
+msgstr "Subkripsi tugas tidak bisa diperbaharui!"
+
+#: cgi-bin/jobs.c:102 cgi-bin/jobs.c:113 cgi-bin/jobs.c:194
+msgid "Jobs"
+msgstr "Tugas"
+
+#: ppdc/sample.c:73
+msgid "Kaku2 Envelope"
+msgstr "Kaku2 Amplop"
+
+#: ppdc/sample.c:74
+msgid "Kaku3 Envelope"
+msgstr "Kaku3 Amplop"
+
+#: backend/lpd.c:178
+msgid "LPD/LPR Host or Printer"
+msgstr "Host atau Pencetak LPD/LPR"
+
+#: ppdc/sample.c:202
+msgid "Label Printer"
+msgstr "Pencetak Label"
+
+#: ppdc/sample.c:417
+msgid "Label Top"
+msgstr "Label Atas"
+
+#: scheduler/ipp.c:2150 scheduler/ipp.c:6218
+#, c-format
+msgid "Language \"%s\" not supported!"
+msgstr "Bahasa \"%s\" tidak didukung!"
+
+#: ppdc/sample.c:127
+msgid "Large Address"
+msgstr "Alamat Besar"
+
+#: ppdc/sample.c:136
+msgid "Large Address - 1 4/10 x 3 1/2\""
+msgstr "Alamat Besar - 1 4/10 x 3 1/2\""
+
+#: ppdc/sample.c:262
+msgid "LaserJet Series PCL 4/5"
+msgstr "Seri LaserJet PCL 4/5"
+
+#: ppdc/sample.c:208
+msgid "Light"
+msgstr "Cahaya"
+
+#: cups/ppd.c:349
+msgid "Line longer than the maximum allowed (255 characters)"
+msgstr "Baris melebihi panjang yang diperbolehkan (255 karakter)"
+
+#: cgi-bin/admin.c:2368
+msgid "List Available Printers"
+msgstr "Daftar Pencetak yang Tersedia"
+
+#: filter/bannertops.c:744
+msgid "Location: "
+msgstr "Lokasi: "
+
+#: ppdc/sample.c:244
+msgid "Long-Edge (Portrait)"
+msgstr "Sisi Panjang (Tegak)"
+
+#: filter/bannertops.c:753
+msgid "Make and Model: "
+msgstr "Pembuat dan Model: "
+
+#: ppdc/sample.c:240
+msgid "Manual Feed"
+msgstr ""
+
+#: filter/bannertops.c:780
+msgid "Media Dimensions: "
+msgstr "Dimensi Media: "
+
+#: filter/bannertops.c:800
+msgid "Media Limits: "
+msgstr "Batas Media: "
+
+#: filter/bannertops.c:769
+msgid "Media Name: "
+msgstr "Nama Media: "
+
+#: cups/ppd.c:747 cups/ppd.c:1285
+msgid "Media Size"
+msgstr "Ukuran Media"
+
+#: cups/ppd.c:751 cups/ppd.c:1289 ppdc/sample.c:234
+msgid "Media Source"
+msgstr "Sumber Media"
+
+#: ppdc/sample.c:335
+msgid "Media Tracking"
+msgstr ""
+
+#: cups/ppd.c:749 cups/ppd.c:1287 ppdc/sample.c:256
+msgid "Media Type"
+msgstr "Jenis Media"
+
+#: cups/localize.c:310
+msgid "Media jam!"
+msgstr "Media tersangkut!"
+
+#: cups/localize.c:327
+msgid "Media tray almost empty."
+msgstr "Baki media hampir kosong."
+
+#: cups/localize.c:329
+msgid "Media tray empty!"
+msgstr "Baki media kosong!"
+
+#: cups/localize.c:325
+msgid "Media tray missing!"
+msgstr "Baki media hilang!"
+
+#: cups/localize.c:308
+msgid "Media tray needs to be filled."
+msgstr "Baki media perlu diisi."
+
+#: ppdc/sample.c:209
+msgid "Medium"
+msgstr ""
+
+#: cups/ppd.c:338
+msgid "Memory allocation error"
+msgstr "Kesalahan alokasi memori"
+
+#: cups/ppd.c:339
+msgid "Missing PPD-Adobe-4.x header"
+msgstr "Kehilangan tajuk PPD-Adobe-4.x"
+
+#: cups/ppd.c:348
+msgid "Missing asterisk in column 1"
+msgstr "Kehilangan asterik pada kolom 1"
+
+#: scheduler/ipp.c:6690
+msgid "Missing document-number attribute!"
+msgstr "Kehilangan atribut document-number!"
+
+#: cups/adminutil.c:284
+#, c-format
+msgid "Missing double quote on line %d!"
+msgstr "Kehilangan tanda kutip pada baris %d!"
+
+#: cgi-bin/admin.c:2080 cgi-bin/admin.c:2165 cgi-bin/admin.c:2801
+#: cgi-bin/admin.c:3055 cgi-bin/admin.c:3166 cgi-bin/admin.c:3844
+msgid "Missing form variable!"
+msgstr "Kehilangan variabel formulir!"
+
+#: scheduler/ipp.c:7090
+msgid "Missing notify-subscription-ids attribute!"
+msgstr "Kehilangan atribut notify-subscription-ids!"
+
+#: scheduler/ipp.c:3820
+msgid "Missing requesting-user-name attribute!"
+msgstr "Kehilangan atribut requesting-user-name!"
+
+#: scheduler/ipp.c:477
+msgid "Missing required attributes!"
+msgstr "Kehilangan atribut yang diperlukan!"
+
+#: cups/adminutil.c:265
+#, c-format
+msgid "Missing value on line %d!"
+msgstr "Kehilangan nilai pada baris %d!"
+
+#: cups/ppd.c:340
+msgid "Missing value string"
+msgstr "Kehilangan string nilai"
+
+#: systemv/lpinfo.c:475
+#, c-format
+msgid ""
+"Model: name = %s\n"
+" natural_language = %s\n"
+" make-and-model = %s\n"
+" device-id = %s\n"
+msgstr ""
+"Model: name = %s\n"
+" natural_language = %s\n"
+" make-and-model = %s\n"
+" device-id = %s\n"
+
+#: cgi-bin/admin.c:480
+msgid "Modify Class"
+msgstr "Ubah Kelas"
+
+#: cgi-bin/admin.c:778
+msgid "Modify Printer"
+msgstr "Ubah Pencetak"
+
+#: ppdc/sample.c:111
+msgid "Monarch"
+msgstr "Monarki"
+
+#: ppdc/sample.c:75
+msgid "Monarch Envelope"
+msgstr "Amplop Monarki"
+
+#: cgi-bin/ipp-var.c:421 cgi-bin/ipp-var.c:512
+msgid "Move All Jobs"
+msgstr "Pindah Semua Tugas"
+
+#: cgi-bin/ipp-var.c:360 cgi-bin/ipp-var.c:419 cgi-bin/ipp-var.c:510
+msgid "Move Job"
+msgstr "Pindah Tugas"
+
+#: cups/http-support.c:1202
+msgid "Moved Permanently"
+msgstr "Dipindahkan Permanen"
+
+#: backend/ipp.c:1092
+#, c-format
+msgid "NOTICE: Print file accepted - job ID %d.\n"
+msgstr "NOTICE: Berkas yang hendak dicetak diterima - ID tugas %d.\n"
+
+#: backend/ipp.c:1086
+msgid "NOTICE: Print file accepted - job ID unknown.\n"
+msgstr "NOTICE: Berkas yang hendak dicetak diterima - ID tugas tak dikenal.\n"
+
+#: cups/ppd.c:337
+msgid "NULL PPD file pointer"
+msgstr ""
+
+#: cups/snmp.c:1054
+msgid "Name OID uses indefinite length"
+msgstr "Nama OID memiliki panjang tak terdefinisi"
+
+#: scheduler/ipp.c:1196
+msgid "Nested classes are not allowed!"
+msgstr "Kelas bersarang tidak diperbolehkan!"
+
+#: ppdc/sample.c:401
+msgid "Never"
+msgstr "Tidak Pernah"
+
+#: ppdc/sample.c:228
+msgid "New Stylus Color Series"
+msgstr "Seri Stylus Color Baru"
+
+#: ppdc/sample.c:230
+msgid "New Stylus Photo Series"
+msgstr "Seri Stylus Photo Baru"
+
+#: cups/ppd.c:1877
+msgid "No"
+msgstr "Tidak"
+
+#: cups/http-support.c:1199
+msgid "No Content"
+msgstr "Tak Ada Isi"
+
+#: cups/util.c:1289
+msgid "No PPD name!"
+msgstr "Tidak ada nama PPD!"
+
+#: cups/snmp.c:1048
+msgid "No VarBind SEQUENCE"
+msgstr "Tidak ada VarBind SEQUENCE"
+
+#: cups/adminutil.c:799
+msgid "No Windows printer drivers are installed!"
+msgstr "Tidak ada penggerak pencetak Windows yang terpasang!"
+
+#: cups/request.c:509 cups/request.c:775
+msgid "No active connection"
+msgstr "Tidak ada koneksi yang aktif"
+
+#: scheduler/ipp.c:3998
+#, c-format
+msgid "No active jobs on %s!"
+msgstr "Tidak ada tugas yang aktif pada %s!"
+
+#: scheduler/ipp.c:318
+msgid "No attributes in request!"
+msgstr "Tidak ada atribut dalam permintaan!"
+
+#: scheduler/ipp.c:3725
+msgid "No authentication information provided!"
+msgstr "Tidak ada informasi otentikasi yang tersedia!"
+
+#: cups/snmp.c:1005
+msgid "No community name"
+msgstr "Tidak ada nama komunitas"
+
+#: scheduler/ipp.c:6490
+msgid "No default printer"
+msgstr "Tidak ada pencetak utama"
+
+#: cgi-bin/ipp-var.c:432 scheduler/ipp.c:7666
+msgid "No destinations added."
+msgstr "Tidak ada tujuan yang ditambah."
+
+#: cups/snmp.c:1035
+msgid "No error-index"
+msgstr "Tidak ada error-index"
+
+#: cups/snmp.c:1027
+msgid "No error-status"
+msgstr "Tidak ada error-status"
+
+#: scheduler/ipp.c:8582 scheduler/ipp.c:9817
+msgid "No file!?!"
+msgstr "Tidak ada berkas!?!"
+
+#: cups/util.c:924
+msgid "No modification time!"
+msgstr "Tidak ada waktu modifikasi!"
+
+#: cups/snmp.c:1052
+msgid "No name OID"
+msgstr "Tidak ada nama OID"
+
+#: cups/util.c:918
+msgid "No printer name!"
+msgstr "Tidak ada nama pencetak!"
+
+#: cups/util.c:1840
+msgid "No printer-uri found for class!"
+msgstr "Tidak ditemukan printer-uri untuk kelas!"
+
+#: cups/util.c:1855
+msgid "No printer-uri found!"
+msgstr "Tidak ditemukan printer-uri!"
+
+#: scheduler/ipp.c:6875
+msgid "No printer-uri in request!"
+msgstr "Tidak ada printer-uri dalam permintaan!"
+
+#: cups/snmp.c:1019
+msgid "No request-id"
+msgstr "Tidak ada request-id"
+
+#: scheduler/ipp.c:6103
+msgid "No subscription attributes in request!"
+msgstr "Tidak ada atribut subskripsi dalam permintaan!"
+
+#: scheduler/ipp.c:7984
+msgid "No subscriptions found."
+msgstr "Tidak ada subskripsi yang ditemukan."
+
+#: cups/snmp.c:1043
+msgid "No variable-bindings SEQUENCE"
+msgstr "Tidak ada variable-bindings SEQUENCE"
+
+#: cups/snmp.c:998
+msgid "No version number"
+msgstr "Tidak ada nomor versi"
+
+#: ppdc/sample.c:338
+msgid "Non-continuous (Mark sensing)"
+msgstr "Tak bersambungan (Penanda)"
+
+#: ppdc/sample.c:337
+msgid "Non-continuous (Web sensing)"
+msgstr "Tak bersambungan (Web)"
+
+#: ppdc/sample.c:210
+msgid "Normal"
+msgstr "Normal"
+
+#: cups/http-support.c:1221
+msgid "Not Found"
+msgstr "Tidak Ketemu"
+
+#: cups/http-support.c:1233
+msgid "Not Implemented"
+msgstr "Tidak Diimplementasikan"
+
+#: ppdc/sample.c:248
+msgid "Not Installed"
+msgstr "Tidak Terpasang"
+
+#: cups/http-support.c:1208
+msgid "Not Modified"
+msgstr "Tidak Diubah"
+
+#: cups/http-support.c:1236
+msgid "Not Supported"
+msgstr "Tidak Didukung"
+
+#: scheduler/ipp.c:1527
+msgid "Not allowed to print."
+msgstr "Tidak diperbolehkan mencetak."
+
+#: ppdc/sample.c:112
+msgid "Note"
+msgstr "Catatan"
+
+#: cups/http-support.c:1190 cups/ppd.c:335
+msgid "OK"
+msgstr "Oke"
+
+#: cups/localize.c:349
+msgid "OPC almost at end-of-life."
+msgstr "OPC nyaris di ujung hayat."
+
+#: cups/localize.c:351
+msgid "OPC at end-of-life!"
+msgstr "OPC sudah di ujung hayat!"
+
+#: ppdc/sample.c:243
+msgid "Off (1-Sided)"
+msgstr "Mati (1-Sisi)"
+
+#: ppdc/sample.c:332
+msgid "Oki"
+msgstr "Oki"
+
+#: cgi-bin/help.c:89 cgi-bin/help.c:130 cgi-bin/help.c:140 cgi-bin/help.c:171
+msgid "Online Help"
+msgstr "Bantuan Langsung"
+
+#: cups/adminutil.c:985
+#, c-format
+msgid "Open of %s failed: %s"
+msgstr "Gagal membuka %s: %s"
+
+#: cups/ppd.c:343
+msgid "OpenGroup without a CloseGroup first"
+msgstr "OpenGroup tanpa CloseGroup lebih dulu"
+
+#: cups/ppd.c:345
+msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
+msgstr "OpenUI/JCLOpenUI tanpa CloseUI/JCLCloseUI lebih dulu"
+
+#: cgi-bin/admin.c:3615
+msgid "Operation Policy"
+msgstr "Polis Operasi"
+
+#: cgi-bin/admin.c:3292 cgi-bin/admin.c:3352
+msgid "Options Installed"
+msgstr "Opsi yang Terpasang"
+
+#: filter/bannertops.c:674
+msgid "Options: "
+msgstr "Opsi: "
+
+#: cups/localize.c:317
+msgid "Out of toner!"
+msgstr "Kehabisan toner!"
+
+#: cups/ppd.c:753 cups/ppd.c:1291
+msgid "Output Mode"
+msgstr "Modus Keluaran"
+
+#: cups/localize.c:333
+msgid "Output bin almost full."
+msgstr "Baki keluaran hampir penuh."
+
+#: cups/localize.c:335
+msgid "Output bin full!"
+msgstr "Baki keluaran penuh!"
+
+#: systemv/lpstat.c:1191 systemv/lpstat.c:1195
+#, c-format
+msgid "Output for printer %s is sent to %s\n"
+msgstr "Keluaran untuk pencetak %s dikirim ke %s\n"
+
+#: systemv/lpstat.c:1185
+#, c-format
+msgid "Output for printer %s is sent to remote printer %s on %s\n"
+msgstr "Keluaran untuk pencetak %s dikirim ke pencetak jarak jauh %s pada %s\n"
+
+#: systemv/lpstat.c:1209 systemv/lpstat.c:1213
+#, c-format
+msgid "Output for printer %s/%s is sent to %s\n"
+msgstr "Keluaran untuk pencetak %s/%s dikirim ke %s\n"
+
+#: systemv/lpstat.c:1203
+#, c-format
+msgid "Output for printer %s/%s is sent to remote printer %s on %s\n"
+msgstr "Keluaran untuk pencetak %s/%s dikirim ke pencetak jarak jauh %s pada %s\n"
+
+#: cups/localize.c:331
+msgid "Output tray missing!"
+msgstr "Baki keluaran hilang!"
+
+#: systemv/cupstestdsc.c:403
+msgid "PASS\n"
+msgstr "LEWAT\n"
+
+#: ppdc/sample.c:232
+msgid "PCL Laser Printer"
+msgstr "Pencetak Laser PCL"
+
+#: ppdc/sample.c:77
+msgid "PRC1 Envelope"
+msgstr "PRC1 Amplop"
+
+#: ppdc/sample.c:86
+msgid "PRC10 Envelope"
+msgstr "PRC10 Amplop"
+
+#: ppdc/sample.c:114
+msgid "PRC16K"
+msgstr "PRC16K"
+
+#: ppdc/sample.c:78
+msgid "PRC2 Envelope"
+msgstr "PRC2 Amplop"
+
+#: ppdc/sample.c:79
+msgid "PRC3 Envelope"
+msgstr "PRC3 Amplop"
+
+#: ppdc/sample.c:115
+msgid "PRC32K"
+msgstr "PRC32K"
+
+#: ppdc/sample.c:116
+msgid "PRC32K (Oversize)"
+msgstr "PRC32K (Besar)"
+
+#: ppdc/sample.c:80
+msgid "PRC4 Envelope"
+msgstr "PRC4 Amplop"
+
+#: ppdc/sample.c:81
+msgid "PRC5 Envelope"
+msgstr "PRC5 Amplop"
+
+#: ppdc/sample.c:82
+msgid "PRC6 Envelope"
+msgstr "PRC6 Amplop"
+
+#: ppdc/sample.c:83
+msgid "PRC7 Envelope"
+msgstr "PRC7 Amplop"
+
+#: ppdc/sample.c:84
+msgid "PRC8 Envelope"
+msgstr "PRC8 Amplop"
+
+#: ppdc/sample.c:85
+msgid "PRC9 Envelope"
+msgstr "PRC9 Amplop"
+
+#: cups/snmp.c:1015
+msgid "Packet does not contain a Get-Response-PDU"
+msgstr "Paket tidak mengandung Get-Response-PDU"
+
+#: cups/snmp.c:994
+msgid "Packet does not start with SEQUENCE"
+msgstr "Paket tidak dimulai dengan SEQUENCE"
+
+#: ppdc/sample.c:331
+msgid "ParamCustominCutInterval"
+msgstr "ParamCustominCutInterval"
+
+#: ppdc/sample.c:329
+msgid "ParamCustominTearInterval"
+msgstr "ParamCustominTearInterval"
+
+#: cups/auth.c:158
+#, c-format
+msgid "Password for %s on %s? "
+msgstr "Sandi untuk %s pada %s? "
+
+#: systemv/cupsaddsmb.c:256
+#, c-format
+msgid "Password for %s required to access %s via SAMBA: "
+msgstr "Sandi untuk %s diperlukan untuk mengakses %s via SAMBA: "
+
+#: cgi-bin/classes.c:152
+msgid "Pause Class"
+msgstr "Tahan Kelas"
+
+#: cgi-bin/printers.c:155
+msgid "Pause Printer"
+msgstr "Tahan Pencetak"
+
+#: ppdc/sample.c:419
+msgid "Peel-Off"
+msgstr ""
+
+#: ppdc/sample.c:76
+msgid "Personal Envelope"
+msgstr "Amplop Pribadi"
+
+#: ppdc/sample.c:123
+msgid "Photo"
+msgstr "Foto"
+
+#: ppdc/sample.c:124
+msgid "Photo Labels"
+msgstr "Label Foto"
+
+#: ppdc/sample.c:257
+msgid "Plain Paper"
+msgstr "Kertas Biasa"
+
+#: cgi-bin/admin.c:3310 cgi-bin/admin.c:3564
+msgid "Policies"
+msgstr "Kebijakan"
+
+#: cgi-bin/admin.c:3317 cgi-bin/admin.c:3633 cgi-bin/admin.c:3646
+msgid "Port Monitor"
+msgstr "Port Monitor"
+
+#: ppdc/sample.c:250
+msgid "PostScript Printer"
+msgstr "Pencetak PostScript"
+
+#: ppdc/sample.c:113
+msgid "Postcard"
+msgstr "Kartu Pos"
+
+#: ppdc/sample.c:266
+msgid "Print Density"
+msgstr "Densitas Cetak"
+
+#: cups/notify.c:82
+msgid "Print Job:"
+msgstr "Tugas Cetak:"
+
+#: ppdc/sample.c:311
+msgid "Print Mode"
+msgstr "Modus Cetak"
+
+#: ppdc/sample.c:354
+msgid "Print Rate"
+msgstr ""
+
+#: cgi-bin/printers.c:164
+msgid "Print Self-Test Page"
+msgstr "Cetak Halaman Uji-Mandiri"
+
+#: ppdc/sample.c:298
+msgid "Print Speed"
+msgstr "Kecepatan Cetak"
+
+#: cgi-bin/ipp-var.c:787
+msgid "Print Test Page"
+msgstr "Cetak Halaman Uji"
+
+#: ppdc/sample.c:327
+msgid "Print and Cut"
+msgstr "Cetak dan Potong"
+
+#: ppdc/sample.c:315
+msgid "Print and Tear"
+msgstr ""
+
+#: filter/bannertops.c:648
+msgid "Printed For: "
+msgstr "Dicetak Untuk: "
+
+#: filter/bannertops.c:656
+msgid "Printed From: "
+msgstr "Dicetak Dari: "
+
+#: filter/bannertops.c:876
+msgid "Printed On: "
+msgstr "Dicetak Pada: "
+
+#: cgi-bin/ipp-var.c:1042
+msgid "Printer Added"
+msgstr "Pencetak Ditambah"
+
+#: ppdc/sample.c:235
+msgid "Printer Default"
+msgstr "Pencetak Utama"
+
+#: cgi-bin/ipp-var.c:1046
+msgid "Printer Deleted"
+msgstr "Pencetak Dihapus"
+
+#: cgi-bin/ipp-var.c:1044
+msgid "Printer Modified"
+msgstr "Pencetak Diubah"
+
+#: filter/bannertops.c:614
+msgid "Printer Name: "
+msgstr "Nama Pencetak: "
+
+#: cgi-bin/ipp-var.c:1040
+msgid "Printer Paused"
+msgstr "Pencetak Ditahan"
+
+#: ppdc/sample.c:265
+msgid "Printer Settings"
+msgstr "Pengaturan Pencetak"
+
+#: cups/localize.c:313
+msgid "Printer offline."
+msgstr "Pencetak tak terhubung."
+
+#: cups/notify.c:126
+msgid "Printer:"
+msgstr "Pencetak:"
+
+#: cgi-bin/printers.c:189 cgi-bin/printers.c:317
+msgid "Printers"
+msgstr "Pencetak"
+
+#: cgi-bin/classes.c:158 cgi-bin/printers.c:161
+msgid "Purge Jobs"
+msgstr "Membersihkan Tugas"
+
+#: ppdc/sample.c:117
+msgid "Quarto"
+msgstr "Kuarto"
+
+#: scheduler/ipp.c:1522
+msgid "Quota limit reached."
+msgstr "Batas kuota telah dicapai."
+
+#: berkeley/lpq.c:507
+msgid "Rank Owner Job File(s) Total Size\n"
+msgstr "Urut Tuan Tgs Berkas Ukur Total\n"
+
+#: berkeley/lpq.c:503
+msgid "Rank Owner Pri Job Files Total Size\n"
+msgstr "Urut Tuan Pri Tugas Berkas Ukuran Total\n"
+
+#: cgi-bin/classes.c:156 cgi-bin/printers.c:159
+msgid "Reject Jobs"
+msgstr "Tolak Tugas"
+
+#: ppdc/sample.c:399
+msgid "Reprint After Error"
+msgstr "Cetak Ulang Usai Kesalahan"
+
+#: cups/http-support.c:1224
+msgid "Request Entity Too Large"
+msgstr "Entitas Pesanan Terlalu Besar"
+
+#: cups/ppd.c:755 cups/ppd.c:1293 ppdc/sample.c:203
+msgid "Resolution"
+msgstr "Resolusi"
+
+#: cgi-bin/classes.c:150
+msgid "Resume Class"
+msgstr ""
+
+#: cgi-bin/printers.c:152
+msgid "Resume Printer"
+msgstr ""
+
+#: ppdc/sample.c:128
+msgid "Return Address"
+msgstr "Alamat Pengembalian"
+
+#: ppdc/sample.c:137
+msgid "Return Address - 3/4 x 2\""
+msgstr "Alamat Pengembalian - 3/4 x 2\""
+
+#: ppdc/sample.c:420
+msgid "Rewind"
+msgstr "Ulang"
+
+#: cups/adminutil.c:2167
+#, c-format
+msgid "Running command: %s %s -N -A %s -c '%s'\n"
+msgstr "Menjalankan perintah: %s %s -N -A %s -c '%s'\n"
+
+#: backend/scsi-irix.c:70 backend/scsi-linux.c:83
+msgid "SCSI Printer"
+msgstr "Pencetak SCSI"
+
+#: cups/snmp.c:996
+msgid "SEQUENCE uses indefinite length"
+msgstr "SEQUENCE memiliki panjang tak terdefinisi"
+
+#: cups/http-support.c:1205
+msgid "See Other"
+msgstr "Lihat Lainnya"
+
+#: backend/serial.c:784 backend/serial.c:943 backend/serial.c:1065
+#: backend/serial.c:1159
+#, c-format
+msgid "Serial Port #%d"
+msgstr "Port Serial #%d"
+
+#: cgi-bin/ipp-var.c:1056
+msgid "Server Restarted"
+msgstr "Server Dijalankan Ulang"
+
+#: cgi-bin/ipp-var.c:1062
+msgid "Server Security Auditing"
+msgstr "Audit Sekuritas Server"
+
+#: cgi-bin/ipp-var.c:1058
+msgid "Server Started"
+msgstr "Server Dijalankan"
+
+#: cgi-bin/ipp-var.c:1060
+msgid "Server Stopped"
+msgstr "Server Dihentikan"
+
+#: cups/http-support.c:1242
+msgid "Service Unavailable"
+msgstr "Layanan Tak Tersedia"
+
+#: cgi-bin/admin.c:2802 cgi-bin/admin.c:2848 cgi-bin/admin.c:3005
+#: cgi-bin/admin.c:3024
+msgid "Set Allowed Users"
+msgstr "Atur Pengguna yang Boleh"
+
+#: cgi-bin/admin.c:3051
+msgid "Set As Server Default"
+msgstr "Atur Sebagai Baku Server"
+
+#: cgi-bin/admin.c:3151
+msgid "Set Class Options"
+msgstr "Atur Opsi Kelas"
+
+#: cgi-bin/admin.c:3151 cgi-bin/admin.c:3320 cgi-bin/admin.c:3675
+msgid "Set Printer Options"
+msgstr "Atur Opsi Pencetak"
+
+#: cgi-bin/admin.c:3845 cgi-bin/admin.c:3889 cgi-bin/admin.c:3907
+msgid "Set Publishing"
+msgstr "Atur Penerbitan"
+
+#: ppdc/sample.c:129
+msgid "Shipping Address"
+msgstr "Alamat Pengiriman"
+
+#: ppdc/sample.c:138
+msgid "Shipping Address - 2 5/16 x 4\""
+msgstr "Alamat Pengiriman - 2 5/16 x 4\""
+
+#: ppdc/sample.c:245
+msgid "Short-Edge (Landscape)"
+msgstr "Sisi-Pendek (Mendatar)"
+
+#: ppdc/sample.c:259
+msgid "Special Paper"
+msgstr "Kertas Khusus"
+
+#: ppdc/sample.c:312
+msgid "Standard"
+msgstr "Standar"
+
+#: cgi-bin/admin.c:3538
+msgid "Starting Banner"
+msgstr "Menjalankan Pataka"
+
+#: ppdc/sample.c:118
+msgid "Statement"
+msgstr "Pernyataan"
+
+#: ppdc/sample.c:223
+msgid "Stylus Color Series"
+msgstr "Seri Stylus Color"
+
+#: ppdc/sample.c:229
+msgid "Stylus Photo Series"
+msgstr "Seri Stylus Photo"
+
+#: ppdc/sample.c:119
+msgid "Super A"
+msgstr "Super A"
+
+#: ppdc/sample.c:120
+msgid "Super B"
+msgstr "Super B"
+
+#: ppdc/sample.c:125
+msgid "Super B/A3"
+msgstr "Super B/A3"
+
+#: cups/http-support.c:1187
+msgid "Switching Protocols"
+msgstr "Berpindah Protokol"
+
+#: ppdc/sample.c:121
+msgid "Tabloid"
+msgstr "Tabloid"
+
+#: ppdc/sample.c:122
+msgid "Tabloid (Oversize)"
+msgstr "Tabloid (Besar)"
+
+#: ppdc/sample.c:313
+msgid "Tear"
+msgstr ""
+
+#: ppdc/sample.c:418
+msgid "Tear-Off"
+msgstr ""
+
+#: ppdc/sample.c:359
+msgid "Tear-Off Adjust Position"
+msgstr ""
+
+#: scheduler/ipp.c:7337
+#, c-format
+msgid "The PPD file \"%s\" could not be found."
+msgstr "Berkas PPD \"%s\" tak bisa ditemukan."
+
+#: scheduler/ipp.c:7324
+#, c-format
+msgid "The PPD file \"%s\" could not be opened: %s"
+msgstr "Berkas PPD \"%s\" tak bisa dibuka: %s"
+
+#: cgi-bin/admin.c:644
+msgid ""
+"The class name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"Nama kelas paling banyak 127 karakter cetak dan tidak mengandung spasi, "
+"garis miring (/), atau pun tanda pagar (#)."
+
+#: scheduler/ipp.c:2177
+msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
+msgstr "Atribut notify-lease-duration tak bisa digunakan bersama subskripsi tugas."
+
+#: scheduler/ipp.c:2160 scheduler/ipp.c:6228
+#, c-format
+msgid "The notify-user-data value is too large (%d > 63 octets)!"
+msgstr "Nilai notify-user-data terlalu besar (%d > 63 oktet)!"
+
+#: cgi-bin/admin.c:827
+msgid ""
+"The printer name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"Nama pencetak paling banyak 127 karakter cetak dan tidak mengandung spasi, "
+"garis miring (/), atau tanda pagar (#)."
+
+#: scheduler/ipp.c:1357
+msgid "The printer or class is not shared!"
+msgstr "Pencetak atau kelas tidak dikongsikan!"
+
+#: scheduler/ipp.c:884 scheduler/ipp.c:1190 scheduler/ipp.c:3856
+#: scheduler/ipp.c:3964 scheduler/ipp.c:5759 scheduler/ipp.c:6062
+#: scheduler/ipp.c:6375 scheduler/ipp.c:6912 scheduler/ipp.c:7542
+#: scheduler/ipp.c:7598 scheduler/ipp.c:7911 scheduler/ipp.c:8153
+#: scheduler/ipp.c:8243 scheduler/ipp.c:8276 scheduler/ipp.c:8597
+#: scheduler/ipp.c:8988 scheduler/ipp.c:9068 scheduler/ipp.c:10209
+#: scheduler/ipp.c:10665 scheduler/ipp.c:10994 scheduler/ipp.c:11061
+#: scheduler/ipp.c:11344
+msgid "The printer or class was not found."
+msgstr "Pencetak atau kelas tidak ditemukan."
+
+#: scheduler/ipp.c:990 scheduler/ipp.c:2367
+#, c-format
+msgid "The printer-uri \"%s\" contains invalid characters."
+msgstr "Terdapat karakter tidak sah pada printer-uri \"%s\"."
+
+#: scheduler/ipp.c:3801
+msgid "The printer-uri attribute is required!"
+msgstr "Atribut printer-uri diperlukan!"
+
+#: scheduler/ipp.c:974
+msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
+msgstr ""
+"Bentuk printer-uri seharusnya menuruti format \"ipp://HOSTNAME/classes/"
+"CLASSNAME\"."
+
+#: scheduler/ipp.c:2351
+msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
+msgstr ""
+"Bentuk printer-uri seharusnya menuruti format \"ipp://HOSTNAME/printers/"
+"PRINTERNAME\"."
+
+#: cgi-bin/admin.c:385
+msgid ""
+"The subscription name may not contain spaces, slashes (/), question marks "
+"(?), or the pound sign (#)."
+msgstr ""
+"Nama subskripsi tidak bisa mengandung spasi, garis miring (/), tanda tanya "
+"(?), atau tanda pagar (#)."
+
+#: scheduler/ipp.c:6305
+msgid "There are too many subscriptions."
+msgstr "Terlalu banyak subskripsi."
+
+#: ppdc/sample.c:406
+msgid "Thermal Transfer Media"
+msgstr ""
+
+#: filter/bannertops.c:640
+msgid "Title: "
+msgstr "Judul: "
+
+#: cups/localize.c:315
+msgid "Toner low."
+msgstr "Toner lemah."
+
+#: scheduler/ipp.c:1516
+msgid "Too many active jobs."
+msgstr "Terlalu banyak tugas yang aktif."
+
+#: scheduler/ipp.c:1454
+#, c-format
+msgid "Too many job-sheets values (%d > 2)!"
+msgstr "Terlalu banyak nilai job-sheets (%d > 2)!"
+
+#: scheduler/ipp.c:2672
+#, c-format
+msgid "Too many printer-state-reasons values (%d > %d)!"
+msgstr "Terlalu banyak nilai printer-state-reasons (%d > %d)!"
+
+#: ppdc/sample.c:260
+msgid "Transparency"
+msgstr "Transparansi"
+
+#: ppdc/sample.c:255
+msgid "Tray"
+msgstr "Baki"
+
+#: ppdc/sample.c:236
+msgid "Tray 1"
+msgstr "Baki 1"
+
+#: ppdc/sample.c:237
+msgid "Tray 2"
+msgstr "Baki 2"
+
+#: ppdc/sample.c:238
+msgid "Tray 3"
+msgstr "Baki 3"
+
+#: ppdc/sample.c:239
+msgid "Tray 4"
+msgstr "Baki 4"
+
+#: cups/http-support.c:1227
+msgid "URI Too Long"
+msgstr "URI Terlalu Panjang"
+
+#: ppdc/sample.c:88
+msgid "US Executive"
+msgstr "Eksekutif AS"
+
+#: ppdc/sample.c:91
+msgid "US Fanfold"
+msgstr "Fanfold AS"
+
+#: ppdc/sample.c:105
+msgid "US Ledger"
+msgstr "Ledger AS"
+
+#: ppdc/sample.c:106
+msgid "US Legal"
+msgstr "Legal AS"
+
+#: ppdc/sample.c:107
+msgid "US Legal (Oversize)"
+msgstr "Legal AS (Besar)"
+
+#: ppdc/sample.c:108
+msgid "US Letter"
+msgstr "Kuarto AS"
+
+#: ppdc/sample.c:109
+msgid "US Letter (Oversize)"
+msgstr "Kuarto AS (Besar)"
+
+#: ppdc/sample.c:110
+msgid "US Letter (Small)"
+msgstr "Kuarto AS (Kecil)"
+
+#: backend/serial.c:797
+#, c-format
+msgid "USB Serial Port #%d"
+msgstr "Port Serial USB #%d"
+
+#: cgi-bin/admin.c:1933 cgi-bin/admin.c:1946 cgi-bin/admin.c:1970
+msgid "Unable to access cupsd.conf file:"
+msgstr "Tidak bisa mengakses berkas cupsd.conf:"
+
+#: cgi-bin/admin.c:437
+msgid "Unable to add RSS subscription:"
+msgstr "Tidak bisa menambah subskripsi RSS:"
+
+#: cgi-bin/admin.c:710
+msgid "Unable to add class:"
+msgstr "Tidak bisa menambah kelas:"
+
+#: scheduler/ipp.c:1560
+#, c-format
+msgid "Unable to add job for destination \"%s\"!"
+msgstr "Tidak bisa menambah tugas untuk tujuan \"%s\"!"
+
+#: cgi-bin/admin.c:959 cgi-bin/admin.c:1320
+msgid "Unable to add printer:"
+msgstr "Tidak bisa menambah pencetak:"
+
+#: scheduler/ipp.c:1302
+msgid "Unable to allocate memory for file types!"
+msgstr "Tidak bisa mengalokasikan memori untuk jenis berkas!"
+
+#: cgi-bin/admin.c:1426
+msgid "Unable to cancel RSS subscription:"
+msgstr "Tidak bisa membatalkan subskripsi RSS:"
+
+#: cgi-bin/admin.c:3890
+msgid "Unable to change printer-is-shared attribute:"
+msgstr "Tidak bisa mengubah atribut printer-is-shared:"
+
+#: cgi-bin/admin.c:3006
+msgid "Unable to change printer:"
+msgstr "Tidak bisa mengubah pencetak:"
+
+#: cgi-bin/admin.c:1610 cgi-bin/admin.c:1774
+msgid "Unable to change server settings:"
+msgstr "Tidak bisa mengubah pengaturan server:"
+
+#: cups/adminutil.c:941 cups/util.c:1652
+msgid "Unable to connect to host."
+msgstr "Tidak bisa terhubung ke host."
+
+#: cups/adminutil.c:737
+#, c-format
+msgid "Unable to copy 64-bit CUPS printer driver files (%d)!"
+msgstr "Tidak bisa menyalin berkas penggerak pencetak CUPS 64-bit (%d)!"
+
+#: cups/adminutil.c:702
+#, c-format
+msgid "Unable to copy 64-bit Windows printer driver files (%d)!"
+msgstr "Tidak bisa menyalin berkas penggerak pencetak Windows 64-bit (%d)!"
+
+#: cups/adminutil.c:533
+#, c-format
+msgid "Unable to copy CUPS printer driver files (%d)!"
+msgstr "Tidak bisa menyalin berkas penggerak pencetak CUPS (%d)!"
+
+#: scheduler/ipp.c:2788
+#, c-format
+msgid "Unable to copy PPD file - %s!"
+msgstr "Tidak bisa menyalin berkas PPD - %s!"
+
+#: scheduler/ipp.c:2854
+msgid "Unable to copy PPD file!"
+msgstr "Tidak bisa menyalin berkas PPD!"
+
+#: cups/adminutil.c:498
+#, c-format
+msgid "Unable to copy Windows 2000 printer driver files (%d)!"
+msgstr "Tidak bisa menyalin berkas penggerak pencetak Windows 2000 (%d)!"
+
+#: cups/adminutil.c:621
+#, c-format
+msgid "Unable to copy Windows 9x printer driver files (%d)!"
+msgstr "Tidak bisa menyalin berkas penggerak pencetak Windows 9x (%d)!"
+
+#: scheduler/ipp.c:2765
+#, c-format
+msgid "Unable to copy interface script - %s!"
+msgstr "Tidak bisa menyalin skrip antarmuka - %s!"
+
+#: cups/util.c:607 cups/util.c:1711
+msgid "Unable to create printer-uri!"
+msgstr "Tidak bisa membuat printer-uri!"
+
+#: cgi-bin/admin.c:1824 cgi-bin/admin.c:1836
+msgid "Unable to create temporary file:"
+msgstr "Tidak bisa membuat berkas temporer:"
+
+#: cgi-bin/admin.c:2127
+msgid "Unable to delete class:"
+msgstr "Tidak bisa menghapus kelas:"
+
+#: cgi-bin/admin.c:2212
+msgid "Unable to delete printer:"
+msgstr "Tidak bisa menghapus pencetak:"
+
+#: cgi-bin/classes.c:245 cgi-bin/printers.c:254
+msgid "Unable to do maintenance command:"
+msgstr ""
+
+#: cgi-bin/admin.c:1948
+msgid "Unable to edit cupsd.conf files larger than 1MB!"
+msgstr "Tidak bisa menyunting berkas cupsd.conf lebih dari 1MB!"
+
+#: cgi-bin/ipp-var.c:361
+msgid "Unable to find destination for job!"
+msgstr "Tidak bisa menemukan tujuan untuk tugas!"
+
+#: cups/http-support.c:1509
+msgid "Unable to find printer!\n"
+msgstr "Tidak bisa menemukan pencetak!\n"
+
+#: cgi-bin/classes.c:435
+msgid "Unable to get class list:"
+msgstr "Tidak bisa memperoleh daftar kelas:"
+
+#: cgi-bin/classes.c:534
+msgid "Unable to get class status:"
+msgstr "Tidak bisa memperoleh status kelas:"
+
+#: cgi-bin/admin.c:1221
+msgid "Unable to get list of printer drivers:"
+msgstr "Tidak bisa memperoleh daftar penggerak pencetak:"
+
+#: cgi-bin/admin.c:2856
+msgid "Unable to get printer attributes:"
+msgstr "Tidak bisa memperoleh atribut pencetak:"
+
+#: cgi-bin/printers.c:452
+msgid "Unable to get printer list:"
+msgstr "Tidak bisa memperoleh daftar pencetak:"
+
+#: cgi-bin/printers.c:554
+msgid "Unable to get printer status:"
+msgstr "Tidak bisa memperoleh status pencetak:"
+
+#: cups/adminutil.c:576 cups/adminutil.c:780
+#, c-format
+msgid "Unable to install Windows 2000 printer driver files (%d)!"
+msgstr "Tidak bisa memasang berkas penggerak pencetak Windows 2000 (%d)!"
+
+#: cups/adminutil.c:650
+#, c-format
+msgid "Unable to install Windows 9x printer driver files (%d)!"
+msgstr "Tidak bisa memasang berkas penggerak pencetak Windows 9x (%d)!"
+
+#: cgi-bin/admin.c:709
+msgid "Unable to modify class:"
+msgstr "Tidak bisa mengubah kelas:"
+
+#: cgi-bin/admin.c:958 cgi-bin/admin.c:1319
+msgid "Unable to modify printer:"
+msgstr "Tidak bisa mengubah pencetak"
+
+#: cgi-bin/ipp-var.c:428 cgi-bin/ipp-var.c:517
+msgid "Unable to move job"
+msgstr "Tidak bisa memindahkan tugas"
+
+#: cgi-bin/ipp-var.c:430 cgi-bin/ipp-var.c:519
+msgid "Unable to move jobs"
+msgstr "Tidak bisa memindahkan tugas"
+
+#: cups/ppd.c:336
+msgid "Unable to open PPD file"
+msgstr "Tidak bisa membuka berkas PPD"
+
+#: cgi-bin/admin.c:3202
+msgid "Unable to open PPD file:"
+msgstr "Tidak bisa membuka berkas PPD:"
+
+#: cgi-bin/admin.c:2582
+msgid "Unable to open cupsd.conf file:"
+msgstr "Tidak bisa membuka berkas cupsd.conf:"
+
+#: scheduler/ipp.c:6710
+#, c-format
+msgid "Unable to open document %d in job %d!"
+msgstr "Tidak bisa membuka dokumen %d pada tugas %d!"
+
+#: cgi-bin/ipp-var.c:790
+msgid "Unable to print test page:"
+msgstr "Tidak bisa mencetak halaman uji:"
+
+#: cups/adminutil.c:2203
+#, c-format
+msgid "Unable to run \"%s\": %s\n"
+msgstr "Tidak bisa menjalankan \"%s\": %s\n"
+
+#: cgi-bin/ipp-var.c:594 cgi-bin/ipp-var.c:614
+msgid "Unable to send command to printer driver!"
+msgstr ""
+
+#: cups/adminutil.c:832
+#, c-format
+msgid "Unable to set Windows printer driver (%d)!"
+msgstr "Tidak bisa mengeset penggerak pencetak Windows (%d)!"
+
+#: cgi-bin/admin.c:3791
+msgid "Unable to set options:"
+msgstr "Tidak bisa mengeset opsi:"
+
+#: cgi-bin/admin.c:3093
+msgid "Unable to set server default:"
+msgstr ""
+
+#: cgi-bin/admin.c:1886
+msgid "Unable to upload cupsd.conf file:"
+msgstr "Tidak bisa mengunggah berkas cupsd.conf:"
+
+#: backend/usb-darwin.c:1953 backend/usb-darwin.c:1975
+msgid "Unable to use legacy USB class driver!\n"
+msgstr ""
+
+#: cups/http-support.c:1215
+msgid "Unauthorized"
+msgstr "Terlarang"
+
+#: cgi-bin/admin.c:3491
+msgid "Units"
+msgstr "Unit"
+
+#: cups/http-support.c:1249 cups/ppd.c:360
+msgid "Unknown"
+msgstr "Tak Dikenal"
+
+#: scheduler/ipp.c:10867
+#, c-format
+msgid "Unknown printer-error-policy \"%s\"."
+msgstr "printer-error-policy \"%s\" tak dikenal."
+
+#: scheduler/ipp.c:10850
+#, c-format
+msgid "Unknown printer-op-policy \"%s\"."
+msgstr "printer-op-policy \"%s\" tak dikenal."
+
+#: scheduler/ipp.c:418
+#, c-format
+msgid "Unsupported character set \"%s\"!"
+msgstr "Set karakter \"%s\" tak didukung!"
+
+#: scheduler/ipp.c:8563 scheduler/ipp.c:9798
+#, c-format
+msgid "Unsupported compression \"%s\"!"
+msgstr "Kompresi \"%s\" tak didukung!"
+
+#: scheduler/ipp.c:11297
+#, c-format
+msgid "Unsupported compression attribute %s!"
+msgstr "Atribut kompresi %s tak didukung!"
+
+#: scheduler/ipp.c:11325
+#, c-format
+msgid "Unsupported format \"%s\"!"
+msgstr "Format \"%s\" tak didukung!"
+
+#: scheduler/ipp.c:1420 scheduler/ipp.c:9932
+#, c-format
+msgid "Unsupported format '%s'!"
+msgstr "Format '%s' tak didukung!"
+
+#: scheduler/ipp.c:8697 scheduler/ipp.c:9915
+#, c-format
+msgid "Unsupported format '%s/%s'!"
+msgstr "Format '%s/%s' tak didukung!"
+
+#: cups/snmp.c:1113
+msgid "Unsupported value type"
+msgstr "Jenis nilai tak didukung"
+
+#: cups/http-support.c:1230
+msgid "Upgrade Required"
+msgstr "Diperlukan Naik-Tingkat"
+
+#: systemv/lpadmin.c:805
+msgid ""
+"Usage:\n"
+"\n"
+" lpadmin [-h server] -d destination\n"
+" lpadmin [-h server] -x destination\n"
+" lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n"
+" [-r remove-class] [-v device] [-D description]\n"
+" [-P ppd-file] [-o name=value]\n"
+" [-u allow:user,user] [-u deny:user,user]\n"
+"\n"
+msgstr ""
+"Penggunaan:\n"
+"\n"
+" lpadmin [-h server] -d tujuan\n"
+" lpadmin [-h server] -x tujuan\n"
+" lpadmin [-h server] -p pencetak [-c tambah-kelas] [-i antarmuka] [-m "
+"model]\n"
+" [-r buang-kelas] [-v perangkat] [-D deskripsi]\n"
+" [-P berkas-ppd] [-o nama=nilai]\n"
+" [-u allow:pengguna,pengguna] [-u deny:pengguna,"
+"pengguna]\n"
+"\n"
+
+#: filter/pdftops.c:103
+#, c-format
+msgid "Usage: %s job user title copies options [filename]\n"
+msgstr "Penggunaan: %s tugas pengguna judul salinan opsi [berkas]\n"
+
+#: backend/ipp.c:212 backend/lpd.c:184 backend/pap.c:228
+#: backend/parallel.c:127 backend/scsi.c:157 backend/serial.c:165
+#: backend/socket.c:132 backend/usb.c:183 filter/bannertops.c:118
+#: filter/hpgl-main.c:148 filter/imagetops.c:115 filter/imagetoraster.c:207
+#: filter/pstops.c:255 filter/rastertoepson.c:988 filter/rastertohp.c:713
+#: filter/rastertolabel.c:1135 filter/textcommon.c:518
+#, c-format
+msgid "Usage: %s job-id user title copies options [file]\n"
+msgstr "Penggunaan: %s id-tugas pengguna judul rangkap opsi [berkas]\n"
+
+#: filter/gziptoany.c:53
+#, c-format
+msgid "Usage: %s job-id user title copies options file\n"
+msgstr "Penggunaan: %s id-tugas pengguna judul rangkap opsi berkas\n"
+
+#: scheduler/cupsfilter.c:1329
+msgid ""
+"Usage: convert [ options ]\n"
+"\n"
+"Options:\n"
+"\n"
+" -e Use every filter from the PPD file\n"
+" -f filename Set file to be converted (otherwise stdin)\n"
+" -o filename Set file to be generated (otherwise stdout)\n"
+" -i mime/type Set input MIME type (otherwise auto-typed)\n"
+" -j mime/type Set output MIME type (otherwise application/pdf)\n"
+" -P filename.ppd Set PPD file\n"
+" -a 'name=value ...' Set option(s)\n"
+" -U username Set username for job\n"
+" -J title Set title\n"
+" -c copies Set number of copies\n"
+" -u Remove the PPD file when finished\n"
+" -D Remove the input file when finished\n"
+msgstr ""
+
+#: systemv/cupsaddsmb.c:286
+msgid ""
+"Usage: cupsaddsmb [options] printer1 ... printerN\n"
+" cupsaddsmb [options] -a\n"
+"\n"
+"Options:\n"
+" -E Encrypt the connection to the server\n"
+" -H samba-server Use the named SAMBA server\n"
+" -U samba-user Authenticate using the named SAMBA user\n"
+" -a Export all printers\n"
+" -h cups-server Use the named CUPS server\n"
+" -v Be verbose (show commands)\n"
+msgstr ""
+"Penggunaan: cupsaddsmb [opsi] pencetak1 ... pencetakN\n"
+" cupsaddsmb [opsi] -a\n"
+"\n"
+"Opsi:\n"
+" -E Mengenkripsi koneksi ke server\n"
+" -H samba-server Menggunakan server SAMBA yang diberikan\n"
+" -U samba-user Otentikasi menggunakan nama pengguna SAMBA yang "
+"diberikan\n"
+" -a Mengekspor semua pencetak\n"
+" -h cups-server Menggunakan server CUPS yang ditentukan\n"
+" -v Menjadi riuh (menampilkan perintah)\n"
+
+#: systemv/cupsctl.c:202
+msgid ""
+"Usage: cupsctl [options] [param=value ... paramN=valueN]\n"
+"\n"
+"Options:\n"
+"\n"
+" -E Enable encryption\n"
+" -U username Specify username\n"
+" -h server[:port] Specify server address\n"
+"\n"
+" --[no-]debug-logging Turn debug logging on/off\n"
+" --[no-]remote-admin Turn remote administration on/off\n"
+" --[no-]remote-any Allow/prevent access from the Internet\n"
+" --[no-]remote-printers Show/hide remote printers\n"
+" --[no-]share-printers Turn printer sharing on/off\n"
+" --[no-]user-cancel-any Allow/prevent users to cancel any job\n"
+msgstr ""
+"Penggunaan: cupsctl [opsi] [param=nilai ... paramN=nilaiN]\n"
+"\n"
+"Opsi:\n"
+"\n"
+" -E Mengaktifkan enkripsi\n"
+" -U namapengguna Menentukan nama pengguna\n"
+" -h server[:portal Menentukan alamat server\n"
+"\n"
+" --[no-]debug-logging Mengaktifkan/tidak pencatat debug\n"
+" --[no-]remote-admin Mengaktifkan/tidak administrasi jarak jauh\n"
+" --[no-]remote-any Biarkan/cegah akses dari Internet\n"
+" --[no-]remote-printers Tampilkan/sembunyikan pencetak jarak jauh\n"
+" --[no-]share-printers Mengaktifkan/tidak pencetak yang dikongsi\n"
+" --[no-]user-cancel-any Biarkan/cegah pengguna biasa membatalkan tugas\n"
+
+#: scheduler/main.c:2128
+msgid ""
+"Usage: cupsd [-c config-file] [-f] [-F] [-h] [-l]\n"
+"\n"
+"-c config-file Load alternate configuration file\n"
+"-f Run in the foreground\n"
+"-F Run in the foreground but detach\n"
+"-h Show this usage message\n"
+"-l Run cupsd from launchd(8)\n"
+msgstr ""
+"Penggunaan: cupsd [-c berkas-konfigurasi] [-f] [-F] [-h] [-l]\n"
+"\n"
+"-c berkas-konfigurasi Memuat berkas konfigurasi alternatif\n"
+"-f Berjalan pada latar depan\n"
+"-F Berjalan pada latar depan tapi terpisah\n"
+"-h Tampilkan pesan ini\n"
+"-l Menjalankan cupsd dari launchd(8)\n"
+
+#: scheduler/cupsfilter.c:1316
+msgid ""
+"Usage: cupsfilter -m mime/type [ options ] filename\n"
+"\n"
+"Options:\n"
+"\n"
+" -c cupsd.conf Set cupsd.conf file to use\n"
+" -e Use every filter from the PPD file\n"
+" -j job-id[,N] Filter file N from the specified job (default is file 1)\n"
+" -n copies Set number of copies\n"
+" -o name=value Set option(s)\n"
+" -p filename.ppd Set PPD file\n"
+" -t title Set title\n"
+msgstr ""
+"Penggunaan: cupsfilter -m mime/jenis [ opsi ] berkas\n"
+"\n"
+"Opsi:\n"
+"\n"
+" -c cupsd.conf Mengeset berkas cupsd.conf untuk digunakan\n"
+" -e Menggunakan tiap penyaring dari berkas PPD\n"
+" -j job-id[,N] Menyaring berkas N dari tugas yang diberikan (baku adalah berkas 1)\n"
+" -n copies Mengeset banyaknya salinan\n"
+" -o name=value Mengeset opsi\n"
+" -p filename.ppd Mengeset berkas PPD\n"
+" -t title Mengeset judul\n"
+
+#: systemv/cupstestdsc.c:430
+msgid ""
+"Usage: cupstestdsc [options] filename.ps [... filename.ps]\n"
+" cupstestdsc [options] -\n"
+"\n"
+"Options:\n"
+"\n"
+" -h Show program usage\n"
+"\n"
+" Note: this program only validates the DSC comments, not the PostScript "
+"itself.\n"
+msgstr ""
+"Penggunaan: cupstestdsc [opsi] berkas.ps [... berkas.ps]\n"
+" cupstestdsc [opsi] -\n"
+"\n"
+"Opsi:\n"
+"\n"
+" -h Menampilkan cara guna program\n"
+"\n"
+" Catatan: program ini hanya memvalidasi komentar DSC, bukan PostScript "
+"itu sendiri.\n"
+
+#: systemv/cupstestppd.c:3483
+msgid ""
+"Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
+" program | cupstestppd [options] -\n"
+"\n"
+"Options:\n"
+"\n"
+" -R root-directory Set alternate root\n"
+" -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
+"translations}\n"
+" Issue warnings instead of errors\n"
+" -q Run silently\n"
+" -r Use 'relaxed' open mode\n"
+" -v Be slightly verbose\n"
+" -vv Be very verbose\n"
+msgstr ""
+"Penggunaan: cupstestppd [opsi] berkas1.ppd[.gz] [... berkasN.ppd[.gz]]\n"
+" program | cupstestppd [opsi] -\n"
+"\n"
+"Opsi:\n"
+"\n"
+" -R direktori-root Mengeset root alternatif\n"
+" -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,"
+"translations}\n"
+" Menampilkan peringatan ketimbang kesalahan\n"
+" -q Berjalan senyap\n"
+" -r Menggunakan modus 'relaxed' terbuka\n"
+" -v Menjadi riuh\n"
+" -vv Menjadi sangat riuh\n"
+
+#: systemv/lpmove.c:132
+msgid "Usage: lpmove job/src dest\n"
+msgstr "Penggunaan: lpmove tugas/sumber tujuan\n"
+
+#: systemv/lpoptions.c:540
+msgid ""
+"Usage: lpoptions [-h server] [-E] -d printer\n"
+" lpoptions [-h server] [-E] [-p printer] -l\n"
+" lpoptions [-h server] [-E] -p printer -o option[=value] ...\n"
+" lpoptions [-h server] [-E] -x printer\n"
+msgstr ""
+"Penggunaan: lpoptions [-h server] [-E] -d pencetak\n"
+" lpoptions [-h server] [-E] [-p pencetak] -l\n"
+" lpoptions [-h server] [-E] -p pencetak -o opsi[=nilai] ...\n"
+" lpoptions [-h server] [-E] -x pencetak\n"
+
+#: systemv/lppasswd.c:493
+msgid "Usage: lppasswd [-g groupname]\n"
+msgstr "Penggunaan: lppasswd [-g namakelompok]\n"
+
+#: systemv/lppasswd.c:496
+msgid ""
+"Usage: lppasswd [-g groupname] [username]\n"
+" lppasswd [-g groupname] -a [username]\n"
+" lppasswd [-g groupname] -x [username]\n"
+msgstr ""
+"Penggunaan: lppasswd [-g namakelompok] [namapengguna]\n"
+" lppasswd [-g namakelompok] -a [namapengguna]\n"
+" lppasswd [-g namakelompok] -x [namapengguna]\n"
+
+#: berkeley/lpq.c:662
+msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
+msgstr ""
+"Penggunaan: lpq [-P tujuan] [-U namapengguna] [-h namahost[:portal]] [-l] "
+"[+interval]\n"
+
+#: ppdc/ppdc.cxx:408
+msgid ""
+"Usage: ppdc [options] filename.drv [ ... filenameN.drv ]\n"
+"Options:\n"
+" -D name=value Set named variable to value.\n"
+" -I include-dir Add include directory to search path.\n"
+" -c catalog.po Load the specified message catalog.\n"
+" -d output-dir Specify the output directory.\n"
+" -l lang[,lang,...] Specify the output language(s) (locale).\n"
+" -m Use the ModelName value as the filename.\n"
+" -t Test PPDs instead of generating them.\n"
+" -v Be verbose (more v's for more verbosity).\n"
+" -z Compress PPD files using GNU zip.\n"
+" --cr End lines with CR (Mac OS 9).\n"
+" --crlf End lines with CR + LF (Windows).\n"
+" --lf End lines with LF (UNIX/Linux/Mac OS X).\n"
+msgstr ""
+"Penggunaan: ppdc [opsi] berkas.drv [ ... berkasN.drv ]\n"
+"Opsi:\n"
+" -D nama=nilai Atur nilai variabel bernama.\n"
+" -I dir-inklusi Tambah direktori dalam jalur pencarian.\n"
+" -c katalog.po Memuat katalog pesan yang diinginkan.\n"
+" -d dir-keluaran Menentukan direktori keluaran.\n"
+" -l bhsa[,bhsa,...] Menentukan bahasa keluaran (lokal).\n"
+" -m Menggunakan nilai ModelName sebagai nama berkas.\n"
+" -t Menguji PPD ketimbang membuatnya.\n"
+" -v Menjadi riuh (tambahkan v lagi untuk lebih riuh).\n"
+" -z Kompres berkas PPD dengan GNU zip.\n"
+" --cr Akhiri baris dengan CR (Mac OS 9).\n"
+" --crlf Akhiri baris dengan CR + LF (Windows).\n"
+" --lf Akhiri baris dengan LF (UNIX/Linux/Mac OS X).\n"
+
+#: ppdc/ppdhtml.cxx:173
+msgid ""
+"Usage: ppdhtml [options] filename.drv >filename.html\n"
+" -D name=value Set named variable to value.\n"
+"Options:\n"
+" -I include-dir Add include directory to search path.\n"
+msgstr ""
+"Penggunaan: ppdhtml [opsi] berkas.drv >berkas.html\n"
+" -D nama=nilai Atur nilai variabel bernama.\n"
+"Opsi:\n"
+" -I dir-inklusi Tambah direktori dalam jalur pencarian.\n"
+
+#: ppdc/ppdi.cxx:129
+msgid ""
+"Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]\n"
+"Options:\n"
+" -I include-dir\n"
+" -o filename.drv\n"
+msgstr ""
+"Penggunaan: ppdi [opsi] berkas.ppd [ ... berkasN.ppd ]\n"
+"Opsi:\n"
+" -I direktori\n"
+" -o berkas.drv\n"
+
+#: ppdc/ppdmerge.cxx:370
+msgid ""
+"Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]\n"
+"Options:\n"
+" -o filename.ppd[.gz]\n"
+msgstr ""
+"Penggunaan: ppdmerge [opsi] berkas.ppd [ ... berkasN.ppd ]\n"
+"Opsi:\n"
+" -o berkas.ppd[.gz]\n"
+
+#: ppdc/ppdpo.cxx:254
+msgid ""
+"Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]\n"
+"Options:\n"
+" -D name=value Set named variable to value.\n"
+" -I include-dir Add include directory to search path.\n"
+" -v Be verbose (more v's for more verbosity).\n"
+msgstr ""
+"Penggunaan: ppdpo [opsi] -o berkas.po berkas.drv [ ... berkasN.drv ]\n"
+"Opsi:\n"
+" -D nama=nilai Mengeset nilai variabel bernama.\n"
+" -I dir-inklusi Tambah direktori dalam jalur pencarian.\n"
+" -v Menjadi riuh (tambahkan v lagi untuk lebih riuh).\n"
+
+#: backend/snmp.c:224
+msgid "Usage: snmp [host-or-ip-address]\n"
+msgstr "Penggunaan: snmp [host-atau-alamat-ip]\n"
+
+#: cups/snmp.c:1065
+msgid "Value uses indefinite length"
+msgstr "Value memiliki panjang tak terdefinisi"
+
+#: cups/snmp.c:1050
+msgid "VarBind uses indefinite length"
+msgstr "VarBind memiliki panjang tak terdefinisi"
+
+#: cups/snmp.c:1000
+msgid "Version uses indefinite length"
+msgstr "Version memiliki panjang tak terdefinisi"
+
+#: backend/pap.c:328
+#, c-format
+msgid "WARNING: Adding only the first %d printers found"
+msgstr "WARNING: Hanya menambah %d pencetak pertama yang ditemukan"
+
+#: backend/pap.c:1460 backend/usb-darwin.c:1816
+#, c-format
+msgid "WARNING: Boolean expected for waiteof option \"%s\"\n"
+msgstr "WARNING: Diharapkan boolean untuk opsi waiteof \"%s\"\n"
+
+#: backend/network.c:83 backend/pap.c:1293 backend/parallel.c:638
+#: backend/serial.c:1297 backend/usb-libusb.c:747 backend/usb-unix.c:583
+msgid "WARNING: Failed to read side-channel request!\n"
+msgstr "WARNING: Gagal membaca permintaan kanal sisi!\n"
+
+#: filter/pstops.c:2237
+#, c-format
+msgid "WARNING: Option \"%s\" cannot be included via IncludeFeature!\n"
+msgstr "WARNING: Opsi \"%s\" tidak akan disertakan via IncludeFeature!\n"
+
+#: backend/pap.c:503
+msgid "WARNING: Printer not responding\n"
+msgstr "WARNING: Pencetak tidak merespon!\n"
+
+#: backend/pap.c:831 backend/pap.c:854
+msgid "WARNING: Printer sent unexpected EOF\n"
+msgstr "WARNING: Pencetak mengirim EOF yang tak diharapkan\n"
+
+#: backend/lpd.c:618
+#, c-format
+msgid ""
+"WARNING: Remote host did not respond with command status byte after %d "
+"seconds!\n"
+msgstr ""
+"WARNING: Host jarak jauh tidak merespon pada bita status perintah usai %d "
+"detik!\n"
+
+#: backend/lpd.c:1042 backend/lpd.c:1189
+#, c-format
+msgid ""
+"WARNING: Remote host did not respond with control status byte after %d "
+"seconds!\n"
+msgstr ""
+"WARNING: Host jarak jauh tidak merespon pada bita kontrol status usai %d "
+"detik!\n"
+
+#: backend/lpd.c:1134
+#, c-format
+msgid ""
+"WARNING: Remote host did not respond with data status byte after %d "
+"seconds!\n"
+msgstr ""
+"WARNING: Host jarak jauh tidak merespon pada bita status data usai %d "
+"detik!\n"
+
+#: backend/scsi-irix.c:210 backend/scsi-linux.c:228
+#, c-format
+msgid "WARNING: SCSI command timed out (%d); retrying...\n"
+msgstr "WARNING: Perintah SCSI kehabisan waktu (%d); mencoba ulang...\n"
+
+#: filter/pstops.c:1096
+msgid ""
+"WARNING: This document does not conform to the Adobe Document Structuring "
+"Conventions and may not print correctly!\n"
+msgstr ""
+"WARNING: Dokumen ini tidak sesuai dengan Adobe Document Structuring "
+"Conventions dan mungkin tidak tercetak dengan benar!\n"
+
+#: backend/pap.c:492
+#, c-format
+msgid "WARNING: Unable to open \"%s:%s\": %s\n"
+msgstr "WARNING: Tidak bisa membuka \"%s:%s\": %s\n"
+
+#: backend/pap.c:637
+msgid "WARNING: Unable to send PAP status request"
+msgstr "WARNING: Tidak bisa mengirim permintaan status PAP"
+
+#: backend/pap.c:867
+#, c-format
+msgid "WARNING: Unexpected PAP packet of type %d\n"
+msgstr ""
+
+#: backend/pap.c:872
+#, c-format
+msgid "WARNING: Unknown PAP packet of type %d\n"
+msgstr "WARNING: Paket PAP berjenis %d tak dikenal\n"
+
+#: filter/pstops.c:2245
+#, c-format
+msgid "WARNING: Unknown choice \"%s\" for option \"%s\"!\n"
+msgstr "WARNING: Pilihan \"%s\" tak dikenal untuk opsi \"%s\"!\n"
+
+#: filter/pstops.c:2230
+#, c-format
+msgid "WARNING: Unknown option \"%s\"!\n"
+msgstr "WARNING: Opsi \"%s\" tak dikenal!\n"
+
+#: backend/serial.c:380
+#, c-format
+msgid "WARNING: Unsupported baud rate %s!\n"
+msgstr ""
+
+#: backend/pap.c:1474
+#, c-format
+msgid "WARNING: number expected for status option \"%s\"\n"
+msgstr "WARNING: angka diharapkan untuk opsi status \"%s\"\n"
+
+#: backend/ipp.c:588 backend/ipp.c:723 backend/lpd.c:855 backend/socket.c:317
+#, c-format
+msgid ""
+"WARNING: recoverable: Network host '%s' is busy; will retry in %d "
+"seconds...\n"
+msgstr ""
+
+#: cups/adminutil.c:804
+msgid "Warning, no Windows 2000 printer drivers are installed!"
+msgstr "Peringatan, tak ada penggerak pencetak Windows 2000 yang terpasang!"
+
+#: cups/ppd.c:1875
+msgid "Yes"
+msgstr "Ya"
+
+#: scheduler/client.c:2402
+#, c-format
+msgid ""
+"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%"
+"s:%d%s</A>."
+msgstr ""
+"Anda harus mengakses halaman ini melalui URL <A HREF=\"https://%s:%d%s"
+"\">https://%s:%d%s</A>."
+
+#: ppdc/sample.c:87
+msgid "You4 Envelope"
+msgstr "You4 Amplop"
+
+#: ppdc/sample.c:410
+msgid "ZPL Label Printer"
+msgstr "Pencetak Label ZPL"
+
+#: ppdc/sample.c:333
+msgid "Zebra"
+msgstr "Zebra"
+
+#: cups/notify.c:102
+msgid "aborted"
+msgstr "digagalkan"
+
+#: cups/notify.c:99
+msgid "canceled"
+msgstr "dibatalkan"
+
+#: cups/notify.c:105
+msgid "completed"
+msgstr "diselesaikan"
+
+#: scheduler/cupsfilter.c:342
+msgid "convert: Use the -f option to specify a file to convert.\n"
+msgstr "konversi: Gunakan opsi -f untuk menentukan berkas yang hendak dikonversi.\n"
+
+#: scheduler/ipp.c:6583
+msgid "cups-deviced failed to execute."
+msgstr "cups-deviced gagal dieksekusi."
+
+#: scheduler/ipp.c:7259 scheduler/ipp.c:7509
+msgid "cups-driverd failed to execute."
+msgstr "cups-driverd gagal dieksekusi."
+
+#: systemv/cupsaddsmb.c:236
+#, c-format
+msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s\n"
+msgstr "cupsaddsmb: Tidak ada berkas PPD untuk pencetak \"%s\" - %s\n"
+
+#: systemv/cupsctl.c:153
+#, c-format
+msgid "cupsctl: Unable to connect to server: %s\n"
+msgstr "cupsctl: Tidak bisa menghubungi server: %s\n"
+
+#: systemv/cupsctl.c:196
+#, c-format
+msgid "cupsctl: Unknown option \"%s\"!\n"
+msgstr "cupsctl: Opsi tak dikenal \"%s\"!\n"
+
+#: systemv/cupsctl.c:198
+#, c-format
+msgid "cupsctl: Unknown option \"-%c\"!\n"
+msgstr "cupsctl: Opsi tak dikenal \"-%c\"!\n"
+
+#: scheduler/main.c:200
+msgid "cupsd: Expected config filename after \"-c\" option!\n"
+msgstr "cupsd: Diharapkan nama berkas konfigurasi usai opsi \"-c\"!\n"
+
+#: scheduler/main.c:232 scheduler/main.c:239
+msgid "cupsd: Unable to get current directory!\n"
+msgstr "cupsd: Tidak bisa memperoleh direktori sekarang!\n"
+
+#: scheduler/main.c:303
+#, c-format
+msgid "cupsd: Unknown argument \"%s\" - aborting!\n"
+msgstr "cupsd: Argumen \"%s\" tak dikenal - digagalkan!\n"
+
+#: scheduler/main.c:296
+#, c-format
+msgid "cupsd: Unknown option \"%c\" - aborting!\n"
+msgstr "cupsd: Opsi \"%c\" tak dikenal - digagalkan!\n"
+
+#: scheduler/main.c:266
+msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n"
+msgstr ""
+"cupsd: dukungan launchd(8) tidak dikompilasi serta, menjalankan dalam modus "
+"normal.\n"
+
+#: scheduler/cupsfilter.c:1094
+#, c-format
+msgid "cupsfilter: Invalid document number %d!\n"
+msgstr "cupsfilter: Jumlah dokumen %d tidak sah!\n"
+
+#: scheduler/cupsfilter.c:1088
+#, c-format
+msgid "cupsfilter: Invalid job ID %d!\n"
+msgstr "cupsfilter: ID tugas %d tak sah!\n"
+
+#: scheduler/cupsfilter.c:350
+msgid "cupsfilter: Only one filename can be specified!\n"
+msgstr "cupsfilter: Hanya satu nama berkas yang bisa ditentukan!\n"
+
+#: scheduler/cupsfilter.c:1136
+#, c-format
+msgid "cupsfilter: Unable to get job file - %s\n"
+msgstr "cupsfilter: Tidak bisa memperoleh berkas tugas - %s\n"
+
+#: systemv/cupstestppd.c:389
+msgid "cupstestppd: The -q option is incompatible with the -v option.\n"
+msgstr "cupstestppd: Opsi -q tidak cocok dengan opsi -v.\n"
+
+#: systemv/cupstestppd.c:405
+msgid "cupstestppd: The -v option is incompatible with the -q option.\n"
+msgstr "cupstestppd: Opsi -v tidak cocok dengan opsi -q.\n"
+
+#: systemv/lpstat.c:1231 systemv/lpstat.c:1234 systemv/lpstat.c:1237
+#, c-format
+msgid "device for %s/%s: %s\n"
+msgstr "perangkat untuk %s/%s: %s\n"
+
+#: systemv/lpstat.c:1218 systemv/lpstat.c:1221 systemv/lpstat.c:1224
+#, c-format
+msgid "device for %s: %s\n"
+msgstr "perangkat untuk %s: %s\n"
+
+#: cups/snmp.c:1037
+msgid "error-index uses indefinite length"
+msgstr "error-index memiliki panjang tak terdefinisi"
+
+#: cups/snmp.c:1029
+msgid "error-status uses indefinite length"
+msgstr "error-status memiliki panjang tak terdefinisi"
+
+#: cups/notify.c:90
+msgid "held"
+msgstr "ditahan"
+
+#: berkeley/lpc.c:214
+msgid "help\t\tget help on commands\n"
+msgstr "bantuan\t\tmemperoleh bantuan dari baris perintah\n"
+
+#: cups/notify.c:131
+msgid "idle"
+msgstr "menganggur"
+
+#: scheduler/ipp.c:8232
+msgid "job-printer-uri attribute missing!"
+msgstr "Atribut job-printer-uri hilang!"
+
+#: systemv/lpadmin.c:141 systemv/lpadmin.c:453
+msgid "lpadmin: Class name can only contain printable characters!\n"
+msgstr "lpadmin: Nama kelas hanya boleh diisi karakter cetak!\n"
+
+#: systemv/lpadmin.c:750
+msgid "lpadmin: Expected PPD after '-P' option!\n"
+msgstr "lpadmin: Diharapkan PPD usai opsi '-P'!\n"
+
+#: systemv/lpadmin.c:491
+msgid "lpadmin: Expected allow/deny:userlist after '-u' option!\n"
+msgstr "lpadmin: Diharapkan allow/deny:daftarpengguna usai opsi '-u'!\n"
+
+#: systemv/lpadmin.c:442
+msgid "lpadmin: Expected class after '-r' option!\n"
+msgstr "lpadmin: Diharapkan kelas usai opsi '-r'!\n"
+
+#: systemv/lpadmin.c:130
+msgid "lpadmin: Expected class name after '-c' option!\n"
+msgstr "lpadmin: Diharapkan nama kelas usai opsi '-c'!\n"
+
+#: systemv/lpadmin.c:643
+msgid "lpadmin: Expected description after '-D' option!\n"
+msgstr "lpadmin: Diharapkan deskripsi usai opsi '-D'!\n"
+
+#: systemv/lpadmin.c:550
+msgid "lpadmin: Expected device URI after '-v' option!\n"
+msgstr "lpadmin: Diharapkan URI perangkat usai opsi '-v'!\n"
+
+#: systemv/lpadmin.c:659
+msgid "lpadmin: Expected file type(s) after '-I' option!\n"
+msgstr "lpadmin: Diharapkan jenis berkas usai opsi '-I'!\n"
+
+#: systemv/lpadmin.c:212
+msgid "lpadmin: Expected hostname after '-h' option!\n"
+msgstr "lpadmin: Diharapkan nama host usai opsi '-h'!\n"
+
+#: systemv/lpadmin.c:257
+msgid "lpadmin: Expected interface after '-i' option!\n"
+msgstr "lpadmin: Diharapkan antarmuka usai opsi '-i'!\n"
+
+#: systemv/lpadmin.c:704
+msgid "lpadmin: Expected location after '-L' option!\n"
+msgstr "lpadmin: Diharapkan lokasi usai opsi '-L'!\n"
+
+#: systemv/lpadmin.c:338
+msgid "lpadmin: Expected model after '-m' option!\n"
+msgstr "lpadmin: Diharapkan model usai opsi '-m'!\n"
+
+#: systemv/lpadmin.c:358
+msgid "lpadmin: Expected name=value after '-o' option!\n"
+msgstr "lpadmin: Diharapkan nama=nilai usai opsi '-o'!\n"
+
+#: systemv/lpadmin.c:391
+msgid "lpadmin: Expected printer after '-p' option!\n"
+msgstr "lpadmin: Diharapkan pencetak usai opsi '-p'!\n"
+
+#: systemv/lpadmin.c:174
+msgid "lpadmin: Expected printer name after '-d' option!\n"
+msgstr "lpadmin: Diharapkan nama pencetak usai opsi '-d'!\n"
+
+#: systemv/lpadmin.c:584
+msgid "lpadmin: Expected printer or class after '-x' option!\n"
+msgstr "lpadmin: Diharapkan pencetak atau kelas usai opsi '-x'!\n"
+
+#: systemv/lpadmin.c:1128
+msgid "lpadmin: No member names were seen!\n"
+msgstr "lpadmin: Tidak ada nama anggota yang terlihat!\n"
+
+#: systemv/lpadmin.c:893
+#, c-format
+msgid "lpadmin: Printer %s is already a member of class %s.\n"
+msgstr "lpadmin: Pencetak %s sudah menjadi anggota kelas %s.\n"
+
+#: systemv/lpadmin.c:1142
+#, c-format
+msgid "lpadmin: Printer %s is not a member of class %s.\n"
+msgstr "lpadmin: Pencetak %s bukanlah anggota kelas %s.\n"
+
+#: systemv/lpadmin.c:185 systemv/lpadmin.c:402 systemv/lpadmin.c:595
+msgid "lpadmin: Printer name can only contain printable characters!\n"
+msgstr "lpadmin: Nama pencetak hanya bisa mengandung karakter cetak!\n"
+
+#: systemv/lpadmin.c:115
+msgid ""
+"lpadmin: Unable to add a printer to the class:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Tidak bisa menambah pencetak ke kelas:\n"
+" Anda harus menentukan nama pencetak lebih dulu!\n"
+
+#: systemv/lpadmin.c:106 systemv/lpadmin.c:159 systemv/lpadmin.c:230
+#: systemv/lpadmin.c:291 systemv/lpadmin.c:310 systemv/lpadmin.c:376
+#: systemv/lpadmin.c:417 systemv/lpadmin.c:523 systemv/lpadmin.c:569
+#: systemv/lpadmin.c:615 systemv/lpadmin.c:677 systemv/lpadmin.c:723
+#: systemv/lpadmin.c:784
+#, c-format
+msgid "lpadmin: Unable to connect to server: %s\n"
+msgstr "lpadmin: Tidak bisa terkoneksi ke server: %s\n"
+
+#: systemv/lpadmin.c:1851
+#, c-format
+msgid "lpadmin: Unable to open PPD file \"%s\" - %s\n"
+msgstr "lpadmin: Tidak bisa membuka berkas PPD \"%s\" - %s\n"
+
+#: systemv/lpadmin.c:1460
+#, c-format
+msgid "lpadmin: Unable to open file \"%s\": %s\n"
+msgstr "lpadmin: Tidak bisa membuka berkas \"%s\": %s\n"
+
+#: systemv/lpadmin.c:426
+msgid ""
+"lpadmin: Unable to remove a printer from the class:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Tidak bisa membuang pencetak dari kelas:\n"
+" Anda harus menentukan nama pencetak lebih dulu!\n"
+
+#: systemv/lpadmin.c:732
+msgid ""
+"lpadmin: Unable to set the PPD file:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Tidak bisa mengeset berkas PPD:\n"
+" Anda harus menentukan nama pencetak lebih dulu!\n"
+
+#: systemv/lpadmin.c:532
+msgid ""
+"lpadmin: Unable to set the device URI:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Tidak bisa mengeset URI perangkat:\n"
+" Anda harus menentukan nama pencetak lebih dulu!\n"
+
+#: systemv/lpadmin.c:319
+msgid ""
+"lpadmin: Unable to set the interface script or PPD file:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Tidak bisa mengeset skrip antarmuka atau berkas PPD:\n"
+" Anda harus menentukan nama pencetak lebih dulu!\n"
+
+#: systemv/lpadmin.c:239
+msgid ""
+"lpadmin: Unable to set the interface script:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Tidak bisa mengeset skrip antarmuka:\n"
+" Anda harus menentukan nama pencetak lebih dulu!\n"
+
+#: systemv/lpadmin.c:624
+msgid ""
+"lpadmin: Unable to set the printer description:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Tidak bisa mengeset deskripsi pencetak:\n"
+" Anda harus menentukan nama pencetak lebih dulu!\n"
+
+#: systemv/lpadmin.c:686
+msgid ""
+"lpadmin: Unable to set the printer location:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Tidak bisa mengeset lokasi pencetak:\n"
+" Anda harus menentukan nama pencetak lebih dulu!\n"
+
+#: systemv/lpadmin.c:793
+msgid ""
+"lpadmin: Unable to set the printer options:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Tidak bisa mengeset opsi pencetak:\n"
+" Anda harus menentukan nama pencetak lebih dulu!\n"
+
+#: systemv/lpadmin.c:508
+#, c-format
+msgid "lpadmin: Unknown allow/deny option \"%s\"!\n"
+msgstr "lpadmin: Opsi boleh/larang tak dikenal \"%s\"!\n"
+
+#: systemv/lpadmin.c:766
+#, c-format
+msgid "lpadmin: Unknown argument '%s'!\n"
+msgstr "lpadmin: Argumen tak dikenal '%s'!\n"
+
+#: systemv/lpadmin.c:761
+#, c-format
+msgid "lpadmin: Unknown option '%c'!\n"
+msgstr "lpadmin: Opsi tak dikenal '%c'!\n"
+
+#: systemv/lpadmin.c:665
+msgid "lpadmin: Warning - content type list ignored!\n"
+msgstr "lpadmin: Peringatan - jenis isi diabaikan!\n"
+
+#: berkeley/lpc.c:81 berkeley/lpc.c:109 berkeley/lpc.c:145
+msgid "lpc> "
+msgstr "lpc> "
+
+#: systemv/lpinfo.c:143
+msgid "lpinfo: Expected 1284 device ID string after --device-id!\n"
+msgstr ""
+
+#: systemv/lpinfo.c:196
+msgid "lpinfo: Expected language after --language!\n"
+msgstr "lpinfo: Diharapkan bahasa usai --language!\n"
+
+#: systemv/lpinfo.c:213
+msgid "lpinfo: Expected make and model after --make-and-model!\n"
+msgstr "lpinfo: Diharapkan pembuat dan model usai --make-and-model!\n"
+
+#: systemv/lpinfo.c:230
+msgid "lpinfo: Expected product string after --product!\n"
+msgstr "lpinfo: Diharapkan string produk usai --product!\n"
+
+#: systemv/lpinfo.c:161
+msgid "lpinfo: Expected scheme list after --exclude-schemes!\n"
+msgstr "lpinfo: Diharapkan daftar skema usai --exclude-scemes!\n"
+
+#: systemv/lpinfo.c:179
+msgid "lpinfo: Expected scheme list after --include-schemes!\n"
+msgstr "lpinfo: Diharapkan daftar skema usai --include-schemes!\n"
+
+#: systemv/lpinfo.c:247
+msgid "lpinfo: Expected timeout after --timeout!\n"
+msgstr "lpinfo: Diharapkan waktu habis usai --timeout!\n"
+
+#: systemv/lpinfo.c:270
+#, c-format
+msgid "lpinfo: Unknown argument '%s'!\n"
+msgstr "lpinfo: Argumen tak dikenal '%s'!\n"
+
+#: systemv/lpinfo.c:264
+#, c-format
+msgid "lpinfo: Unknown option '%c'!\n"
+msgstr "lpinfo: Opsi tak dikenal '%c'!\n"
+
+#: systemv/lpinfo.c:257
+#, c-format
+msgid "lpinfo: Unknown option '%s'!\n"
+msgstr "lpinfo: Opsi tak dikenal '%s'!\n"
+
+#: systemv/lpmove.c:141
+#, c-format
+msgid "lpmove: Unable to connect to server: %s\n"
+msgstr "lpmove: Tidak bisa terkoneksi ke server: %s\n"
+
+#: systemv/lpmove.c:125
+#, c-format
+msgid "lpmove: Unknown argument '%s'!\n"
+msgstr "lpmove: Argumen tak dikenal '%s'!\n"
+
+#: systemv/lpmove.c:103
+#, c-format
+msgid "lpmove: Unknown option '%c'!\n"
+msgstr "lpmove: Opsi tak dikenal '%c'!\n"
+
+#: systemv/lpoptions.c:154 systemv/lpoptions.c:172 systemv/lpoptions.c:248
+msgid "lpoptions: No printers!?!\n"
+msgstr "lpoptions: Tidak ada pencetak!?!\n"
+
+#: systemv/lpoptions.c:223
+#, c-format
+msgid "lpoptions: Unable to add printer or instance: %s\n"
+msgstr "lpoptions: Tidak bisa menambah pencetak: %s\n"
+
+#: systemv/lpoptions.c:507
+#, c-format
+msgid "lpoptions: Unable to get PPD file for %s: %s\n"
+msgstr "lpoptions: Tidak bisa mendapatkan berkas PPD untuk %s: %s\n"
+
+#: systemv/lpoptions.c:516
+#, c-format
+msgid "lpoptions: Unable to open PPD file for %s!\n"
+msgstr "lpoptions: Tidak bisa membuka berkas PPD untuk %s!\n"
+
+#: systemv/lpoptions.c:104
+msgid "lpoptions: Unknown printer or class!\n"
+msgstr "lpoptions: Pencetak atau kelas tak dikenal!\n"
+
+#: systemv/lppasswd.c:185
+msgid "lppasswd: Only root can add or delete passwords!\n"
+msgstr "lppasswd: Hanya root yang bisa menambah atau menghapus sandi!\n"
+
+#: systemv/lppasswd.c:314
+msgid "lppasswd: Password file busy!\n"
+msgstr "lppasswd: Berkas sandi sedang sibuk!\n"
+
+#: systemv/lppasswd.c:447
+msgid "lppasswd: Password file not updated!\n"
+msgstr "lppasswd: Berkas sandi tidak diperbaharui!\n"
+
+#: systemv/lppasswd.c:414
+msgid "lppasswd: Sorry, password doesn't match!\n"
+msgstr "lppasswd: Maaf, sandi tidak cocok!\n"
+
+#: systemv/lppasswd.c:264
+msgid ""
+"lppasswd: Sorry, password rejected.\n"
+"Your password must be at least 6 characters long, cannot contain\n"
+"your username, and must contain at least one letter and number.\n"
+msgstr ""
+"lppasswd: Maaf, sandi ditolak.\n"
+"Sandi Anda harus setidaknya 6 karakter, tidak memuat\n"
+"nama pengguna Anda, dan setidaknya memiliki satu huruf serta angka.\n"
+
+#: systemv/lppasswd.c:240
+msgid "lppasswd: Sorry, passwords don't match!\n"
+msgstr "lppasswd: Maaf, sandi tidak cocok!\n"
+
+#: systemv/lppasswd.c:211 systemv/lppasswd.c:229
+#, c-format
+msgid "lppasswd: Unable to copy password string: %s\n"
+msgstr "lppasswd: Tidak bisa menyalin string sandi: %s\n"
+
+#: systemv/lppasswd.c:317 systemv/lppasswd.c:326 systemv/lppasswd.c:344
+#, c-format
+msgid "lppasswd: Unable to open password file: %s\n"
+msgstr "lppasswd: Tidak bisa membuka berkas sandi: %s\n"
+
+#: systemv/lppasswd.c:379 systemv/lppasswd.c:392 systemv/lppasswd.c:424
+#, c-format
+msgid "lppasswd: Unable to write to password file: %s\n"
+msgstr "lppasswd: Tidak bisa menulis ke berkas sandi: %s\n"
+
+#: systemv/lppasswd.c:462
+#, c-format
+msgid "lppasswd: failed to backup old password file: %s\n"
+msgstr "lppasswd: gagal mencadangkan berkas sandi yang lama: %s\n"
+
+#: systemv/lppasswd.c:475
+#, c-format
+msgid "lppasswd: failed to rename password file: %s\n"
+msgstr "lppasswd: gagal mengubah nama berkas sandi: %s\n"
+
+#: systemv/lppasswd.c:404
+#, c-format
+msgid "lppasswd: user \"%s\" and group \"%s\" do not exist.\n"
+msgstr "lppasswd: pengguna \"%s\" dan kelompok \"%s\" tidak ada.\n"
+
+#: systemv/lpstat.c:1039
+#, c-format
+msgid ""
+"lpstat: error - %s environment variable names non-existent destination \"%s"
+"\"!\n"
+msgstr ""
+"lpstat: kesalahan - nama variabel lingkungan %s bukanlah tujuan yang ada \"%s"
+"\"!\n"
+
+#: systemv/lpstat.c:969
+#, c-format
+msgid "members of class %s:\n"
+msgstr "anggota kelas %s:\n"
+
+#: berkeley/lpq.c:574
+msgid "no entries\n"
+msgstr "tak ada entri\n"
+
+#: systemv/lpstat.c:1043
+msgid "no system default destination\n"
+msgstr "tak ada tujuan sistem utama\n"
+
+#: scheduler/ipp.c:6277
+msgid "notify-events not specified!"
+msgstr "notify-events tidak dispesifikasikan!"
+
+#: scheduler/ipp.c:2114 scheduler/ipp.c:6182
+#, c-format
+msgid "notify-recipient-uri URI \"%s\" is already used!"
+msgstr "URI notify-recipient-uri \"%s\" sudah dipakai!"
+
+#: scheduler/ipp.c:2104 scheduler/ipp.c:6172
+#, c-format
+msgid "notify-recipient-uri URI \"%s\" uses unknown scheme!"
+msgstr "URI notify-recipient-uri \"%s\" memakai skema tak dikenal!"
+
+#: scheduler/ipp.c:4145 scheduler/ipp.c:7107 scheduler/ipp.c:7813
+#: scheduler/ipp.c:9278
+#, c-format
+msgid "notify-subscription-id %d no good!"
+msgstr "notify-subscription-id %d tidak baik!"
+
+#: cups/notify.c:87
+msgid "pending"
+msgstr "tunda"
+
+#: ppdc/ppdc.cxx:107 ppdc/ppdpo.cxx:93
+#, c-format
+msgid "ppdc: Adding include directory \"%s\"...\n"
+msgstr "ppdc: Menambahkan direktori \"%s\"...\n"
+
+#: ppdc/ppdpo.cxx:135
+#, c-format
+msgid "ppdc: Adding/updating UI text from %s...\n"
+msgstr "ppdf: Menambah/memperbaharui teks UI dari %s...\n"
+
+#: ppdc/ppdc-source.cxx:413
+#, c-format
+msgid "ppdc: Bad boolean value (%s) on line %d of %s.\n"
+msgstr "ppdc: Nilai boolean jelek (%s) pada baris %d dari %s.\n"
+
+#: ppdc/ppdc-source.cxx:1798
+#, c-format
+msgid "ppdc: Bad resolution name \"%s\" on line %d of %s!\n"
+msgstr "ppdc: Nama resolusi jelek \"%s\" pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1116
+#, c-format
+msgid "ppdc: Bad status keyword %s on line %d of %s!\n"
+msgstr "ppdc: Kata kunci status jelek %s pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:2035
+#, c-format
+msgid "ppdc: Bad variable substitution ($%c) on line %d of %s.\n"
+msgstr "ppdc: Subtitusi variabel jelek ($%c) pada baris %d dari %s.\n"
+
+#: ppdc/ppdc-source.cxx:2711
+#, c-format
+msgid "ppdc: Choice found on line %d of %s with no Option!\n"
+msgstr "ppdc: Ditemukan pilihan pada baris %d dari %s tanpa Option!\n"
+
+#: ppdc/ppdc-source.cxx:1700
+#, c-format
+msgid "ppdc: Duplicate #po for locale %s on line %d of %s!\n"
+msgstr "ppdc: Duplikat #po untuk lokal %s pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:935
+#, c-format
+msgid "ppdc: Expected a filter definition on line %d of %s!\n"
+msgstr "ppdc: Diharapkan definisi penyaring pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:958
+#, c-format
+msgid "ppdc: Expected a program name on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama program pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:397
+#, c-format
+msgid "ppdc: Expected boolean value on line %d of %s.\n"
+msgstr "ppdc: Diharapkan nilai boolean pada baris %d dari %s.\n"
+
+#: ppdc/ppdc-source.cxx:1096
+#, c-format
+msgid "ppdc: Expected charset after Font on line %d of %s!\n"
+msgstr ""
+
+#: ppdc/ppdc-source.cxx:450
+#, c-format
+msgid "ppdc: Expected choice code on line %d of %s.\n"
+msgstr "ppdc: Diharapkan kode pilihan pada baris %d dari %s.\n"
+
+#: ppdc/ppdc-source.cxx:438
+#, c-format
+msgid "ppdc: Expected choice name/text on line %d of %s.\n"
+msgstr "ppdc: Diharapkan nama/teks pilihan pada baris %d dari %s.\n"
+
+#: ppdc/ppdc-source.cxx:506
+#, c-format
+msgid "ppdc: Expected color order for ColorModel on line %d of %s!\n"
+msgstr "ppdc: Diharapkan urutan warna untuk ColorModel pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:495
+#, c-format
+msgid "ppdc: Expected colorspace for ColorModel on line %d of %s!\n"
+msgstr "ppdc: Diharapkan ruang warna untuk ColorModel pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:517
+#, c-format
+msgid "ppdc: Expected compression for ColorModel on line %d of %s!\n"
+msgstr "ppdc: Diharapkan kompresi untuk ColorModel pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:698
+#, c-format
+msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s!\n"
+msgstr "ppdc: Diharapkan string konstrain untuk UIConstraints pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:2897
+#, c-format
+msgid "ppdc: Expected driver type keyword following DriverType on line %d of %s!\n"
+msgstr "ppdc: Diharapkan kata kunci jenis penggerak diikuti DriverType pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:829
+#, c-format
+msgid "ppdc: Expected duplex type after Duplex on line %d of %s!\n"
+msgstr "ppdc: Diharapkan jenis dupleks usai Duplex pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1080
+#, c-format
+msgid "ppdc: Expected encoding after Font on line %d of %s!\n"
+msgstr "ppdc: Diharapkan enkode usai Font pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1691
+#, c-format
+msgid "ppdc: Expected filename after #po %s on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama berkas usai #po %s pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1208
+#, c-format
+msgid "ppdc: Expected group name/text on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama/teks kelompok pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:2611
+#, c-format
+msgid "ppdc: Expected include filename on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama berkas yang disertakan pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1504
+#, c-format
+msgid "ppdc: Expected integer on line %d of %s!\n"
+msgstr "ppdc: Diharapkan integer pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1683
+#, c-format
+msgid "ppdc: Expected locale after #po on line %d of %s!\n"
+msgstr "ppdc: Diharapkan lokal usai #po pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:356
+#, c-format
+msgid "ppdc: Expected name after %s on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama usai %s pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:3269
+#, c-format
+msgid "ppdc: Expected name after FileName on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama usai FileName pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1061
+#, c-format
+msgid "ppdc: Expected name after Font on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama usai Font pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:3100
+#, c-format
+msgid "ppdc: Expected name after Manufacturer on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama usai Manufacturer pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:3133
+#, c-format
+msgid "ppdc: Expected name after MediaSize on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama usai MediaSize pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:3223
+#, c-format
+msgid "ppdc: Expected name after ModelName on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama usai ModelName pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:3286
+#, c-format
+msgid "ppdc: Expected name after PCFileName on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama usai PCFileName pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1159
+#, c-format
+msgid "ppdc: Expected name/text after %s on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama/teks usai %s pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1248
+#, c-format
+msgid "ppdc: Expected name/text after Installable on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama/teks usai Installable pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1784
+#, c-format
+msgid "ppdc: Expected name/text after Resolution on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama/teks usai Resolution pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:482
+#, c-format
+msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nama/teks kombinasi untuk ColorModel pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1576
+#, c-format
+msgid "ppdc: Expected option name/text on line %d of %s!\n"
+msgstr "ppdc: Diharapkan opsi nama/teks pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1610
+#, c-format
+msgid "ppdc: Expected option section on line %d of %s!\n"
+msgstr "ppdc: Diharapkan opsi seksi pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1588
+#, c-format
+msgid "ppdc: Expected option type on line %d of %s!\n"
+msgstr "ppdc: Diharapkan opsi jenis pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1767
+#, c-format
+msgid "ppdc: Expected override field after Resolution on line %d of %s!\n"
+msgstr ""
+
+#: ppdc/ppdc-source.cxx:1007
+#, c-format
+msgid "ppdc: Expected real number on line %d of %s!\n"
+msgstr "ppdc: Diharapkan bilangan real pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:575
+#, c-format
+msgid ""
+"ppdc: Expected resolution/mediatype following ColorProfile on line %d of %"
+"s!\n"
+msgstr "ppdc: Diharapkan resolusi/jenis media diikuti ColorProfile pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1865
+#, c-format
+msgid ""
+"ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d "
+"of %s!\n"
+msgstr "ppdc: Diharapkan resolusi/jenis media diikuti SimpleColorProfile pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:364
+#, c-format
+msgid "ppdc: Expected selector after %s on line %d of %s!\n"
+msgstr "ppdc: Diharapan selektor usai %s pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1104
+#, c-format
+msgid "ppdc: Expected status after Font on line %d of %s!\n"
+msgstr "ppdc: Diharapkan status usai Font pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:2786
+#, c-format
+msgid "ppdc: Expected string after Copyright on line %d of %s!\n"
+msgstr "ppdc: Diharapkan string usai Copyright pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:3389
+#, c-format
+msgid "ppdc: Expected string after Version on line %d of %s!\n"
+msgstr "ppdc: Diharapkan string usai Version pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:731
+#, c-format
+msgid "ppdc: Expected two option names on line %d of %s!\n"
+msgstr "ppdc: Diharapkan dua opsi nama pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:375
+#, c-format
+msgid "ppdc: Expected value after %s on line %d of %s!\n"
+msgstr "ppdc: Diharapkan nilai usai %s pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1088
+#, c-format
+msgid "ppdc: Expected version after Font on line %d of %s!\n"
+msgstr "ppdc: Diharapkan versi usai Font pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:230
+#, c-format
+msgid "ppdc: Invalid #include/#po filename \"%s\"!\n"
+msgstr "ppdc: Nama berkas #include/#po \"%s\" tak sah!\n"
+
+#: ppdc/ppdc-source.cxx:975
+#, c-format
+msgid "ppdc: Invalid cost for filter on line %d of %s!\n"
+msgstr "ppdc: Nilai tak sah bagi penyaring pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:967
+#, c-format
+msgid "ppdc: Invalid empty MIME type for filter on line %d of %s!\n"
+msgstr "ppdc: Jenis MIME kosong tak sah untuk penyaring pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:983
+#, c-format
+msgid "ppdc: Invalid empty program name for filter on line %d of %s!\n"
+msgstr "ppdc: Nama program korong tak sah untuk penyaring pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1630
+#, c-format
+msgid "ppdc: Invalid option section \"%s\" on line %d of %s!\n"
+msgstr "ppdc: Seksi opsi \"%s\" tak sah pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:1602
+#, c-format
+msgid "ppdc: Invalid option type \"%s\" on line %d of %s!\n"
+msgstr "ppdc: Jenis opsi \"%s\" tak sah pada baris %d dari %s!\n"
+
+#: ppdc/ppdc.cxx:243 ppdc/ppdpo.cxx:123
+#, c-format
+msgid "ppdc: Loading driver information file \"%s\"...\n"
+msgstr "ppdc: Memuat berkas informasi penggerak \"%s\"...\n"
+
+#: ppdc/ppdc.cxx:179
+#, c-format
+msgid "ppdc: Loading messages for locale \"%s\"...\n"
+msgstr "ppdc: Memuat pesan untuk loakl \"%s\"...\n"
+
+#: ppdc/ppdc.cxx:120
+#, c-format
+msgid "ppdc: Loading messages from \"%s\"...\n"
+msgstr "ppdc: Memuat pesan dari \"%s\"...\n"
+
+#: ppdc/ppdc-source.cxx:2404 ppdc/ppdc-source.cxx:2636
+#, c-format
+msgid "ppdc: Missing #endif at end of \"%s\"!\n"
+msgstr "ppdc: Kehilangan #endif di akhir \"%s\"!\n"
+
+#: ppdc/ppdc-source.cxx:2505 ppdc/ppdc-source.cxx:2540
+#: ppdc/ppdc-source.cxx:2570
+#, c-format
+msgid "ppdc: Missing #if on line %d of %s!\n"
+msgstr "ppdc: Kehilangan #if pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-driver.cxx:722
+#, c-format
+msgid "ppdc: No message catalog provided for locale %s!\n"
+msgstr "ppdc: Tak tersedia katalog pesan untuk lokal %s!\n"
+
+#: ppdc/ppdc-source.cxx:1653 ppdc/ppdc-source.cxx:2874
+#: ppdc/ppdc-source.cxx:2960 ppdc/ppdc-source.cxx:3053
+#: ppdc/ppdc-source.cxx:3186 ppdc/ppdc-source.cxx:3319
+#, c-format
+msgid "ppdc: Option %s defined in two different groups on line %d of %s!\n"
+msgstr ""
+
+#: ppdc/ppdc-source.cxx:1646
+#, c-format
+msgid "ppdc: Option %s redefined with a different type on line %d of %s!\n"
+msgstr ""
+
+#: ppdc/ppdc-source.cxx:708
+#, c-format
+msgid "ppdc: Option constraint must *name on line %d of %s!\n"
+msgstr ""
+
+#: ppdc/ppdc-source.cxx:2487
+#, c-format
+msgid "ppdc: Too many nested #if's on line %d of %s!\n"
+msgstr "ppdc: Terlalu banyak #if bersarang pada baris %d dari %s!\n"
+
+#: ppdc/ppdc.cxx:346
+#, c-format
+msgid "ppdc: Unable to create PPD file \"%s\" - %s.\n"
+msgstr "ppdc: Tidak bisa membuat berkas PPD \"%s\" - %s.\n"
+
+#: ppdc/ppdc.cxx:258
+#, c-format
+msgid "ppdc: Unable to create output directory %s: %s\n"
+msgstr "ppdc: Tidak bisa membuat direktori keluaran %s: %s\n"
+
+#: ppdc/ppdc.cxx:279
+#, c-format
+msgid "ppdc: Unable to create output pipes: %s\n"
+msgstr "ppdc: Tidak bisa membuat pipa keluaran: %s\n"
+
+#: ppdc/ppdc.cxx:295 ppdc/ppdc.cxx:302
+#, c-format
+msgid "ppdc: Unable to execute cupstestppd: %s\n"
+msgstr "ppdc: Tidak bisa mengeksekusi cupstestppd: %s\n"
+
+#: ppdc/ppdc-source.cxx:1732
+#, c-format
+msgid "ppdc: Unable to find #po file %s on line %d of %s!\n"
+msgstr "ppdc: Tidak bisa menemukan berkas #po %s pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:2643
+#, c-format
+msgid "ppdc: Unable to find include file \"%s\" on line %d of %s!\n"
+msgstr "ppdc: Tidak bisa menemukan berkas yang disertakan \"%s\" pada baris %d dari %s!\n"
+
+#: ppdc/ppdc.cxx:190
+#, c-format
+msgid "ppdc: Unable to find localization for \"%s\" - %s\n"
+msgstr "ppdc: Tidak bisa menemukan lokalisasi bagi \"%s\" - %s\n"
+
+#: ppdc/ppdc.cxx:129
+#, c-format
+msgid "ppdc: Unable to load localization file \"%s\" - %s\n"
+msgstr "ppdc: Tidak bisa memuat berkas lokalisasi \"%s\" - %s\n"
+
+#: ppdc/ppdc-source.cxx:2056
+#, c-format
+msgid "ppdc: Undefined variable (%s) on line %d of %s.\n"
+msgstr "ppdc: Variabel tak berdefinisi (%s) pada baris %d dari %s.\n"
+
+#: ppdc/ppdc-source.cxx:2916
+#, c-format
+msgid "ppdc: Unknown driver type %s on line %d of %s!\n"
+msgstr "ppdc: Jenis penggerak tak dikenal %s pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:909
+#, c-format
+msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s!\n"
+msgstr "ppdc: Jenis dupleks tak dikenal \"%s\" pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:3146
+#, c-format
+msgid "ppdc: Unknown media size \"%s\" on line %d of %s!\n"
+msgstr "ppdc: Ukuran media tak dikenal \"%s\" pada baris %d dari %s!\n"
+
+#: ppdc/ppdc-source.cxx:3400
+#, c-format
+msgid "ppdc: Unknown token \"%s\" seen on line %d of %s!\n"
+msgstr ""
+
+#: ppdc/ppdc-source.cxx:1017
+#, c-format
+msgid "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s!\n"
+msgstr ""
+
+#: ppdc/ppdc-source.cxx:2166
+#, c-format
+msgid "ppdc: Unterminated string starting with %c on line %d of %s!\n"
+msgstr ""
+
+#: ppdc/ppdc.cxx:352
+#, c-format
+msgid "ppdc: Writing %s...\n"
+msgstr "ppdc: Menulis %s...\n"
+
+#: ppdc/ppdc.cxx:142
+#, c-format
+msgid "ppdc: Writing PPD files to directory \"%s\"...\n"
+msgstr "ppdc: Menulis berkas PPD ke direktori \"%s\"...\n"
+
+#: ppdc/ppdmerge.cxx:138
+#, c-format
+msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s!\n"
+msgstr "ppdmerge: LanguageVersion \"%s\" jelek pada %s!\n"
+
+#: ppdc/ppdmerge.cxx:178
+#, c-format
+msgid "ppdmerge: Ignoring PPD file %s...\n"
+msgstr "ppdmerge: Mengabaikan berkas PPD %s...\n"
+
+#: ppdc/ppdmerge.cxx:162
+#, c-format
+msgid "ppdmerge: Unable to backup %s to %s- %s\n"
+msgstr "ppdmerge: Tidak bisa mencadangkan %s ke %s- %s\n"
+
+#: systemv/lpstat.c:1769
+#, c-format
+msgid "printer %s disabled since %s -\n"
+msgstr "pencetak %s ditiadakan sejak %s -\n"
+
+#: systemv/lpstat.c:1758
+#, c-format
+msgid "printer %s is idle. enabled since %s\n"
+msgstr "pencetak %s sedang menganggur. diaktifkan sejak %s\n"
+
+#: systemv/lpstat.c:1763
+#, c-format
+msgid "printer %s now printing %s-%d. enabled since %s\n"
+msgstr "pencetak %s saat ini tengah mencetak %s-%d. diaktifkan sejak %s\n"
+
+#: systemv/lpstat.c:1881
+#, c-format
+msgid "printer %s/%s disabled since %s -\n"
+msgstr "pencetak %s/%s dinonaktifkan sejak %s -\n"
+
+#: systemv/lpstat.c:1867
+#, c-format
+msgid "printer %s/%s is idle. enabled since %s\n"
+msgstr "pencetak %s/%s sedang menganggur. diaktifkan sejak %s\n"
+
+#: systemv/lpstat.c:1874
+#, c-format
+msgid "printer %s/%s now printing %s-%d. enabled since %s\n"
+msgstr "pencetak %s/%s saat ini tengah mencetak %s-%d. diaktifkan sejak %s\n"
+
+#: cups/notify.c:93 cups/notify.c:134
+msgid "processing"
+msgstr "memproses"
+
+#: systemv/lp.c:660
+#, c-format
+msgid "request id is %s-%d (%d file(s))\n"
+msgstr "identitas permintaan adalah %s-%d (%d berkas)\n"
+
+#: cups/snmp.c:1021
+msgid "request-id uses indefinite length"
+msgstr "request-id memiliki panjang tak terdefinisi"
+
+#: systemv/lpstat.c:2008
+msgid "scheduler is not running\n"
+msgstr "penjadwal tidak berjalan\n"
+
+#: systemv/lpstat.c:2004
+msgid "scheduler is running\n"
+msgstr "penjadwal tengah berjalan\n"
+
+#: cups/adminutil.c:2274
+#, c-format
+msgid "stat of %s failed: %s"
+msgstr "status dari %s gagal: %s"
+
+#: berkeley/lpc.c:216
+msgid "status\t\tshow status of daemon and queue\n"
+msgstr "status\t\tmenampilkan status daemon dan antrian\n"
+
+#: cups/notify.c:96 cups/notify.c:137
+msgid "stopped"
+msgstr "dihentikan"
+
+#: systemv/lpstat.c:1017
+#, c-format
+msgid "system default destination: %s\n"
+msgstr "tujuan utama sistem: %s\n"
+
+#: systemv/lpstat.c:1014
+#, c-format
+msgid "system default destination: %s/%s\n"
+msgstr "tujuan utama sistem: %s/%s\n"
+
+#: cups/notify.c:108 cups/notify.c:140
+msgid "unknown"
+msgstr "tak dikenal"
+
+#: cups/notify.c:117
+msgid "untitled"
+msgstr "tak berjudul"
+
+#: cups/snmp.c:1046
+msgid "variable-bindings uses indefinite length"
+msgstr "variable-bindings memiliki panjang tak terdefinisi"
+
+
+#
+# End of "$Id$".
+#
diff --git a/man/cupstestppd.man b/man/cupstestppd.man
index 5287b76ea..d92111a75 100644
--- a/man/cupstestppd.man
+++ b/man/cupstestppd.man
@@ -12,7 +12,7 @@
.\" which should have been included with this file. If this file is
.\" file is missing or damaged, see the license at "http://www.cups.org/".
.\"
-.TH cupstestppd 1 "CUPS" "6 October 2009" "Apple Inc."
+.TH cupstestppd 1 "CUPS" "19 November 2009" "Apple Inc."
.SH NAME
cupstestppd \- test conformance of ppd files
.SH SYNOPSIS
@@ -44,6 +44,10 @@ on the standard input.
.SH OPTIONS
\fIcupstestppd\fR supports the following options:
.TP 5
+-I filename
+.br
+Ignores all PCFileName warnings.
+.TP 5
-I filters
.br
Ignores all filter errors.
diff --git a/packaging/cups.list.in b/packaging/cups.list.in
index 051f00c59..b6eb952b0 100644
--- a/packaging/cups.list.in
+++ b/packaging/cups.list.in
@@ -571,7 +571,7 @@ d 0755 root sys $SERVERROOT -
d 0755 root $CUPS_GROUP $SERVERROOT/interfaces -
d 0755 root $CUPS_GROUP $SERVERROOT/ppd -
d 0700 root $CUPS_GROUP $SERVERROOT/ssl -
-c $CUPS_PERM root $CUPS_GROUP $SERVERROOT conf/*.conf
+c $CUPS_PERM root $CUPS_GROUP $SERVERROOT/ conf/*.conf
f $CUPS_PERM root $CUPS_GROUP $SERVERROOT/cupsd.conf.default conf/cupsd.conf
%if PAMDIR
@@ -742,7 +742,7 @@ f 0444 root sys $AMANDIR/man$MAN8DIR/cups-lpd.$MAN8EXT man/cups-lpd.$MAN8EXT
# Startup scripts
%system darwin
-f 0444 root sys /System/Library/LaunchDaemons/org.cups.cupsd.plist init/org.cups.cupsd.plist
+f 0444 root sys /System/Library/LaunchDaemons/org.cups.cupsd.plist scheduler/org.cups.cupsd.plist
%preremove <<EOF
launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist || exit 0
killall cupsd || exit 0
@@ -755,7 +755,7 @@ EOF
launchctl load -D system /System/Library/LaunchDaemons/org.cups.cupsd.plist
EOF
%subpackage lpd
-f 0444 root sys /System/Library/LaunchDaemons/org.cups.cups-lpd.plist init/org.cups.cups-lpd.plist
+f 0444 root sys /System/Library/LaunchDaemons/org.cups.cups-lpd.plist scheduler/org.cups.cups-lpd.plist
%preremove <<EOF
launchctl unload /System/Library/LaunchDaemons/org.cups.cups-lpd.plist || exit 0
EOF
@@ -769,10 +769,10 @@ EOF
%subpackage
%system !darwin
-i 0755 root sys cups init/cups.sh start(@RCSTART@) stop(@RCSTOP) runlevels(@RCLEVELS@)
+i 0755 root sys cups scheduler/cups.sh start(@RCSTART@) stop(@RCSTOP) runlevels(@RCLEVELS@)
%subpackage lpd
%if XINETD
-f 0444 root sys $XINETD/cups-lpd init/cups-lpd
+f 0444 root sys $XINETD/cups-lpd scheduler/cups-lpd.xinetd
%endif
%subpackage
diff --git a/ppdc/ppdc-catalog.cxx b/ppdc/ppdc-catalog.cxx
index 22a2828af..91469e62a 100644
--- a/ppdc/ppdc-catalog.cxx
+++ b/ppdc/ppdc-catalog.cxx
@@ -168,6 +168,9 @@ ppdcCatalog::find_message(
ppdcMessage *m; // Current message
+ if (!*id)
+ return (id);
+
for (m = (ppdcMessage *)messages->first();
m;
m = (ppdcMessage *)messages->next())
diff --git a/ppdc/ppdc-driver.cxx b/ppdc/ppdc-driver.cxx
index f720e0bf0..8c113d322 100644
--- a/ppdc/ppdc-driver.cxx
+++ b/ppdc/ppdc-driver.cxx
@@ -690,7 +690,7 @@ ppdcDriver::write_ppd_file(
for (int i = 0; i < 9; i ++)
_cupsStrFormatd(profile[i], profile[i] + sizeof(profile[0]),
p->profile[i], loc);
-
+
cupsFilePrintf(fp,
"*cupsColorProfile %s/%s: \"%s %s %s %s %s %s %s %s %s %s "
"%s\"%s", p->resolution->value, p->media_type->value,
@@ -1026,7 +1026,7 @@ ppdcDriver::write_ppd_file(
if (!o->choices->count)
continue;
- if (!o->text->value || !strcmp(o->name->value, o->text->value))
+ if (!o->text->value)
cupsFilePrintf(fp, "*OpenUI *%s/%s: ", o->name->value,
catalog->find_message(o->name->value));
else
@@ -1093,9 +1093,9 @@ ppdcDriver::write_ppd_file(
c = (ppdcChoice *)o->choices->next())
{
// Write this choice...
- if (!c->text->value || !strcmp(c->name->value, c->text->value))
- cupsFilePrintf(fp, "*%s %s: \"%s\"%s", o->name->value,
- catalog->find_message(c->name->value),
+ if (!c->text->value)
+ cupsFilePrintf(fp, "*%s %s/%s: \"%s\"%s", o->name->value,
+ c->name->value, catalog->find_message(c->name->value),
c->code->value, lf);
else
cupsFilePrintf(fp, "*%s %s/%s: \"%s\"%s", o->name->value,
@@ -1138,10 +1138,11 @@ ppdcDriver::write_ppd_file(
if (!a->selector->value || !a->selector->value[0])
cupsFilePrintf(fp, "*%s", a->name->value);
else if (!a->text->value || !a->text->value[0])
- cupsFilePrintf(fp, "*%s %s", a->name->value, a->selector->value);
+ cupsFilePrintf(fp, "*%s %s/%s", a->name->value, a->selector->value,
+ catalog->find_message(a->selector->value));
else
cupsFilePrintf(fp, "*%s %s/%s", a->name->value, a->selector->value,
- a->text->value);
+ catalog->find_message(a->text->value));
cupsFilePrintf(fp, ": %s%s", a->value->value, lf);
}
@@ -1278,12 +1279,8 @@ ppdcDriver::write_ppd_file(
// Finally the localizable attributes...
for (a = (ppdcAttr *)attrs->first(); a; a = (ppdcAttr *)attrs->next())
{
- if ((!a->text || !a->text->value || !a->text->value[0]) &&
- strncmp(a->name->value, "Custom", 6) &&
- strncmp(a->name->value, "ParamCustom", 11))
- continue;
-
if (!a->localizable &&
+ (!a->text || !a->text->value || !a->text->value[0]) &&
strcmp(a->name->value, "APCustomColorMatchingName") &&
strcmp(a->name->value, "APPrinterPreset") &&
strcmp(a->name->value, "cupsICCProfile") &&
@@ -1291,7 +1288,7 @@ ppdcDriver::write_ppd_file(
strcmp(a->name->value, "cupsMarkerName") &&
strncmp(a->name->value, "Custom", 6) &&
strncmp(a->name->value, "ParamCustom", 11))
- continue;
+ continue;
cupsFilePrintf(fp, "*%s.%s %s/%s: \"%s\"%s", locale->value,
a->name->value, a->selector->value,
diff --git a/scheduler/conf.c b/scheduler/conf.c
index ee6b0a9a0..abcb0f183 100644
--- a/scheduler/conf.c
+++ b/scheduler/conf.c
@@ -631,7 +631,7 @@ cupsdReadConfiguration(void)
MaxClients = 100;
MaxClientsPerHost = 0;
MaxLogSize = 1024 * 1024;
- MaxPrinterHistory = 10;
+ MaxPrinterHistory = 0;
MaxRequestSize = 0;
MultipleOperationTimeout = DEFAULT_TIMEOUT;
ReloadTimeout = DEFAULT_KEEPALIVE;
@@ -969,7 +969,7 @@ cupsdReadConfiguration(void)
Group, 1, 1) < 0 ||
cupsdCheckPermissions(StateDir, "certs", RunUser ? 0711 : 0511, User,
SystemGroupIDs[0], 1, 1) < 0 ||
- cupsdCheckPermissions(ServerRoot, NULL, 0755, RunUser,
+ cupsdCheckPermissions(ServerRoot, NULL, 0755, RunUser,
Group, 1, 0) < 0 ||
cupsdCheckPermissions(ServerRoot, "ppd", 0755, RunUser,
Group, 1, 1) < 0 ||
@@ -1896,7 +1896,7 @@ parse_aaa(cupsd_location_t *loc, /* I - Location */
cupsdDenyIP(loc, ones, zeros);
}
#ifdef AF_INET6
- else if (value[0] == '*' || value[0] == '.' ||
+ else if (value[0] == '*' || value[0] == '.' ||
(!isdigit(value[0] & 255) && value[0] != '['))
#else
else if (value[0] == '*' || value[0] == '.' || !isdigit(value[0] & 255))
@@ -2666,7 +2666,7 @@ read_configuration(cups_file_t *fp) /* I - File to read from */
for (addr = addrlist; addr; addr = addr->next)
if (addr->addr.addr.sa_family == AF_INET)
- break;
+ break;
if (addr)
{
@@ -2676,7 +2676,7 @@ read_configuration(cups_file_t *fp) /* I - File to read from */
cupsdLogMessage(CUPSD_LOG_INFO,
"Sending browsing info to %s:%d (IPv4)",
temp, ntohs(dira->to.ipv4.sin_port));
-
+
NumBrowsers ++;
}
else
@@ -2816,7 +2816,7 @@ read_configuration(cups_file_t *fp) /* I - File to read from */
cupsdDenyIP(location, ones, zeros);
}
#ifdef AF_INET6
- else if (value[0] == '*' || value[0] == '.' ||
+ else if (value[0] == '*' || value[0] == '.' ||
(!isdigit(value[0] & 255) && value[0] != '['))
#else
else if (value[0] == '*' || value[0] == '.' || !isdigit(value[0] & 255))
@@ -2912,7 +2912,7 @@ read_configuration(cups_file_t *fp) /* I - File to read from */
*/
#ifdef AF_INET6
- if (value[0] == '*' || value[0] == '.' ||
+ if (value[0] == '*' || value[0] == '.' ||
(!isdigit(value[0] & 255) && value[0] != '['))
#else
if (value[0] == '*' || value[0] == '.' || !isdigit(value[0] & 255))
@@ -2996,14 +2996,14 @@ read_configuration(cups_file_t *fp) /* I - File to read from */
for (addr = addrlist; addr; addr = addr->next)
if (addr->addr.addr.sa_family == AF_INET)
- break;
+ break;
if (addr)
{
memcpy(&(relay->to), &(addrlist->addr), sizeof(relay->to));
-
+
httpAddrString(&(relay->to), temp, sizeof(temp));
-
+
if (relay->from.type == CUPSD_AUTH_IP)
snprintf(temp2, sizeof(temp2), "%u.%u.%u.%u/%u.%u.%u.%u",
relay->from.mask.ip.address[0] >> 24,
@@ -3016,10 +3016,10 @@ read_configuration(cups_file_t *fp) /* I - File to read from */
relay->from.mask.ip.netmask[0] & 255);
else
strlcpy(temp2, relay->from.mask.name.name, sizeof(temp2));
-
+
cupsdLogMessage(CUPSD_LOG_INFO, "Relaying from %s to %s:%d (IPv4)",
temp2, temp, ntohs(relay->to.ipv4.sin_port));
-
+
NumRelays ++;
}
else
@@ -3580,7 +3580,7 @@ read_location(cups_file_t *fp, /* I - Configuration file */
else
continue;
}
-
+
if ((loc = cupsdCopyLocation(&parent)) == NULL)
return (0);
@@ -3722,7 +3722,7 @@ read_policy(cups_file_t *fp, /* I - Configuration file */
else
continue;
}
-
+
/*
* Scan for IPP operation names...
*/
diff --git a/scheduler/dirsvc.c b/scheduler/dirsvc.c
index 49b267273..f8d882e3a 100644
--- a/scheduler/dirsvc.c
+++ b/scheduler/dirsvc.c
@@ -50,6 +50,7 @@
* printer or update the broadcast contents.
* dnssdStop() - Stop all DNS-SD registrations.
* dnssdUpdate() - Handle DNS-SD queries.
+ * get_auth_info_required() - Get the auth-info-required value to advertise.
* get_hostconfig() - Get an /etc/hostconfig service setting.
* is_local_queue() - Determine whether the URI points at a local
* queue.
@@ -63,6 +64,7 @@
* send_ldap_ou() - Send LDAP ou registrations.
* send_ldap_browse() - Send LDAP printer registrations.
* ldap_dereg_printer() - Delete printer from directory
+ * ldap_dereg_ou() - Remove the organizational unit.
* send_slp_browse() - Register the specified printer with SLP.
* slp_attr_callback() - SLP attribute callback
* slp_dereg_printer() - SLPDereg() the specified printer
@@ -996,93 +998,91 @@ cupsdSendBrowseList(void)
* 'ldap_rebind_proc()' - Callback function for LDAP rebind
*/
-static int
-ldap_rebind_proc (LDAP *RebindLDAPHandle,
- LDAP_CONST char *refsp,
- ber_tag_t request,
- ber_int_t msgid,
- void *params)
+static int /* O - Result code */
+ldap_rebind_proc(
+ LDAP *RebindLDAPHandle, /* I - LDAP handle */
+ LDAP_CONST char *refsp, /* I - ??? */
+ ber_tag_t request, /* I - ??? */
+ ber_int_t msgid, /* I - ??? */
+ void *params) /* I - ??? */
{
- int rc;
+ int rc; /* Result code */
+# if LDAP_API_VERSION > 3000
+ struct berval bval; /* Bind value */
+# endif /* LDAP_API_VERSION > 3000 */
/*
* Bind to new LDAP server...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "ldap_rebind_proc: Rebind to %s", refsp);
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "ldap_rebind_proc: Rebind to %s", refsp);
# if LDAP_API_VERSION > 3000
- struct berval bval;
bval.bv_val = BrowseLDAPPassword;
bval.bv_len = (BrowseLDAPPassword == NULL) ? 0 : strlen(BrowseLDAPPassword);
- rc = ldap_sasl_bind_s(RebindLDAPHandle, BrowseLDAPBindDN, LDAP_SASL_SIMPLE, &bval, NULL, NULL, NULL);
+ rc = ldap_sasl_bind_s(RebindLDAPHandle, BrowseLDAPBindDN, LDAP_SASL_SIMPLE,
+ &bval, NULL, NULL, NULL);
# else
- rc = ldap_bind_s(RebindLDAPHandle, BrowseLDAPBindDN,
- BrowseLDAPPassword, LDAP_AUTH_SIMPLE);
+ rc = ldap_bind_s(RebindLDAPHandle, BrowseLDAPBindDN, BrowseLDAPPassword,
+ LDAP_AUTH_SIMPLE);
# endif /* LDAP_API_VERSION > 3000 */
return (rc);
}
-# else /* defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000) */
+# else /* defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000) */
/*
* 'ldap_rebind_proc()' - Callback function for LDAP rebind
*/
-static int
-ldap_rebind_proc (LDAP *RebindLDAPHandle,
- char **dnp,
- char **passwdp,
- int *authmethodp,
- int freeit,
- void *arg)
+static int /* O - Result code */
+ldap_rebind_proc(
+ LDAP *RebindLDAPHandle, /* I - LDAP handle */
+ char **dnp, /* I - ??? */
+ char **passwdp, /* I - ??? */
+ int *authmethodp, /* I - ??? */
+ int freeit, /* I - ??? */
+ void *arg) /* I - ??? */
{
- switch ( freeit ) {
-
- case 1:
-
- /*
- * Free current values...
- */
-
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "ldap_rebind_proc: Free values...");
-
- if ( dnp && *dnp ) {
- free( *dnp );
- }
- if ( passwdp && *passwdp ) {
- free( *passwdp );
- }
- break;
+ switch (freeit)
+ {
+ case 1:
+ /*
+ * Free current values...
+ */
- case 0:
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "ldap_rebind_proc: Free values...");
- /*
- * Return credentials for LDAP referal...
- */
+ if (dnp && *dnp)
+ free(*dnp);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "ldap_rebind_proc: Return necessary values...");
+ if (passwdp && *passwdp)
+ free(*passwdp);
+ break;
- *dnp = strdup(BrowseLDAPBindDN);
- *passwdp = strdup(BrowseLDAPPassword);
- *authmethodp = LDAP_AUTH_SIMPLE;
- break;
+ case 0:
+ /*
+ * Return credentials for LDAP referal...
+ */
- default:
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "ldap_rebind_proc: Return necessary values...");
- /*
- * Should never happen...
- */
+ *dnp = strdup(BrowseLDAPBindDN);
+ *passwdp = strdup(BrowseLDAPPassword);
+ *authmethodp = LDAP_AUTH_SIMPLE;
+ break;
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "LDAP rebind has been called with wrong freeit value!");
- break;
+ default:
+ /*
+ * Should never happen...
+ */
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "LDAP rebind has been called with wrong freeit value!");
+ break;
}
return (LDAP_SUCCESS);
@@ -1096,25 +1096,22 @@ ldap_rebind_proc (LDAP *RebindLDAPHandle,
* 'ldap_connect()' - Start new LDAP connection
*/
-static LDAP *
+static LDAP * /* O - LDAP handle */
ldap_connect(void)
{
- /*
- * Open LDAP handle...
- */
-
- int rc; /* LDAP API status */
- int version = 3; /* LDAP version */
- struct berval bv = {0, ""}; /* SASL bind value */
- LDAP *TempBrowseLDAPHandle=NULL; /* Temporary LDAP Handle */
+ int rc; /* LDAP API status */
+ int version = 3; /* LDAP version */
+ struct berval bv = {0, ""}; /* SASL bind value */
+ LDAP *TempBrowseLDAPHandle=NULL;
+ /* Temporary LDAP Handle */
# if defined(HAVE_LDAP_SSL) && defined (HAVE_MOZILLA_LDAP)
- int ldap_ssl = 0; /* LDAP SSL indicator */
- int ssl_err = 0; /* LDAP SSL error value */
+ int ldap_ssl = 0; /* LDAP SSL indicator */
+ int ssl_err = 0; /* LDAP SSL error value */
# endif /* defined(HAVE_LDAP_SSL) && defined (HAVE_MOZILLA_LDAP) */
+
# ifdef HAVE_OPENLDAP
# ifdef HAVE_LDAP_SSL
-
/*
* Set the certificate file to use for encrypted LDAP sessions...
*/
@@ -1122,7 +1119,7 @@ ldap_connect(void)
if (BrowseLDAPCACertFile)
{
cupsdLogMessage(CUPSD_LOG_DEBUG,
- "cupsdStartBrowsing: Setting CA certificate file \"%s\"",
+ "ldap_connect: Setting CA certificate file \"%s\"",
BrowseLDAPCACertFile);
if ((rc = ldap_set_option(NULL, LDAP_OPT_X_TLS_CACERTFILE,
@@ -1131,8 +1128,8 @@ ldap_connect(void)
"Unable to set CA certificate file for LDAP "
"connections: %d - %s", rc, ldap_err2string(rc));
}
-
# endif /* HAVE_LDAP_SSL */
+
/*
* Initialize OPENLDAP connection...
* LDAP stuff currently only supports ldapi EXTERNAL SASL binds...
@@ -1153,26 +1150,27 @@ ldap_connect(void)
* Split LDAP URI into its components...
*/
- if (! BrowseLDAPServer)
+ if (!BrowseLDAPServer)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "BrowseLDAPServer not configured! Disable LDAP browsing!");
- BrowseLocalProtocols &= ~BROWSE_LDAP;
+ cupsdLogMessage(CUPSD_LOG_ERROR, "BrowseLDAPServer not configured!");
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Disabling LDAP browsing!");
+ BrowseLocalProtocols &= ~BROWSE_LDAP;
BrowseRemoteProtocols &= ~BROWSE_LDAP;
return (NULL);
}
- sscanf(BrowseLDAPServer, "%10[^:]://%254[^:/]:%d", ldap_protocol, ldap_host, &ldap_port);
+ sscanf(BrowseLDAPServer, "%10[^:]://%254[^:/]:%d", ldap_protocol, ldap_host,
+ &ldap_port);
- if (strcmp(ldap_protocol, "ldap") == 0) {
+ if (!strcmp(ldap_protocol, "ldap"))
ldap_ssl = 0;
- } else if (strcmp(ldap_protocol, "ldaps") == 0) {
+ else if (!strcmp(ldap_protocol, "ldaps"))
ldap_ssl = 1;
- } else {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "unrecognised ldap protocol (%s)!", ldap_protocol);
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Disable LDAP browsing!");
+ else
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unrecognized LDAP protocol (%s)!",
+ ldap_protocol);
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Disabling LDAP browsing!");
BrowseLocalProtocols &= ~BROWSE_LDAP;
BrowseRemoteProtocols &= ~BROWSE_LDAP;
return (NULL);
@@ -1186,15 +1184,14 @@ ldap_connect(void)
ldap_port = LDAP_PORT;
}
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "LDAP Connection Details: PROT:%s HOST:%s PORT:%d",
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "ldap_connect: PROT:%s HOST:%s PORT:%d",
ldap_protocol, ldap_host, ldap_port);
/*
* Initialize LDAP connection...
*/
- if (! ldap_ssl)
+ if (!ldap_ssl)
{
if ((TempBrowseLDAPHandle = ldap_init(ldap_host, ldap_port)) == NULL)
rc = LDAP_OPERATIONS_ERROR;
@@ -1205,19 +1202,23 @@ ldap_connect(void)
}
else
{
-
/*
* Initialize SSL LDAP connection...
*/
+
if (BrowseLDAPCACertFile)
{
rc = ldapssl_client_init(BrowseLDAPCACertFile, (void *)NULL);
- if (rc != LDAP_SUCCESS) {
+ if (rc != LDAP_SUCCESS)
+ {
cupsdLogMessage(CUPSD_LOG_ERROR,
"Failed to initialize LDAP SSL client!");
rc = LDAP_OPERATIONS_ERROR;
- } else {
- if ((TempBrowseLDAPHandle = ldapssl_init(ldap_host, ldap_port, 1)) == NULL)
+ }
+ else
+ {
+ if ((TempBrowseLDAPHandle = ldapssl_init(ldap_host, ldap_port,
+ 1)) == NULL)
rc = LDAP_OPERATIONS_ERROR;
else
rc = LDAP_SUCCESS;
@@ -1237,7 +1238,7 @@ ldap_connect(void)
*/
cupsdLogMessage(CUPSD_LOG_ERROR,
- "LDAP client libraries does not support TLS");
+ "LDAP client libraries do not support SSL");
rc = LDAP_OPERATIONS_ERROR;
# endif /* HAVE_LDAP_SSL */
@@ -1250,105 +1251,104 @@ ldap_connect(void)
if (rc != LDAP_SUCCESS)
{
- if ((rc == LDAP_SERVER_DOWN) || (rc == LDAP_CONNECT_ERROR))
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Unable to initialize LDAP! Temporary disable LDAP browsing...");
- }
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to initialize LDAP!");
+
+ if (rc == LDAP_SERVER_DOWN || rc == LDAP_CONNECT_ERROR)
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Temporarily disabling LDAP browsing...");
else
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Unable to initialize LDAP! Disable LDAP browsing!");
- BrowseLocalProtocols &= ~BROWSE_LDAP;
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Disabling LDAP browsing!");
+
+ BrowseLocalProtocols &= ~BROWSE_LDAP;
BrowseRemoteProtocols &= ~BROWSE_LDAP;
}
ldap_disconnect(TempBrowseLDAPHandle);
- TempBrowseLDAPHandle = NULL;
+
+ return (NULL);
}
/*
* Upgrade LDAP version...
*/
- else if (ldap_set_option(TempBrowseLDAPHandle, LDAP_OPT_PROTOCOL_VERSION,
+ if (ldap_set_option(TempBrowseLDAPHandle, LDAP_OPT_PROTOCOL_VERSION,
(const void *)&version) != LDAP_SUCCESS)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Unable to set LDAP protocol version %d! Disable LDAP browsing!",
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to set LDAP protocol version %d!",
version);
- BrowseLocalProtocols &= ~BROWSE_LDAP;
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Disabling LDAP browsing!");
+
+ BrowseLocalProtocols &= ~BROWSE_LDAP;
BrowseRemoteProtocols &= ~BROWSE_LDAP;
ldap_disconnect(TempBrowseLDAPHandle);
- TempBrowseLDAPHandle = NULL;
+
+ return (NULL);
}
- else
- {
- /*
- * Register LDAP rebind procedure...
- */
+ /*
+ * Register LDAP rebind procedure...
+ */
# ifdef HAVE_LDAP_REBIND_PROC
# if defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000)
- rc = ldap_set_rebind_proc(TempBrowseLDAPHandle, &ldap_rebind_proc, (void *)NULL);
- if ( rc != LDAP_SUCCESS )
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Setting LDAP rebind function failed with status %d: %s",
- rc, ldap_err2string(rc));
+ rc = ldap_set_rebind_proc(TempBrowseLDAPHandle, &ldap_rebind_proc,
+ (void *)NULL);
+ if (rc != LDAP_SUCCESS)
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Setting LDAP rebind function failed with status %d: %s",
+ rc, ldap_err2string(rc));
# else
- ldap_set_rebind_proc(TempBrowseLDAPHandle, &ldap_rebind_proc, (void *)NULL);
+ ldap_set_rebind_proc(TempBrowseLDAPHandle, &ldap_rebind_proc, (void *)NULL);
# endif /* defined(LDAP_API_FEATURE_X_OPENLDAP) && (LDAP_API_VERSION > 2000) */
# endif /* HAVE_LDAP_REBIND_PROC */
- /*
- * Start LDAP bind...
- */
+ /*
+ * Start LDAP bind...
+ */
# if LDAP_API_VERSION > 3000
- struct berval bval;
- bval.bv_val = BrowseLDAPPassword;
- bval.bv_len = (BrowseLDAPPassword == NULL) ? 0 : strlen(BrowseLDAPPassword);
+ struct berval bval;
+ bval.bv_val = BrowseLDAPPassword;
+ bval.bv_len = (BrowseLDAPPassword == NULL) ? 0 : strlen(BrowseLDAPPassword);
+
+ if (!BrowseLDAPServer || !strcasecmp(BrowseLDAPServer, "localhost"))
+ rc = ldap_sasl_bind_s(TempBrowseLDAPHandle, NULL, "EXTERNAL", &bv, NULL,
+ NULL, NULL);
+ else
+ rc = ldap_sasl_bind_s(TempBrowseLDAPHandle, BrowseLDAPBindDN, LDAP_SASL_SIMPLE, &bval, NULL, NULL, NULL);
- if (!BrowseLDAPServer || !strcasecmp(BrowseLDAPServer, "localhost"))
- rc = ldap_sasl_bind_s(TempBrowseLDAPHandle, NULL, "EXTERNAL", &bv, NULL,
- NULL, NULL);
- else
- rc = ldap_sasl_bind_s(TempBrowseLDAPHandle, BrowseLDAPBindDN, LDAP_SASL_SIMPLE, &bval, NULL, NULL, NULL);
# else
- rc = ldap_bind_s(TempBrowseLDAPHandle, BrowseLDAPBindDN,
- BrowseLDAPPassword, LDAP_AUTH_SIMPLE);
+ rc = ldap_bind_s(TempBrowseLDAPHandle, BrowseLDAPBindDN,
+ BrowseLDAPPassword, LDAP_AUTH_SIMPLE);
# endif /* LDAP_API_VERSION > 3000 */
- if (rc != LDAP_SUCCESS)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "LDAP bind failed with error %d: %s",
- rc, ldap_err2string(rc));
+ if (rc != LDAP_SUCCESS)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "LDAP bind failed with error %d: %s",
+ rc, ldap_err2string(rc));
+
# if defined(HAVE_LDAP_SSL) && defined (HAVE_MOZILLA_LDAP)
- if (ldap_ssl && ((rc == LDAP_SERVER_DOWN) || (rc == LDAP_CONNECT_ERROR)))
- {
- ssl_err = PORT_GetError();
- if (ssl_err != 0)
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "LDAP SSL error %d: %s",
- ssl_err, ldapssl_err2string(ssl_err));
- }
-# endif /* defined(HAVE_LDAP_SSL) && defined (HAVE_MOZILLA_LDAP) */
- ldap_disconnect(TempBrowseLDAPHandle);
- TempBrowseLDAPHandle = NULL;
- }
- else
+ if (ldap_ssl && (rc == LDAP_SERVER_DOWN || rc == LDAP_CONNECT_ERROR))
{
- cupsdLogMessage(CUPSD_LOG_INFO,
- "LDAP connection established");
+ ssl_err = PORT_GetError();
+ if (ssl_err != 0)
+ cupsdLogMessage(CUPSD_LOG_ERROR, "LDAP SSL error %d: %s", ssl_err,
+ ldapssl_err2string(ssl_err));
}
+# endif /* defined(HAVE_LDAP_SSL) && defined (HAVE_MOZILLA_LDAP) */
+
+ ldap_disconnect(TempBrowseLDAPHandle);
+ return (NULL);
}
+
+ cupsdLogMessage(CUPSD_LOG_INFO, "LDAP connection established");
+
return (TempBrowseLDAPHandle);
}
@@ -1360,24 +1360,23 @@ ldap_connect(void)
static void
ldap_reconnect(void)
{
- LDAP *TempBrowseLDAPHandle = NULL; /* Temp Handle to LDAP server */
+ LDAP *TempBrowseLDAPHandle = NULL; /* Temp Handle to LDAP server */
- cupsdLogMessage(CUPSD_LOG_INFO,
- "Try LDAP reconnect...");
/*
* Get a new LDAP Handle and replace the global Handle
* if the new connection was successful
*/
+ cupsdLogMessage(CUPSD_LOG_INFO, "Try LDAP reconnect...");
+
TempBrowseLDAPHandle = ldap_connect();
if (TempBrowseLDAPHandle != NULL)
{
if (BrowseLDAPHandle != NULL)
- {
ldap_disconnect(BrowseLDAPHandle);
- }
+
BrowseLDAPHandle = TempBrowseLDAPHandle;
}
}
@@ -1388,9 +1387,10 @@ ldap_reconnect(void)
*/
static void
-ldap_disconnect(LDAP *ld) /* I - LDAP handle */
+ldap_disconnect(LDAP *ld) /* I - LDAP handle */
{
- int rc; /* return code */
+ int rc; /* Return code */
+
/*
* Close LDAP handle...
@@ -1401,6 +1401,7 @@ ldap_disconnect(LDAP *ld) /* I - LDAP handle */
# else
rc = ldap_unbind_s(ld);
# endif /* defined(HAVE_OPENLDAP) && LDAP_API_VERSION > 3000 */
+
if (rc != LDAP_SUCCESS)
cupsdLogMessage(CUPSD_LOG_ERROR,
"Unbind from LDAP server failed with status %d: %s",
@@ -3971,7 +3972,7 @@ send_cups_browse(cupsd_printer_t *p) /* I - Printer to send */
* 'ldap_search_rec()' - LDAP Search with reconnect
*/
-static int
+static int /* O - Return code */
ldap_search_rec(LDAP *ld, /* I - LDAP handler */
char *base, /* I - Base dn */
int scope, /* I - LDAP search scope */
@@ -4040,11 +4041,9 @@ ldap_freeres(LDAPMessage *entry) /* I - LDAP handler */
rc = ldap_msgfree(entry);
if (rc == -1)
- cupsdLogMessage(CUPSD_LOG_WARN,
- "Can't free LDAPMessage!");
+ cupsdLogMessage(CUPSD_LOG_WARN, "Can't free LDAPMessage!");
else if (rc == 0)
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "Freeing LDAPMessage was unnecessary");
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "Freeing LDAPMessage was unnecessary");
}
@@ -4052,7 +4051,7 @@ ldap_freeres(LDAPMessage *entry) /* I - LDAP handler */
* 'ldap_getval_char()' - Get first LDAP value and convert to string
*/
-static int
+static int /* O - Return code */
ldap_getval_firststring(
LDAP *ld, /* I - LDAP handler */
LDAPMessage *entry, /* I - LDAP message or search result */
@@ -4082,7 +4081,6 @@ ldap_getval_firststring(
}
else
{
-
/*
* Check size and copy value into our string...
*/
@@ -4104,7 +4102,7 @@ ldap_getval_firststring(
ldap_value_free_len(bval);
}
# else
- char **value; /* LDAP value */
+ char **value; /* LDAP value */
/*
* Get value from LDAPMessage...
@@ -4114,8 +4112,7 @@ ldap_getval_firststring(
{
rc = -1;
dn = ldap_get_dn(ld, entry);
- cupsdLogMessage(CUPSD_LOG_WARN,
- "Failed to get LDAP value %s for %s!",
+ cupsdLogMessage(CUPSD_LOG_WARN, "Failed to get LDAP value %s for %s!",
attr, dn);
ldap_memfree(dn);
}
@@ -4168,11 +4165,10 @@ send_ldap_ou(char *ou, /* I - Servername/ou to register */
* Reconnect if LDAP Handle is invalid...
*/
- if (! BrowseLDAPHandle)
+ if (!BrowseLDAPHandle)
{
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "send_ldap_ou: LDAP Handle is invalid. Try "
- "reconnecting...");
+ "send_ldap_ou: LDAP Handle is invalid. Try reconnecting...");
ldap_reconnect();
return;
}
@@ -4630,6 +4626,10 @@ ldap_dereg_printer(cupsd_printer_t *p) /* I - Printer to deregister */
}
+/*
+ * 'ldap_dereg_ou()' - Remove the organizational unit.
+ */
+
static void
ldap_dereg_ou(char *ou, /* I - Organizational unit (servername) */
char *basedn) /* I - Dase dn */
@@ -4688,7 +4688,6 @@ ldap_dereg_ou(char *ou, /* I - Organizational unit (servername) */
"LDAP delete for %s failed with status %d: %s",
ou, rc, ldap_err2string(rc));
}
-
}
}
#endif /* HAVE_LDAP */
diff --git a/scheduler/ipp.c b/scheduler/ipp.c
index 12c097374..f95417e64 100644
--- a/scheduler/ipp.c
+++ b/scheduler/ipp.c
@@ -1706,8 +1706,6 @@ add_job(cupsd_client_t *con, /* I - Client connection */
"job-media-sheets-completed", 0);
ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL,
printer->uri);
- ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL,
- title);
if ((attr = ippFindAttribute(job->attrs, "job-k-octets",
IPP_TAG_INTEGER)) != NULL)
@@ -3199,7 +3197,7 @@ apple_register_profiles(
num_profiles ++;
}
-
+
/*
* If we have profiles, add them...
*/
@@ -3245,7 +3243,7 @@ apple_register_profiles(
snprintf(q_keyword, sizeof(q_keyword), "Default%s", attr->value);
q2_attr = ppdFindAttr(ppd, q_keyword, NULL);
}
- else
+ else
q2_attr = ppdFindAttr(ppd, "DefaultMediaType", NULL);
if (q2_attr && q2_attr->value && q2_attr->value[0])
@@ -3259,7 +3257,7 @@ apple_register_profiles(
snprintf(q_keyword, sizeof(q_keyword), "Default%s", attr->value);
q3_attr = ppdFindAttr(ppd, q_keyword, NULL);
}
- else
+ else
q3_attr = ppdFindAttr(ppd, "DefaultResolution", NULL);
if (q3_attr && q3_attr->value && q3_attr->value[0])
@@ -3428,7 +3426,7 @@ apple_register_profiles(
attr = ppdFindAttr(ppd, "DefaultColorSpace", NULL);
num_profiles = (attr && ppd->colorspace == PPD_CS_GRAY) ? 1 : 2;
-
+
if ((profiles = calloc(num_profiles, sizeof(CMDeviceProfileArray))) == NULL)
{
cupsdLogMessage(CUPSD_LOG_ERROR,
@@ -4426,7 +4424,7 @@ check_quotas(cupsd_client_t *con, /* I - Client connection */
if (q->page_count == -4) /* special case: unlimited user */
{
cupsdLogMessage(CUPSD_LOG_INFO,
- "User \"%s\" request approved for printer %s (%s): "
+ "User \"%s\" request approved for printer %s (%s): "
"unlimited quota.",
username, p->name, p->info);
q->page_count = 0; /* allow user to print */
@@ -6746,6 +6744,7 @@ get_job_attrs(cupsd_client_t *con, /* I - Client connection */
ipp_attribute_t *attr; /* Current attribute */
int jobid; /* Job ID */
cupsd_job_t *job; /* Current job */
+ cupsd_printer_t *printer; /* Current printer */
char scheme[HTTP_MAX_URI], /* Method portion of URI */
username[HTTP_MAX_URI], /* Username portion of URI */
host[HTTP_MAX_URI], /* Host portion of URI */
@@ -6820,7 +6819,19 @@ get_job_attrs(cupsd_client_t *con, /* I - Client connection */
* Check policy...
*/
- if ((status = cupsdCheckPolicy(DefaultPolicyPtr, con, NULL)) != HTTP_OK)
+ if ((printer = job->printer) == NULL)
+ printer = cupsdFindDest(job->dest);
+
+ if (printer)
+ {
+ if ((status = cupsdCheckPolicy(printer->op_policy_ptr, con,
+ NULL)) != HTTP_OK)
+ {
+ send_http_error(con, status, printer);
+ return;
+ }
+ }
+ else if ((status = cupsdCheckPolicy(DefaultPolicyPtr, con, NULL)) != HTTP_OK)
{
send_http_error(con, status, NULL);
return;
diff --git a/scheduler/job.c b/scheduler/job.c
index 8624b4fe6..b33856707 100644
--- a/scheduler/job.c
+++ b/scheduler/job.c
@@ -168,7 +168,7 @@ static mime_filter_t gziptoany_filter =
static int compare_active_jobs(void *first, void *second, void *data);
static int compare_jobs(void *first, void *second, void *data);
static void dump_job_history(cupsd_job_t *job);
-static void finalize_job(cupsd_job_t *job);
+static void finalize_job(cupsd_job_t *job, int set_job_state);
static void free_job_history(cupsd_job_t *job);
static char *get_options(cupsd_job_t *job, int banner_page, char *copies,
size_t copies_size, char *title,
@@ -433,11 +433,11 @@ cupsdCleanJobs(void)
cupsd_job_t *job; /* Current job */
- if (MaxJobs <= 0)
+ if (MaxJobs <= 0 && JobHistory)
return;
for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
- job && cupsArrayCount(Jobs) >= MaxJobs;
+ job && (cupsArrayCount(Jobs) >= MaxJobs || !JobHistory);
job = (cupsd_job_t *)cupsArrayNext(Jobs))
if (job->state_value >= IPP_JOB_CANCELED && !job->printer)
cupsdDeleteJob(job, CUPSD_JOB_PURGE);
@@ -1233,7 +1233,7 @@ cupsdDeleteJob(cupsd_job_t *job, /* I - Job */
cupsd_jobaction_t action)/* I - Action */
{
if (job->printer)
- finalize_job(job);
+ finalize_job(job, 1);
if (action == CUPSD_JOB_PURGE)
{
@@ -1657,7 +1657,30 @@ cupsdLoadJob(cupsd_job_t *job) /* I - Job */
cupsdLogMessage(CUPSD_LOG_ERROR,
"[Job %d] Ran out of memory for job file types!",
job->id);
- return (1);
+
+ ippDelete(job->attrs);
+ job->attrs = NULL;
+
+ if (compressions)
+ free(compressions);
+
+ if (filetypes)
+ free(filetypes);
+
+ if (job->compressions)
+ {
+ free(job->compressions);
+ job->compressions = NULL;
+ }
+
+ if (job->filetypes)
+ {
+ free(job->filetypes);
+ job->filetypes = NULL;
+ }
+
+ job->num_files = 0;
+ return (0);
}
job->compressions = compressions;
@@ -1725,6 +1748,21 @@ cupsdLoadJob(cupsd_job_t *job) /* I - Job */
ippDelete(job->attrs);
job->attrs = NULL;
+
+ if (job->compressions)
+ {
+ free(job->compressions);
+ job->compressions = NULL;
+ }
+
+ if (job->filetypes)
+ {
+ free(job->filetypes);
+ job->filetypes = NULL;
+ }
+
+ job->num_files = 0;
+
unlink(jobfile);
return (0);
@@ -2196,7 +2234,7 @@ cupsdSetJobState(
*/
if (oldstate == IPP_JOB_PROCESSING)
- stop_job(job, action != CUPSD_JOB_DEFAULT);
+ stop_job(job, action);
/*
* Set the new job state...
@@ -2396,8 +2434,6 @@ cupsdSetJobState(
job->dirty = 1;
cupsdMarkDirty(CUPSD_DIRTY_JOBS);
}
- else if (!job->printer)
- cupsdDeleteJob(job, CUPSD_JOB_PURGE);
break;
}
@@ -2405,8 +2441,8 @@ cupsdSetJobState(
* Finalize the job immediately if we forced things...
*/
- if (action == CUPSD_JOB_FORCE)
- finalize_job(job);
+ if (action >= CUPSD_JOB_FORCE)
+ finalize_job(job, 0);
/*
* Update the server "busy" state...
@@ -2641,7 +2677,8 @@ free_job_history(cupsd_job_t *job) /* I - Job */
*/
static void
-finalize_job(cupsd_job_t *job) /* I - Job */
+finalize_job(cupsd_job_t *job, /* I - Job */
+ int set_job_state) /* I - 1 = set the job state */
{
ipp_pstate_t printer_state; /* New printer state value */
ipp_jstate_t job_state; /* New job state value */
@@ -2926,7 +2963,9 @@ finalize_job(cupsd_job_t *job) /* I - Job */
* Update the printer and job state.
*/
- cupsdSetJobState(job, job_state, CUPSD_JOB_DEFAULT, "%s", message);
+ if (job_state != job->state_value)
+ cupsdSetJobState(job, job_state, CUPSD_JOB_DEFAULT, "%s", message);
+
cupsdSetPrinterState(job->printer, printer_state,
printer_state == IPP_PRINTER_STOPPED);
update_job_attrs(job, 0);
@@ -3894,15 +3933,34 @@ stop_job(cupsd_job_t *job, /* I - Job */
if (action == CUPSD_JOB_DEFAULT && !job->kill_time)
job->kill_time = time(NULL) + JobKillDelay;
- else if (action == CUPSD_JOB_FORCE)
+ else if (action >= CUPSD_JOB_FORCE)
job->kill_time = 0;
for (i = 0; job->filters[i]; i ++)
if (job->filters[i] > 0)
- cupsdEndProcess(job->filters[i], action == CUPSD_JOB_FORCE);
+ {
+ cupsdEndProcess(job->filters[i], action >= CUPSD_JOB_FORCE);
+
+ if (action >= CUPSD_JOB_FORCE)
+ job->filters[i] = -job->filters[i];
+ }
if (job->backend > 0)
- cupsdEndProcess(job->backend, action == CUPSD_JOB_FORCE);
+ {
+ cupsdEndProcess(job->backend, action >= CUPSD_JOB_FORCE);
+
+ if (action >= CUPSD_JOB_FORCE)
+ job->backend = -job->backend;
+ }
+
+ if (action >= CUPSD_JOB_FORCE)
+ {
+ /*
+ * Clear job status...
+ */
+
+ job->status = 0;
+ }
}
@@ -4277,7 +4335,7 @@ update_job(cupsd_job_t *job) /* I - Job to check */
* Handle the end of job stuff...
*/
- finalize_job(job);
+ finalize_job(job, 1);
/*
* Check for new jobs...
@@ -4331,7 +4389,7 @@ update_job_attrs(cupsd_job_t *job, /* I - Job to update */
else if (job->printer->state_message[0] && do_message)
cupsdSetString(&(job->printer_message->values[0].string.text),
job->printer->state_message);
-
+
/*
* ... and the printer-state-reasons value...
*/
diff --git a/scheduler/main.c b/scheduler/main.c
index f4bddc4f5..28ae983f0 100644
--- a/scheduler/main.c
+++ b/scheduler/main.c
@@ -379,7 +379,7 @@ main(int argc, /* I - Number of command-line args */
* parent's file descriptors to be blocking. This is a workaround for a
* limitation of userland libpthread on OpenBSD.
*/
-
+
_thread_sys_closefrom(0);
#endif /* __OpenBSD__ */
@@ -807,8 +807,8 @@ main(int argc, /* I - Number of command-line args */
if (timeout == 86400 && Launchd && LaunchdTimeout && !NumPolled &&
!cupsArrayCount(ActiveJobs) &&
- (!Browsing ||
- (!BrowseRemoteProtocols &&
+ (!Browsing ||
+ (!BrowseRemoteProtocols &&
(!NumBrowsers || !BrowseLocalProtocols ||
cupsArrayCount(Printers) == 0))))
{
@@ -1036,6 +1036,7 @@ main(int argc, /* I - Number of command-line args */
if ((current_time - senddoc_time) >= 10)
{
cupsdCheckJobs();
+ cupsdCleanJobs();
senddoc_time = current_time;
}
@@ -1194,8 +1195,8 @@ main(int argc, /* I - Number of command-line args */
#endif /* HAVE_GSSAPI */
#if defined(__APPLE__) && defined(HAVE_DLFCN_H)
- /*
- * Unload Print Service quota enforcement library (X Server only)
+ /*
+ * Unload Print Service quota enforcement library (X Server only)
*/
PSQUpdateQuotaProc = NULL;
@@ -1552,13 +1553,13 @@ launchd_checkin(void)
if (lis)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG,
+ cupsdLogMessage(CUPSD_LOG_DEBUG,
"launchd_checkin: Matched existing listener %s with fd %d...",
httpAddrString(&(lis->address), s, sizeof(s)), fd);
}
else
{
- cupsdLogMessage(CUPSD_LOG_DEBUG,
+ cupsdLogMessage(CUPSD_LOG_DEBUG,
"launchd_checkin: Adding new listener %s with fd %d...",
httpAddrString(&addr, s, sizeof(s)), fd);
@@ -1612,12 +1613,12 @@ launchd_checkout(void)
/*
* Create or remove the launchd KeepAlive file based on whether
- * there are active jobs, polling, browsing for remote printers or
+ * there are active jobs, polling, browsing for remote printers or
* shared printers to advertise...
*/
- if ((cupsArrayCount(ActiveJobs) || NumPolled ||
- (Browsing &&
+ if ((cupsArrayCount(ActiveJobs) || NumPolled ||
+ (Browsing &&
(BrowseRemoteProtocols ||
(BrowseLocalProtocols && NumBrowsers && cupsArrayCount(Printers))))))
{
diff --git a/scheduler/org.cups.cups-lpd.plist.in b/scheduler/org.cups.cups-lpd.plist.in
index e1451207b..32067ef1d 100644
--- a/scheduler/org.cups.cups-lpd.plist.in
+++ b/scheduler/org.cups.cups-lpd.plist.in
@@ -12,8 +12,6 @@
<string>-o</string>
<string>document-format=application/octet-stream</string>
</array>
- <key>SHAuthorizationRight</key>
- <string>system.preferences</string>
<key>Sockets</key>
<dict>
<key>Listeners</key>
diff --git a/scheduler/org.cups.cupsd.plist b/scheduler/org.cups.cupsd.plist
index 2b9a7df9d..97c4208e1 100644
--- a/scheduler/org.cups.cupsd.plist
+++ b/scheduler/org.cups.cupsd.plist
@@ -23,8 +23,6 @@
</array>
<key>ServiceIPC</key>
<true/>
- <key>SHAuthorizationRight</key>
- <string>system.preferences</string>
<key>Sockets</key>
<dict>
<key>Listeners</key>
diff --git a/scheduler/process.c b/scheduler/process.c
index d026f0ab0..0f8d96a2b 100644
--- a/scheduler/process.c
+++ b/scheduler/process.c
@@ -185,7 +185,9 @@ cupsdEndProcess(int pid, /* I - Process ID */
cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdEndProcess(pid=%d, force=%d)", pid,
force);
- if (force)
+ if (!pid)
+ return (0);
+ else if (force)
return (kill(pid, SIGKILL));
else
return (kill(pid, SIGTERM));
@@ -295,8 +297,9 @@ cupsdStartProcess(
return (0);
}
- else if ((commandinfo.st_mode & (S_ISUID | S_IWGRP | S_IWOTH)) ||
- (!RunUser && commandinfo.st_uid))
+ else if (!RunUser &&
+ ((commandinfo.st_mode & (S_ISUID | S_IWGRP | S_IWOTH)) ||
+ commandinfo.st_uid))
{
*pid = 0;
@@ -505,6 +508,7 @@ cupsdStartProcess(
#ifdef HAVE_SIGSET
sigset(SIGTERM, SIG_DFL);
sigset(SIGCHLD, SIG_DFL);
+ sigset(SIGPIPE, SIG_DFL);
#elif defined(HAVE_SIGACTION)
memset(&action, 0, sizeof(action));
@@ -513,9 +517,11 @@ cupsdStartProcess(
sigaction(SIGTERM, &action, NULL);
sigaction(SIGCHLD, &action, NULL);
+ sigaction(SIGPIPE, &action, NULL);
#else
signal(SIGTERM, SIG_DFL);
signal(SIGCHLD, SIG_DFL);
+ signal(SIGPIPE, SIG_DFL);
#endif /* HAVE_SIGSET */
cupsdReleaseSignals();
diff --git a/scheduler/select.c b/scheduler/select.c
index 8896388cc..96f12ab3a 100644
--- a/scheduler/select.c
+++ b/scheduler/select.c
@@ -241,11 +241,11 @@ static fd_set cupsd_global_input,
static int compare_fds(_cupsd_fd_t *a, _cupsd_fd_t *b);
static _cupsd_fd_t *find_fd(int fd);
-#define release_fd(f) { \
+#define release_fd(f) { \
(f)->use --; \
if (!(f)->use) free((f));\
}
-#define retain_fd(f) (f)->use++
+#define retain_fd(f) (f)->use++
/*
@@ -454,7 +454,7 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
if (fdptr->read_cb && event->filter == EVFILT_READ)
(*(fdptr->read_cb))(fdptr->data);
- if (fdptr->write_cb && event->filter == EVFILT_WRITE)
+ if (fdptr->use > 1 && fdptr->write_cb && event->filter == EVFILT_WRITE)
(*(fdptr->write_cb))(fdptr->data);
release_fd(fdptr);
@@ -499,7 +499,8 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
if (fdptr->read_cb && (event->events & (EPOLLIN | EPOLLERR | EPOLLHUP)))
(*(fdptr->read_cb))(fdptr->data);
- if (fdptr->write_cb && (event->events & (EPOLLOUT | EPOLLERR | EPOLLHUP)))
+ if (fdptr->use > 1 && fdptr->write_cb &&
+ (event->events & (EPOLLOUT | EPOLLERR | EPOLLHUP)))
(*(fdptr->write_cb))(fdptr->data);
release_fd(fdptr);
@@ -590,7 +591,8 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
if (fdptr->read_cb && (pfd->revents & (POLLIN | POLLERR | POLLHUP)))
(*(fdptr->read_cb))(fdptr->data);
- if (fdptr->write_cb && (pfd->revents & (POLLOUT | POLLERR | POLLHUP)))
+ if (fdptr->use > 1 && fdptr->write_cb &&
+ (pfd->revents & (POLLOUT | POLLERR | POLLHUP)))
(*(fdptr->write_cb))(fdptr->data);
release_fd(fdptr);
@@ -645,7 +647,8 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
if (fdptr->read_cb && FD_ISSET(fdptr->fd, &cupsd_current_input))
(*(fdptr->read_cb))(fdptr->data);
- if (fdptr->write_cb && FD_ISSET(fdptr->fd, &cupsd_current_output))
+ if (fdptr->use > 1 && fdptr->write_cb &&
+ FD_ISSET(fdptr->fd, &cupsd_current_output))
(*(fdptr->write_cb))(fdptr->data);
release_fd(fdptr);
diff --git a/systemv/cupstestppd.c b/systemv/cupstestppd.c
index 0a7ae4b3b..79b192d76 100644
--- a/systemv/cupstestppd.c
+++ b/systemv/cupstestppd.c
@@ -69,7 +69,8 @@ enum
WARN_TRANSLATIONS = 16,
WARN_DUPLEX = 32,
WARN_SIZES = 64,
- WARN_ALL = 127
+ WARN_FILENAME = 128,
+ WARN_ALL = 255
};
@@ -369,6 +370,8 @@ main(int argc, /* I - Number of command-line args */
if (!strcmp(argv[i], "none"))
ignore = WARN_NONE;
+ else if (!strcmp(argv[i], "filename"))
+ ignore |= WARN_FILENAME;
else if (!strcmp(argv[i], "filters"))
ignore |= WARN_FILTERS;
else if (!strcmp(argv[i], "profiles"))
@@ -999,7 +1002,7 @@ main(int argc, /* I - Number of command-line args */
if (verbose > 0)
_cupsLangPuts(stdout, _(" PASS PCFileName\n"));
}
- else
+ else if (!(ignore & WARN_FILENAME))
{
if (verbose >= 0)
{
@@ -1523,12 +1526,23 @@ main(int argc, /* I - Number of command-line args */
* a warning and not a hard error...
*/
- if (ppd->pcfilename && strlen(ppd->pcfilename) > 12)
- {
- _cupsLangPuts(stdout,
- _(" WARN PCFileName longer than 8.3 in "
- "violation of PPD spec.\n"
- " REF: Pages 61-62, section 5.3.\n"));
+ if (!(ignore & WARN_FILENAME) && ppd->pcfilename)
+ {
+ if (strlen(ppd->pcfilename) > 12)
+ {
+ _cupsLangPuts(stdout,
+ _(" WARN PCFileName longer than 8.3 in "
+ "violation of PPD spec.\n"
+ " REF: Pages 61-62, section "
+ "5.3.\n"));
+ }
+
+ if (!strcasecmp(ppd->pcfilename, "unused.ppd"))
+ _cupsLangPuts(stdout,
+ _(" WARN PCFileName should contain a "
+ "unique filename.\n"
+ " REF: Pages 61-62, section "
+ "5.3.\n"));
}
if (!ppd->shortnickname && ppdversion < 43)
@@ -3653,8 +3667,8 @@ usage(void)
"\n"
"Options:\n"
"\n"
- " -I {filters,profiles}\n"
- " Ignore missing files\n"
+ " -I {filename,filters,none,profiles}\n"
+ " Ignore specific warnings\n"
" -R root-directory Set alternate root\n"
" -W {all,none,constraints,defaults,duplex,filters,"
"profiles,sizes,translations}\n"
diff --git a/templates/add-printer.tmpl b/templates/add-printer.tmpl
index 6346a86a8..7f375078a 100644
--- a/templates/add-printer.tmpl
+++ b/templates/add-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff --git a/templates/admin.tmpl b/templates/admin.tmpl
index c1dc25b98..bbf9db7cd 100644
--- a/templates/admin.tmpl
+++ b/templates/admin.tmpl
@@ -20,7 +20,7 @@
<H2 CLASS="title">Jobs</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Jobs"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Jobs"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
diff --git a/templates/choose-device.tmpl b/templates/choose-device.tmpl
index b7d92723f..a4877ca63 100644
--- a/templates/choose-device.tmpl
+++ b/templates/choose-device.tmpl
@@ -2,21 +2,18 @@
<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
-{CUPS_GET_DEVICES_DONE?:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Looking for printers...</P>}
-
-<FORM METHOD="POST" ACTION="/admin">
+{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
<TABLE>
{op=add-printer?:<TR>
-<TH CLASS="label">Current Connection:</TH>
+<TH CLASS="label">Current Connection\:</TH>
<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
{current_device_uri}</TD>
</TR>}
<TR>
-<TH CLASS="label">Local Printers:</TH>
+<TH CLASS="label">Local Printers\:</TH>
<TD>
{[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
@@ -25,7 +22,7 @@ VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
</TD>
</TR>
<TR>
-<TH CLASS="label">Discovered Network Printers:</TH>
+<TH CLASS="label">Discovered Network Printers\:</TH>
<TD>
{[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
@@ -35,7 +32,7 @@ VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
</TR>
<TR>
<TR>
-<TH CLASS="label">Other Network Printers:</TH>
+<TH CLASS="label">Other Network Printers\:</TH>
<TD>
{[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI"
VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
@@ -49,5 +46,7 @@ VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
</TR>
</TABLE>
-</FORM>
-</DIV> \ No newline at end of file
+</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
+ALT="Busy Indicator"> Looking for printers...</P>}
+
+</DIV>
diff --git a/templates/de/add-printer.tmpl b/templates/de/add-printer.tmpl
index 87dae9f04..42d18fe0e 100644
--- a/templates/de/add-printer.tmpl
+++ b/templates/de/add-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff --git a/templates/de/admin.tmpl b/templates/de/admin.tmpl
index 508733b22..a3445479c 100644
--- a/templates/de/admin.tmpl
+++ b/templates/de/admin.tmpl
@@ -20,7 +20,7 @@
<H2 CLASS="title">Druckauftr&auml;ge</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="Auftr&auml;ge verwalten"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Auftr&auml;ge verwalten"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
diff --git a/templates/de/class-confirm.tmpl b/templates/de/class-confirm.tmpl
index bb25035d1..20cd6db2d 100644
--- a/templates/de/class-confirm.tmpl
+++ b/templates/de/class-confirm.tmpl
@@ -2,8 +2,8 @@
<H2 CLASS="title">Klasse {printer_name} l&ouml;schen</H2>
-<P><B>Warning:</B> Sind Sie sicher Sie wollen die Klasse
-{printer_name} l&ouml;schen?</P>
+<P><B>Warnung:</B> Sind Sie sicher, dass Sie die Klasse
+{printer_name} l&ouml;schen wollen?</P>
<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Klasse l&ouml;schen"></FORM></P>
diff --git a/templates/de/help-header.tmpl b/templates/de/help-header.tmpl
index 23fc4fc0d..a2d68a58a 100644
--- a/templates/de/help-header.tmpl
+++ b/templates/de/help-header.tmpl
@@ -15,7 +15,7 @@ AUTOSAVE="org.cups.help" RESULTS="20">
<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Inhalt">
<TR><TD>
-<H3 CLASS="title">On-Line Hilfe Dokumente</H3>
+<H3 CLASS="title">Online Hilfe Dokumente</H3>
<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Alle Dokumente</A></P>
<HR>
@@ -46,6 +46,6 @@ Erfahrene Benutzer sollten "<a href="/help/whatsnew.html">Was ist neu in CUPS
1.4</a>" lesen.</P>
<P>Die <A HREF="http://www.cups.org/">CUPS Webseite</A> bietet
-ebenfalls viele Angebote inklusive Benutzer Diskussionsforen,
+ebenfalls viele Angebote inklusive Diskussionsforen f&uuml; Benutzer,
Antworten auf h&auml;ufig gestellte Fragen, und ein Formular für
Fehlerberichte und W&uuml;nsche.</P>}
diff --git a/templates/de/jobs.tmpl b/templates/de/jobs.tmpl
index 38885f995..3a524bb58 100644
--- a/templates/de/jobs.tmpl
+++ b/templates/de/jobs.tmpl
@@ -13,7 +13,7 @@
<TD>{job_media_sheets_completed=0?Unbekannt:{?job_media_sheets_completed}}&nbsp;</TD>
<TD>{job_state=3?unerledigt seit<BR>{time_at_creation}:{job_state=4?angehalten seit<BR>{time_at_creation}:
{job_state=5?verarbeitet seit<BR>{time_at_processing}:{job_state=6?gestoppt:
-{job_state=7?getl&ouml;scht am<BR>{time_at_completed}:{job_state=8?abgebrochen:beendet am<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
+{job_state=7?gel&ouml;scht am<BR>{time_at_completed}:{job_state=8?abgebrochen:beendet am<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
<EM>"{job_printer_state_message}"</EM>:}</TD>
<TD>
{job_preserved>0?{job_state>5?
diff --git a/templates/de/modify-printer.tmpl b/templates/de/modify-printer.tmpl
index 293d75001..a44da2bea 100644
--- a/templates/de/modify-printer.tmpl
+++ b/templates/de/modify-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
diff --git a/templates/de/option-conflict.tmpl b/templates/de/option-conflict.tmpl
index 8c59cdad6..eac3c0de0 100644
--- a/templates/de/option-conflict.tmpl
+++ b/templates/de/option-conflict.tmpl
@@ -1,7 +1,7 @@
<P><B>Error:</B> The following options are conflicting:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>Bitte &auml;ndern sie eine oder mehrere Einstellungen um die Konflikte zu l&ouml;sen.</P>
diff --git a/templates/de/printer-confirm.tmpl b/templates/de/printer-confirm.tmpl
index 5290c85e5..3bbe1fb34 100644
--- a/templates/de/printer-confirm.tmpl
+++ b/templates/de/printer-confirm.tmpl
@@ -2,8 +2,8 @@
<H2 CLASS="title">Drucker {printer_name} l&ouml;schen</H2>
-<P><B>Warnung:</B> Sind sie sicher sie wollen den Drucker
-{printer_name} l&ouml;schen?</P>
+<P><B>Warnung:</B> Sind Sie sicher, dass Sie den Drucker
+{printer_name} l&ouml;schen wollen?</P>
<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Drucker l&ouml;schen"></FORM></P>
diff --git a/templates/de/printer.tmpl b/templates/de/printer.tmpl
index 330c070be..e3e1ebc4a 100644
--- a/templates/de/printer.tmpl
+++ b/templates/de/printer.tmpl
@@ -1,7 +1,7 @@
<DIV CLASS="indent">
<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Frei:{printer_state=4?Besch&auml;ftig:Angehalten}},
+({printer_state=3?Frei:{printer_state=4?Besch&auml;ftigt:Angehalten}},
{printer_is_accepting_jobs=0?Auftr&auml;ge werden ablehnt:Auftr&auml;ge werden akzeptiert},
{server_is_sharing_printers=0?Nicht:{printer_is_shared=0?Nicht:}} freigegeben{default_name={printer_name}?, Standarddrucker:})</H2>
diff --git a/templates/es/add-printer.tmpl b/templates/es/add-printer.tmpl
index bff616dc5..9e65a93b9 100644
--- a/templates/es/add-printer.tmpl
+++ b/templates/es/add-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff --git a/templates/es/admin.tmpl b/templates/es/admin.tmpl
index a16eb4ed2..81a92ba18 100644
--- a/templates/es/admin.tmpl
+++ b/templates/es/admin.tmpl
@@ -20,7 +20,7 @@
<H2 CLASS="title">Trabajos</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="Administrar trabajos"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Administrar trabajos"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
diff --git a/templates/es/modify-printer.tmpl b/templates/es/modify-printer.tmpl
index 4c6ac3103..944a087bc 100644
--- a/templates/es/modify-printer.tmpl
+++ b/templates/es/modify-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
diff --git a/templates/es/option-conflict.tmpl b/templates/es/option-conflict.tmpl
index 6db0267ae..adeb4363e 100644
--- a/templates/es/option-conflict.tmpl
+++ b/templates/es/option-conflict.tmpl
@@ -1,7 +1,7 @@
<P><B>Error:</B> Las siguientes opciones est&aacute;n en conflicto:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>Cambie una o m&aacute;s de las opciones para resolver el problema.</P>
diff --git a/templates/eu/add-printer.tmpl b/templates/eu/add-printer.tmpl
index 1cab894ef..853d052ff 100644
--- a/templates/eu/add-printer.tmpl
+++ b/templates/eu/add-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff --git a/templates/eu/admin.tmpl b/templates/eu/admin.tmpl
index 65842a7b0..5f13fe21e 100644
--- a/templates/eu/admin.tmpl
+++ b/templates/eu/admin.tmpl
@@ -20,7 +20,7 @@
<H2 CLASS="title">Lanak</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="Kudeatu lanak"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Kudeatu lanak"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
diff --git a/templates/eu/modify-printer.tmpl b/templates/eu/modify-printer.tmpl
index 989baf73b..23f308b66 100644
--- a/templates/eu/modify-printer.tmpl
+++ b/templates/eu/modify-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
diff --git a/templates/eu/option-conflict.tmpl b/templates/eu/option-conflict.tmpl
index f4cf7f0f2..617858ccb 100644
--- a/templates/eu/option-conflict.tmpl
+++ b/templates/eu/option-conflict.tmpl
@@ -1,7 +1,7 @@
<P><B>Errorea:</B> honako aukerak gatazkan daude:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>Aldatu aukera bat edo gehiago gatazkak ebazteko.</P>
diff --git a/templates/id/add-class.tmpl b/templates/id/add-class.tmpl
new file mode 100644
index 000000000..b64af5d6c
--- /dev/null
+++ b/templates/id/add-class.tmpl
@@ -0,0 +1,39 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Tambah Kelas</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<TABLE>
+<TR>
+<TH CLASS="label">Nama:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(Karakter apa saja yang dapat dicetak, kecuali "/", "#", dan spasi)</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Deskripsi:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(Deskripsi yang mudah dibaca, seperti "HP LaserJet dengan Duplexer")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Lokasi:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(Lokasi yang mudah dibaca, seperti "Lab 1")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Anggota:</TH>
+<TD>
+<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
+{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Tambah Kelas"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
diff --git a/templates/id/add-printer.tmpl b/templates/id/add-printer.tmpl
new file mode 100644
index 000000000..92529565c
--- /dev/null
+++ b/templates/id/add-printer.tmpl
@@ -0,0 +1,42 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Add Printer</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
+{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
+
+<TABLE>
+<TR>
+<TH CLASS="label">Nama:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
+<SMALL>(Karakter apa saja yang dapat dicetak, kecuali "/", "#", dan spasi)</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Deskripsi:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
+<SMALL>(Deskripsi yang mudah dibaca, seperti "HP LaserJet dengan Duplexer")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Location:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
+<SMALL>(Lokasi yang mudah dibaca, seperti "Lab 1")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Koneksi:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Berbagi:</TH>
+<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
+Berbagi Pencetak Ini</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Lanjut"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
diff --git a/templates/id/add-rss-subscription.tmpl b/templates/id/add-rss-subscription.tmpl
new file mode 100644
index 000000000..ac9e3d403
--- /dev/null
+++ b/templates/id/add-rss-subscription.tmpl
@@ -0,0 +1,43 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
+
+<H2 CLASS="title">Tambah Subskripsi RSS</H2>
+
+<TABLE SUMMARY="Add RSS Subscription form">
+<TR>
+<TH CLASS="label">Nama:</TH>
+<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
+<SMALL>(Karakter apa saja yang dapat dicetak, kecuali "/", "#", dan spasi)</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Antrian:</TH>
+<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Semua Antrian</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
+</TR>
+<TR VALIGN="TOP">
+<TH CLASS="label">Kejadian:</TH>
+<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Tugas Dibuat<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Tugas Selesai<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Tugas Berhenti<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Opsi Tugas Berubah</TD>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Antrian Berhenti<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Antrian Ditambah<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Antrian Berubah<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Antrian Dihapus</TD>
+<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
+<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Server Dimulai<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Server Berhenti<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Server Dijalankan Ulang<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Audit Keamanan Server</TD>
+</TR>
+<TR>
+<TH CLASS="label">Maksimal Kejadian dalam Berita:</TH>
+<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="MAX_EVENTS" SIZE="4" MAXLENGTH="4" VALUE="{MAX_EVENTS?{MAX_EVENTS}:20}"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="Tambah Subskripsi RSS"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/id/admin.tmpl b/templates/id/admin.tmpl
new file mode 100644
index 000000000..d7ea6a623
--- /dev/null
+++ b/templates/id/admin.tmpl
@@ -0,0 +1,109 @@
+<TABLE CLASS="indent" SUMMARY="Administration Tasks">
+<TR><TD VALIGN="TOP">
+
+<H2 CLASS="title">Pencetak</H2>
+
+<P>
+<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Tambah Pencetak"></FORM>
+<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Cari Pencetak Baru"></FORM>
+<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Atur Pencetak"></FORM>
+{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Ekspor Pencetak ke Samba"></FORM>:}
+</P>
+
+<H2 CLASS="title">Kelas</H2>
+
+<P>
+<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Tambah Kelas"></FORM>
+<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Atur Kelas"></FORM>
+</P>
+
+<H2 CLASS="title">Tugas</H2>
+
+<P>
+<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="Atur Tugas"></FORM>
+</P>
+
+</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
+
+<H2 CLASS="title">Server</H2>
+
+<P>
+<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Sunting Berkas Konfigurasi"></FORM>
+<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Lihat Log Akses"></FORM>
+<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Lihat Log Kesalahan"></FORM>
+<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Lihat Log Halaman"></FORM>
+</P>
+
+{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
+<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
+
+<FORM METHOD="POST" ACTION="/admin">
+
+{ADVANCEDSETTINGS?<P><B>Pengaturan Server\:</B></P>
+
+<P><A HREF="/admin/">Lanjutan <SMALL>&#x25bc;</SMALL></A><BR>
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_PRINTERS" {?remote_printers}> Lihat pencetak yang dibagikan oleh sistem lain<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Protokol\:
+<INPUT TYPE="CHECKBOX" NAME="BROWSE_REMOTE_CUPS" {?browse_remote_cups}> CUPS
+{HAVE_LDAP?<INPUT TYPE="CHECKBOX" NAME="BROWSE_REMOTE_LDAP" {?browse_remote_ldap}> LDAP:}
+{HAVE_LIBSLP?<INPUT TYPE="CHECKBOX" NAME="BROWSE_REMOTE_SLP" {?browse_remote_slp}> SLP:}<BR>
+<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Bagikan pencetak yang terhubung ke sistem ini<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Klien maks.\:
+<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Protokol\:
+<INPUT TYPE="CHECKBOX" NAME="BROWSE_LOCAL_CUPS" {?browse_local_cups}> CUPS
+{HAVE_DNSSD?<INPUT TYPE="CHECKBOX" NAME="BROWSE_LOCAL_DNSSD" {?browse_local_dnssd}> DNS-SD:}
+{HAVE_LDAP?<INPUT TYPE="CHECKBOX" NAME="BROWSE_LOCAL_LDAP" {?browse_local_ldap}> LDAP:}
+{HAVE_LIBSLP?<INPUT TYPE="CHECKBOX" NAME="BROWSE_LOCAL_SLP" {?browse_local_slp}> SLP:}<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Perbolehkan mencetak dari Internet<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Advertise web interface<BR>
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Perbolehkan administrasi dari jarak jauh<BR>
+{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Gunakan otentikasi Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Perbolehkan pengguna biasa untuk membatalkan semua tugas (termasuk tugas orang lain)<BR>
+<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOB_HISTORY" {?preserve_job_history}> Catat histori tugas<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Banyaknya tugas\:
+<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOB_FILES" {?preserve_job_files}> Catat berkas tugas cetak<BR>
+<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Simpan informasi kesalahan untuk mencari dan memecahkan masalah<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ukuran maks. berkas log\:
+<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
+
+:<P><B>Pengaturan Server:</B></P>
+
+<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Lanjutan <SMALL>&#x25b6;</SMALL></A><BR>
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_PRINTERS" {?remote_printers}> Lihat pencetak yang dibagikan oleh sistem lain<BR>
+<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Bagikan pencetak yang terhubung ke sistem ini<BR>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Perbolehkan mencetak dari Internet<BR>
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Perbolehkan administrasi dari jarak jauh<BR>
+{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Gunakan otentikasi Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Perbolehkan pengguna biasa untuk membatalkan semua tugas (termasuk tugas orang lain)<BR>
+<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Save debugging information for troubleshooting</P>
+
+}
+<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Ubah Pengaturan"></P>
+
+</FORM>}
+
+</TD></TR>
+</TABLE>
+
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Subskripsi RSS</H2>
+
+<P>
+<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="Tambah Subskripsi RSS"></FORM>
+</P>
+
+</DIV>
+
+{notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS Subscriptions">
+<THEAD><TR><TH>Nama</TH><TH>Kejadian</TH><TH>Nama Antrian</TH></TR></THEAD>
+<TBODY>{[notify_subscription_id]
+<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
+<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Cancel RSS Subscription"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Semua Antrian}</TD></TR>}
+</TBODY>
+</TABLE>:}
diff --git a/templates/id/choose-device.tmpl b/templates/id/choose-device.tmpl
new file mode 100644
index 000000000..6bd91bd14
--- /dev/null
+++ b/templates/id/choose-device.tmpl
@@ -0,0 +1,53 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{op=modify-printer?Ubah {printer_name}:Tambah Pencetak}</H2>
+
+{CUPS_GET_DEVICES_DONE?:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
+ALT="Busy Indicator"> Mencari pencetak...</P>}
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
+
+<TABLE>
+{op=add-printer?:<TR>
+<TH CLASS="label">Koneksi yang Ada:</TH>
+<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
+{current_device_uri}</TD>
+</TR>}
+<TR>
+<TH CLASS="label">Pencetak Lokal:</TH>
+<TD>
+{[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
+VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
+{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
+:}}
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">Pencetak Jaringan yang Ditemukan:</TH>
+<TD>
+{[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
+VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
+{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
+:}:}}
+</TD>
+</TR>
+<TR>
+<TR>
+<TH CLASS="label">Pencetak Jaringan Lainnya:</TH>
+<TD>
+{[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI"
+VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
+{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
+}:}}
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Lanjut"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
diff --git a/templates/id/choose-make.tmpl b/templates/id/choose-make.tmpl
new file mode 100644
index 000000000..3362738de
--- /dev/null
+++ b/templates/id/choose-make.tmpl
@@ -0,0 +1,63 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{op=modify-printer?Ubah {printer_name}:Tambah Pencetak}</H2>
+
+<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
+
+<TABLE>
+{op=modify-printer?:<TR>
+<TH CLASS="label">Nama:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
+</TR>}
+<TR>
+<TH CLASS="label">Deskripsi:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Lokasi:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Koneksi:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Berbagi:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
+{?printer_is_shared=?Do Not:{?printer_is_shared=0?Do Not:}} Share This Printer</TD>
+</TR>
+<TR>
+<TH CLASS="label">Buatan:</TH>
+<TD>
+<SELECT NAME="PPD_MAKE" SIZE="10">
+{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Lanjut"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR>
+<TH CLASS="label">Atau, Sediakan Berkas PPD:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
+TYPE="FILE" NAME="PPD_FILE"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Tambah Pencetak:Ubah Pencetak}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
diff --git a/templates/id/choose-model.tmpl b/templates/id/choose-model.tmpl
new file mode 100644
index 000000000..d294a3b25
--- /dev/null
+++ b/templates/id/choose-model.tmpl
@@ -0,0 +1,59 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Tambah Pencetak}</H2>
+
+<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
+<TABLE>
+{op=modify-printer?:<TR>
+<TH CLASS="label">Nama:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
+</TR>}
+<TR>
+<TH CLASS="label">Deskripsi:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Lokasi:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Koneksi:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Berbagi:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
+{?printer_is_shared=?Jangan:{?printer_is_shared=0?Jangan:}} Berbagi Pencetak Ini</TD>
+</TR>
+<TR>
+<TH CLASS="label">Pembuat:</TH>
+<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Pilih Manufaktur/Pembuat Lainnya"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Model:</TH>
+<TD>
+<SELECT NAME="PPD_NAME" SIZE="10">
+{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Penggerak Saat Ini - {current_make_and_model}</OPTION>:}
+{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
+}</SELECT>
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">Atau Sediakan Berkas PPD:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
+TYPE="FILE" NAME="PPD_FILE"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Tambah Pencetak:Ubah Pencetak}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
diff --git a/templates/id/choose-serial.tmpl b/templates/id/choose-serial.tmpl
new file mode 100644
index 000000000..ceb291f8f
--- /dev/null
+++ b/templates/id/choose-serial.tmpl
@@ -0,0 +1,51 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Tambah Pencetak}</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
+
+<TABLE>
+<TR>
+<TH CLASS="label">Koneksi:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Kecepatan Data:</TH>
+<TD><SELECT NAME="BAUDRATE">
+{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Paritas:</TH>
+<TD><SELECT NAME="PARITY">
+<OPTION VALUE="none" {?parity=none?SELECTED:}>Nihil
+<OPTION VALUE="even" {?parity=even?SELECTED:}>Genap
+<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Ganjil
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Bit Data:</TH>
+<TD><SELECT NAME="BITS">
+<OPTION {?bits=8?SELECTED:}>8
+<OPTION {?bits=7?SELECTED:}>7
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">Kendali Aliran Data:</TH>
+<TD><SELECT NAME="FLOW">
+<OPTION VALUE="none" {?flow=none?SELECTED:}>Nihil
+<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Peranti Lunak)
+<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Peranti Keras)
+<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Peranti Keras)
+</SELECT></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Lanjut"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
diff --git a/templates/id/choose-uri.tmpl b/templates/id/choose-uri.tmpl
new file mode 100644
index 000000000..57380f6c4
--- /dev/null
+++ b/templates/id/choose-uri.tmpl
@@ -0,0 +1,42 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Tambah Pencetak}</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
+<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
+
+<TABLE>
+<TR>
+<TH CLASS="label">Koneksi:</TH>
+<TD><INPUT TYPE="TEXT" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>Contoh:
+<PRE>
+ http://hostname:631/ipp/
+ http://hostname:631/ipp/port1
+
+ ipp://hostname/ipp/
+ ipp://hostname/ipp/port1
+
+ lpd://hostname/queue
+
+ socket://hostname
+ socket://hostname:9100
+</PRE>
+
+<P>Lihat <A HREF="/help/network.html" TARGET="_blank">"Pencetak Jaringan"</A> untuk URI yang tepat bagi pencetak Anda.</P>
+
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Lanjut"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
diff --git a/templates/id/class-added.tmpl b/templates/id/class-added.tmpl
new file mode 100644
index 000000000..12c408f84
--- /dev/null
+++ b/templates/id/class-added.tmpl
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Tambah Kelas</H2>
+
+<P>Kelas <A HREF="/classes/{printer_name}">{printer_name}</A> telah berhasil ditambahkan.
+
+</DIV>
diff --git a/templates/id/class-confirm.tmpl b/templates/id/class-confirm.tmpl
new file mode 100644
index 000000000..23bec54ff
--- /dev/null
+++ b/templates/id/class-confirm.tmpl
@@ -0,0 +1,10 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Hapus Kelas {printer_name}</H2>
+
+<P><B>Peringatan:</B> Anda yakin untuk menghapus kelas
+{printer_name}?</P>
+
+<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Hapus Kelas"></FORM></P>
+
+</DIV>
diff --git a/templates/id/class-deleted.tmpl b/templates/id/class-deleted.tmpl
new file mode 100644
index 000000000..30320cbe3
--- /dev/null
+++ b/templates/id/class-deleted.tmpl
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Hapus Kelas {printer_name}</H2>
+
+<P>Kelas {printer_name} telah berhasil dihapus.
+
+</DIV>
diff --git a/templates/id/class-jobs-header.tmpl b/templates/id/class-jobs-header.tmpl
new file mode 100644
index 000000000..e6ca44714
--- /dev/null
+++ b/templates/id/class-jobs-header.tmpl
@@ -0,0 +1,3 @@
+<DIV CLASS="indent">
+<H3 CLASS="title">Tugas</H3>
+</DIV>
diff --git a/templates/id/class-modified.tmpl b/templates/id/class-modified.tmpl
new file mode 100644
index 000000000..d2fdded39
--- /dev/null
+++ b/templates/id/class-modified.tmpl
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Ubah Kelas {printer_name}</H2>
+
+<P>Kelas <A HREF="/classes/{printer_name}">{printer_name}</A> telah berhasil diubah.
+
+</DIV>
diff --git a/templates/id/class.tmpl b/templates/id/class.tmpl
new file mode 100644
index 000000000..ab85b1f88
--- /dev/null
+++ b/templates/id/class.tmpl
@@ -0,0 +1,41 @@
+<DIV CLASS="indent">
+<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
+({printer_state=3?Idle:{printer_state=4?Memproses:Ditahan}},
+{printer_is_accepting_jobs=0?Menolak Tugas:Menerima Tugas},
+{server_is_sharing_printers=0?Jangan:{printer_is_shared=0?Jangan:}} Berbagi{default_name={printer_name}?, Server Baku:})</H2>
+
+<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
+<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
+<OPTION VALUE="">Perawatan</OPTION>
+<OPTION VALUE="print-test-page">Halaman Uji Cetak</OPTION>
+{printer_state=5?<OPTION VALUE="start-class">Resume Kelas</OPTION>:<OPTION VALUE="stop-class">Tahan Kelas</OPTION>}
+{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Terima Tugas</OPTION>:<OPTION VALUE="reject-jobs">Tolak Tugas</OPTION>}
+<OPTION VALUE="move-jobs">Pindahkan Semua Tugas</OPTION>
+<OPTION VALUE="purge-jobs">Batalkan Semua Tugas</OPTION>
+</SELECT>
+<INPUT TYPE="SUBMIT" VALUE="Lakukan!" STYLE="display: none;">
+</FORM>
+
+<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
+<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
+<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
+<OPTION VALUE="">Administrasi</OPTION>
+<OPTION VALUE="modify-class">Ubah Kelas</OPTION>
+<OPTION VALUE="delete-class">Hapus Kelas</OPTION>
+<OPTION VALUE="set-class-options">Atur Opsi Baku</OPTION>
+<OPTION VALUE="set-as-default">Atur Sebagai Server Baku</OPTION>
+<OPTION VALUE="set-allowed-users">Atur Pengguna yang Diperbolehkan</OPTION>
+</SELECT>
+<INPUT TYPE="SUBMIT" VALUE="Lakukan!" STYLE="display: none;">
+</FORM>
+
+<TABLE SUMMARY="{printer_name}">
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Deskripsi:</TH><TD>{printer_info}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Lokasi:</TH><TD>{printer_location}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Anggota:</TH><TD>{?member_uris=?None:{member_uris}}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Baku:</TH><TD>job-sheets={job_sheets_default}
+media={media_default?{media_default}:unknown}
+{sides_default?sides={sides_default}:}</TD></TR>
+</TABLE>
+
+</DIV>
diff --git a/templates/id/classes-header.tmpl b/templates/id/classes-header.tmpl
new file mode 100644
index 000000000..da891a3c7
--- /dev/null
+++ b/templates/id/classes-header.tmpl
@@ -0,0 +1 @@
+<P ALIGN="CENTER">{total=0?Tidak ada kelas:Menampilkan {#printer_name} dari {total} kelas{total=1?:}}.</P>
diff --git a/templates/id/classes.tmpl b/templates/id/classes.tmpl
new file mode 100644
index 000000000..c8e9b5f28
--- /dev/null
+++ b/templates/id/classes.tmpl
@@ -0,0 +1,11 @@
+{#printer_name=0?:
+<TABLE CLASS="list" SUMMARY="Class List">
+<THEAD>
+<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nama Antrian <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nama Antrian <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Deskripsi</TH><TH>Lokasi</TH><TH>Anggota</TH><TH>Status</TH></TR>
+</THEAD>
+<TBODY>
+{[printer_name]
+<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Nihil:{member_uris}}</TD><TD>{printer_state=3?Idle:{printer_state=4?Memproses:Ditahan}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
+}
+</TBODY>
+</TABLE></DIV>}
diff --git a/templates/id/command.tmpl b/templates/id/command.tmpl
new file mode 100644
index 000000000..b38d2c985
--- /dev/null
+++ b/templates/id/command.tmpl
@@ -0,0 +1,12 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{title} Pada {printer_name}</H2>
+
+<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
+ALIGN="ABSMIDDLE" ALT="Indikator Kesibukan"> }Perintah tugas pencetak
+{job_state=3?pending:{job_state=4?held:
+{job_state=5?processing:{job_state=6?stopped:
+{job_state=7?canceled:{job_state=8?aborted:completed}}}}}}{job_state=9?:{job_printer_state_message?,
+<EM>"{job_printer_state_message}"</EM>:}}</P>
+
+</DIV>
diff --git a/templates/id/edit-config.tmpl b/templates/id/edit-config.tmpl
new file mode 100644
index 000000000..fde6c632f
--- /dev/null
+++ b/templates/id/edit-config.tmpl
@@ -0,0 +1,24 @@
+<SCRIPT TYPE="text/javascript">
+function reset_config()
+{
+ document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
+}
+</SCRIPT>
+
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Sunting Berkas Konfigurasi</H2>
+
+<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
+
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+
+<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
+
+<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Simpan Perubahan">
+<INPUT TYPE="BUTTON" VALUE="Gunakan Konfigurasi Baku"
+onClick="reset_config();"></P>
+
+</FORM>
+
+</DIV>
diff --git a/templates/id/error-op.tmpl b/templates/id/error-op.tmpl
new file mode 100644
index 000000000..2611c5dee
--- /dev/null
+++ b/templates/id/error-op.tmpl
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Kesalahan {?title} {?printer_name}</H2>
+
+<P>Kesalahan:</P>
+
+<BLOCKQUOTE>Operasi tak dikenal "{op}"!</BLOCKQUOTE>
+
+</DIV>
diff --git a/templates/id/error.tmpl b/templates/id/error.tmpl
new file mode 100644
index 000000000..c74bd7096
--- /dev/null
+++ b/templates/id/error.tmpl
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Kesalahan {?title} {?printer_name}</H2>
+
+<P>{?message?{message}:Kesalahan:}</P>
+
+<BLOCKQUOTE>{error}</BLOCKQUOTE>
+
+</DIV>
diff --git a/templates/id/header.tmpl.in b/templates/id/header.tmpl.in
new file mode 100644
index 000000000..b45d870cb
--- /dev/null
+++ b/templates/id/header.tmpl.in
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+<HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+ <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
+ <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
+ <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
+ {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
+</HEAD>
+<BODY>
+<TABLE CLASS="page" SUMMARY="{title}">
+<TR><TD CLASS="body">
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
+<TR HEIGHT="36">
+<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
+SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
+<TD CLASS="unsel"><A HREF="/">&nbsp;&nbsp;Home&nbsp;&nbsp;</A></TD>
+<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administrasi&nbsp;&nbsp;</A></TD>
+<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Kelas&nbsp;&nbsp;</A></TD>
+<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Bantuan&nbsp;Langsung&nbsp;&nbsp;</A></TD>
+<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Tugas&nbsp;&nbsp;</A></TD>
+<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Pencetak&nbsp;&nbsp;</A></TD>
+<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
+TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Search Help"
+VALUE="{SECTION=help?{?QUERY}:}" AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
+<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
+</TR>
+<TR><TD COLSPAN="9">&nbsp;</TD></TR>
+</TABLE>
diff --git a/templates/id/help-header.tmpl b/templates/id/help-header.tmpl
new file mode 100644
index 000000000..e28b52781
--- /dev/null
+++ b/templates/id/help-header.tmpl
@@ -0,0 +1,47 @@
+<DIV CLASS="indent">
+<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
+{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
+
+<P ALIGN="CENTER"><B>Mencari di
+{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:Semua Dokumen}}:</B> <INPUT
+TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
+AUTOSAVE="org.cups.help" RESULTS="20">
+<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Cari">
+<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Bersihkan"></P>
+
+</FORM>
+
+<!-- Bookmarks -->
+<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Contents">
+<TR><TD>
+
+<H3 CLASS="title">Dokumen Bantuan Langsung</H3>
+
+<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Semua Dokumen</A></P>
+<HR>
+
+{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
+}
+</TD></TR>
+</TABLE></DIV>
+
+{QUERY?<P>Hasil Pencarian di {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:Semua Dokumen}}\:</P>
+{QTEXT?<UL>
+{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (di <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
+{QTEXT?</UL>:}
+:<P>Tidak ada yang cocok.</P>}
+<HR NOSHADE>:}
+{HELPTITLE?<H1>{HELPTITLE}</H1>
+<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Lihat Versi Cetak"></FORM>:
+
+<H1>Bantuan Langsung</H1>
+
+<P>Ini adalah antarmuka bantuan langsung milik CUPS. Masukkan kata yang hendak dicari pada kotak
+di atas atau klik salah satu taut dokumen untuk melihat informasi bantuan langsung tersebut.</P>
+
+<P>Apabila Anda adalah pengguna baru CUPS, bacalah halaman "<a
+href="/help/overview.html">Ikhtisar CUPS</a>". Bagi yang sudah berpengalaman, dapat
+membaca halaman "<a href="/help/whatsnew.html">Apa yang Baru di CUPS
+1.4</a>".</P>
+
+<P><A HREF="http://www.cups.org/">Laman CUPS</A> juga menyediakan berbagai sumber termasuk forum, jawaban untuk pertanyaan-pertanyaan yang sering diajukan, serta formulir untuk mengirim laporan kode hama dan permintaan fitur baru.</P>}
diff --git a/templates/id/help-printable.tmpl b/templates/id/help-printable.tmpl
new file mode 100644
index 000000000..2463c1630
--- /dev/null
+++ b/templates/id/help-printable.tmpl
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+<HEAD>
+ <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+ <TITLE>{HELPTITLE}</TITLE>
+ <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
+ <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
+</HEAD>
+<BODY>
diff --git a/templates/id/help-trailer.tmpl b/templates/id/help-trailer.tmpl
new file mode 100644
index 000000000..4c1ebed85
--- /dev/null
+++ b/templates/id/help-trailer.tmpl
@@ -0,0 +1 @@
+</DIV>
diff --git a/templates/id/job-cancel.tmpl b/templates/id/job-cancel.tmpl
new file mode 100644
index 000000000..d3d604719
--- /dev/null
+++ b/templates/id/job-cancel.tmpl
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Batalkan Tugas {job_id}</H2>
+
+<P><A HREF="{job_printer_uri}">Tugas {job_id}</A> telah dibatalkan.
+
+</DIV>
diff --git a/templates/id/job-hold.tmpl b/templates/id/job-hold.tmpl
new file mode 100644
index 000000000..ab2dd5937
--- /dev/null
+++ b/templates/id/job-hold.tmpl
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Tahan Tugas {job_id}</H2>
+
+<P><A HREF="{job_printer_uri}">Tugas {job_id}</A> telah ditahan untuk dicetak.
+
+</DIV>
diff --git a/templates/id/job-move.tmpl b/templates/id/job-move.tmpl
new file mode 100644
index 000000000..91fdbc421
--- /dev/null
+++ b/templates/id/job-move.tmpl
@@ -0,0 +1,26 @@
+<DIV CLASS="indent">
+
+<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
+
+<H2 CLASS="title">{job_id?Pindahkan Tugas {job_id}:Pindahkan Semua Tugas}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Tujuan Baru:</TH>
+<TD>
+<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
+{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Pindahkan Tugas:Pindahkan Tugas}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+
+</DIV>
diff --git a/templates/id/job-moved.tmpl b/templates/id/job-moved.tmpl
new file mode 100644
index 000000000..c52c31296
--- /dev/null
+++ b/templates/id/job-moved.tmpl
@@ -0,0 +1,8 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">{job_id?Pindahkan Tugas {job_id}:Pindahkan Semua Tugas}</H2>
+
+<P>{job_id?<A HREF="/jobs/{job_id}">Tugas {job_id}</A>:Semua tugas} dipindahkan ke
+<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
+
+</DIV>
diff --git a/templates/id/job-release.tmpl b/templates/id/job-release.tmpl
new file mode 100644
index 000000000..a447ae19b
--- /dev/null
+++ b/templates/id/job-release.tmpl
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Lepaskan Tugas {job_id}</H2>
+
+<P><A HREF="{job_printer_uri}">Tugas {job_id}</A> telah dilepas untuk dicetak.
+
+</DIV>
diff --git a/templates/id/job-restart.tmpl b/templates/id/job-restart.tmpl
new file mode 100644
index 000000000..c54601c87
--- /dev/null
+++ b/templates/id/job-restart.tmpl
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Cetak Ulang Tugas {job_id}</H2>
+
+<P><A HREF="{job_printer_uri}">Tugas {job_id}</A> telah dilaksanakan ulang.
+
+</DIV>
diff --git a/templates/id/jobs-header.tmpl b/templates/id/jobs-header.tmpl
new file mode 100644
index 000000000..3cba80c58
--- /dev/null
+++ b/templates/id/jobs-header.tmpl
@@ -0,0 +1,5 @@
+<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Lihat Tugas yang Aktif"></FORM>}
+{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Lihat Tugas yang Diselesaikan"></FORM>}
+{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Lihat Semua Tugas"></FORM>}</DIV>
+
+<P ALIGN="CENTER">{total=0?Tidak ada tugas:Menampilkan {#job_id} dari {total} tugas {?which_jobs=?yang aktif:{which_jobs=all?:yang diselesaikan}} {total=1?:}}.</P>
diff --git a/templates/id/jobs.tmpl b/templates/id/jobs.tmpl
new file mode 100644
index 000000000..5670d6d22
--- /dev/null
+++ b/templates/id/jobs.tmpl
@@ -0,0 +1,37 @@
+{#job_id=0?:
+<TABLE CLASS="list" SUMMARY="Job List">
+<THEAD>
+<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Nama</TH><TH>Pengguna</TH><TH>Ukuran</TH><TH>Halaman</TH><TH>Status</TH><TH>Kontrol</TH></TR>
+</THEAD>
+<TBODY>
+{[job_id]
+<TR VALIGN="TOP">
+<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}&nbsp;</TD>
+<TD>{?job_name=?Tak Dikenal:{job_name}}&nbsp;</TD>
+<TD>{job_originating_user_name}&nbsp;</TD>
+<TD>{job_k_octets}k&nbsp;</TD>
+<TD>{job_media_sheets_completed=0?Tak Dikenal:{?job_media_sheets_completed}}&nbsp;</TD>
+<TD>{job_state=3?ditunda sejak<BR>{time_at_creation}:{job_state=4?ditahan sejak<BR>{time_at_creation}:
+{job_state=5?diproses sejak<BR>{time_at_processing}:{job_state=6?dihentikan:
+{job_state=7?dibatalkan pada<BR>{time_at_completed}:{job_state=8?dibatalkan:diselesaikan pada<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
+<EM>"{job_printer_state_message}"</EM>:}</TD>
+<TD>
+{job_preserved>0?{job_state>5?
+<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
+<INPUT TYPE="SUBMIT" VALUE="Reprint Job"></FORM>:}:}
+{job_state=4?
+<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
+<INPUT TYPE="SUBMIT" VALUE="Release Job"></FORM>:}
+{job_state=3?
+<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
+<INPUT TYPE="SUBMIT" VALUE="Hold Job"></FORM>:}
+{job_state<7?
+<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
+<INPUT TYPE="SUBMIT" VALUE="Cancel Job"></FORM>
+<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Move Job"></FORM>:}
+&nbsp;</TD>
+</TR>
+}
+</TBODY>
+</TABLE>
+}
diff --git a/templates/id/list-available-printers.tmpl b/templates/id/list-available-printers.tmpl
new file mode 100644
index 000000000..3c8884c2b
--- /dev/null
+++ b/templates/id/list-available-printers.tmpl
@@ -0,0 +1,11 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Pencetak yang Ada</H2>
+
+{#device_uri=0?<P>Tidak ada pencetak.</P>
+:<UL>{[device_uri]
+<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Local Printer"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Tambah Pencetak Ini"></FORM>
+{device_make_and_model} ({device_info})</LI>
+}</UL>}
+
+</DIV>
diff --git a/templates/id/modify-class.tmpl b/templates/id/modify-class.tmpl
new file mode 100644
index 000000000..ad8f3113a
--- /dev/null
+++ b/templates/id/modify-class.tmpl
@@ -0,0 +1,33 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Ubah Kelas {printer_name}</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+
+<TABLE>
+<TR>
+<TH CLASS="label">Deskripsi:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Lokasi:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">Anggota:</TH>
+<TD>
+<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
+{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
+</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Ubah Kelas"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
diff --git a/templates/id/modify-printer.tmpl b/templates/id/modify-printer.tmpl
new file mode 100644
index 000000000..ffe1203df
--- /dev/null
+++ b/templates/id/modify-printer.tmpl
@@ -0,0 +1,37 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Ubah {printer_name}</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+
+<TABLE>
+<TR>
+<TH CLASS="label">Deskripsi:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(Deskripsi yang mudah dibaca, seperti "HP LaserJet dengan Pendupleks")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Lokasi:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(Deskripsi yang mudah dibaca, seperti "Lab 1")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">Koneksi:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
+</TR>
+<TR>
+<TH CLASS="label">Berbagi:</TH>
+<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
+Berbagi Pencetak Ini</TD>
+</TR>
+<TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Lanjut"></TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
diff --git a/templates/id/norestart.tmpl b/templates/id/norestart.tmpl
new file mode 100644
index 000000000..f39d9f259
--- /dev/null
+++ b/templates/id/norestart.tmpl
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Ubah Pengaturan</H2>
+
+<P>Server tidak dijalankan ulang karena tidak ada perubahan yang terjadi...</P>
+
+</DIV>
diff --git a/templates/id/option-boolean.tmpl b/templates/id/option-boolean.tmpl
new file mode 100644
index 000000000..e832ee102
--- /dev/null
+++ b/templates/id/option-boolean.tmpl
@@ -0,0 +1,6 @@
+<TR>
+<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
+<TD>
+{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
+</TD>
+</TR>
diff --git a/templates/id/option-conflict.tmpl b/templates/id/option-conflict.tmpl
new file mode 100644
index 000000000..71e2bcca8
--- /dev/null
+++ b/templates/id/option-conflict.tmpl
@@ -0,0 +1,7 @@
+<P><B>Kesalahan:</B> Opsi berikut ini konflik:</P>
+
+<UL>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
+}</UL>
+
+<P>Silakan ubah satu atau lebih opsi yang ada untuk memperbaiki masalah ini.</P>
diff --git a/templates/id/option-header.tmpl b/templates/id/option-header.tmpl
new file mode 100644
index 000000000..464726a50
--- /dev/null
+++ b/templates/id/option-header.tmpl
@@ -0,0 +1,5 @@
+<DIV CLASS="tab" ID="{group_id}">
+
+<H3 ALIGN="CENTER">{group}</H3>
+
+<TABLE WIDTH="100%">
diff --git a/templates/id/option-pickmany.tmpl b/templates/id/option-pickmany.tmpl
new file mode 100644
index 000000000..0da75e5d2
--- /dev/null
+++ b/templates/id/option-pickmany.tmpl
@@ -0,0 +1,6 @@
+<TR>
+<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
+<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
+{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
+</SELECT></TD>
+</TR>
diff --git a/templates/id/option-pickone.tmpl b/templates/id/option-pickone.tmpl
new file mode 100644
index 000000000..33fca8ab6
--- /dev/null
+++ b/templates/id/option-pickone.tmpl
@@ -0,0 +1,18 @@
+<TR>
+<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
+<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
+{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
+</SELECT>
+{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
+<TR><TH CLASS="sublabel">{paramtext}:</TH>
+<TD>{params=Units?<SELECT NAME="{keyword}.{params}">
+<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Poin</OPTION>
+<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Milimeter</OPTION>
+<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Sentimeter</OPTION>
+<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Inci</OPTION>
+<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Kaki</OPTION>
+<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Meter</OPTION>
+</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword}.{params}" VALUE="{paramvalue}">}</TD></TR>
+}</TABLE>
+</TD>:}
+</TR>
diff --git a/templates/id/option-trailer.tmpl b/templates/id/option-trailer.tmpl
new file mode 100644
index 000000000..a403a981f
--- /dev/null
+++ b/templates/id/option-trailer.tmpl
@@ -0,0 +1,5 @@
+</TABLE>
+
+<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Atur Opsi Baku"></P>
+
+</DIV>
diff --git a/templates/id/pager.tmpl b/templates/id/pager.tmpl
new file mode 100644
index 000000000..00b6340c3
--- /dev/null
+++ b/templates/id/pager.tmpl
@@ -0,0 +1,6 @@
+<TABLE CLASS="inset" SUMMARY="Paging Bar">
+<TR>
+ <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Sebelumnya"></FORM>:&nbsp;}</TD>
+ <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Selanjutnya &#x25b6;"></FORM>:&nbsp;}</TD>
+</TR>
+</TABLE>
diff --git a/templates/id/printer-accept.tmpl b/templates/id/printer-accept.tmpl
new file mode 100644
index 000000000..bba229a81
--- /dev/null
+++ b/templates/id/printer-accept.tmpl
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Terima Tugas dari {is_class?Kelas:Pencetak} {printer_name}</H2>
+
+<P>{is_class?Kelas:Pencetak} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+kini menerima tugas.</P>
+
+</DIV>
diff --git a/templates/id/printer-added.tmpl b/templates/id/printer-added.tmpl
new file mode 100644
index 000000000..636496a9a
--- /dev/null
+++ b/templates/id/printer-added.tmpl
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Tambah Pencetak</H2>
+
+<P>Pencetak <A HREF="/printers/{printer_name}">{printer_name}</A> telah berhasil ditambahkan.
+
+</DIV>
diff --git a/templates/id/printer-configured.tmpl b/templates/id/printer-configured.tmpl
new file mode 100644
index 000000000..c2c817928
--- /dev/null
+++ b/templates/id/printer-configured.tmpl
@@ -0,0 +1,8 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Atur Opsi Baku untuk {printer_name}</H2>
+
+<P>Opsi baku {OP=set-class-options?kelas <A HREF="/classes/{printer_name}">:pencetak <A HREF="/printers/{printer_name}">}{printer_name}</A>
+telah berhasil ditetapkan.
+
+</DIV>
diff --git a/templates/id/printer-confirm.tmpl b/templates/id/printer-confirm.tmpl
new file mode 100644
index 000000000..de668e741
--- /dev/null
+++ b/templates/id/printer-confirm.tmpl
@@ -0,0 +1,10 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Hapus Pencetak {printer_name}</H2>
+
+<P><B>Peringatan:</B> Anda yakin untuk menghapus
+{printer_name}?</P>
+
+<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Hapus Pencetak"></FORM></P>
+
+</DIV>
diff --git a/templates/id/printer-default.tmpl b/templates/id/printer-default.tmpl
new file mode 100644
index 000000000..2bbedae09
--- /dev/null
+++ b/templates/id/printer-default.tmpl
@@ -0,0 +1,11 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Atur {is_class?Kelas:Pencetak} {printer_name} sebagai Baku</H2>
+
+<P>{is_class?Kelas:Pencetak} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+telah dijadikan pencetak utama pada server.</P>
+
+<BLOCKQUOTE><B>Catatan:</B> Semua pengguna yang diatur melalui perintah <TT>lpoptions</TT> akan ditimpa oleh pengaturan ini.</BLOCKQUOTE>
+
+</DIV>
diff --git a/templates/id/printer-deleted.tmpl b/templates/id/printer-deleted.tmpl
new file mode 100644
index 000000000..e4492ea24
--- /dev/null
+++ b/templates/id/printer-deleted.tmpl
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Hapus Pencetak {printer_name}</H2>
+
+<P>Pencetak {printer_name} telah berhasil dihapus.
+
+</DIV>
diff --git a/templates/id/printer-jobs-header.tmpl b/templates/id/printer-jobs-header.tmpl
new file mode 100644
index 000000000..e6ca44714
--- /dev/null
+++ b/templates/id/printer-jobs-header.tmpl
@@ -0,0 +1,3 @@
+<DIV CLASS="indent">
+<H3 CLASS="title">Tugas</H3>
+</DIV>
diff --git a/templates/id/printer-modified.tmpl b/templates/id/printer-modified.tmpl
new file mode 100644
index 000000000..16a7ad349
--- /dev/null
+++ b/templates/id/printer-modified.tmpl
@@ -0,0 +1,7 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Ubah Pencetak {printer_name}</H2>
+
+<P>Pencetak <A HREF="/printers/{printer_name}">{printer_name}</A> telah berhasil diubah.
+
+</DIV>
diff --git a/templates/id/printer-purge.tmpl b/templates/id/printer-purge.tmpl
new file mode 100644
index 000000000..5dff3ef14
--- /dev/null
+++ b/templates/id/printer-purge.tmpl
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Bersihkan Tugas untuk {is_class?Kelas:Pencetak} {printer_name}</H2>
+
+<P>{is_class?Kelas:Pencetak} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+telah dibersihkan dari semua tugas.</P>
+
+</DIV>
diff --git a/templates/id/printer-reject.tmpl b/templates/id/printer-reject.tmpl
new file mode 100644
index 000000000..616dbf009
--- /dev/null
+++ b/templates/id/printer-reject.tmpl
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Tolak Tugas untuk {is_class?Kelas:Pencetak} {printer_name}</H2>
+
+<P>{is_class?Kelas:Pencetak} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+tidak lagi menerima tugas.</P>
+
+</DIV>
diff --git a/templates/id/printer-start.tmpl b/templates/id/printer-start.tmpl
new file mode 100644
index 000000000..ca3d95a5f
--- /dev/null
+++ b/templates/id/printer-start.tmpl
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Menjalankan Ulang {is_class?Kelas:Pencetak} {printer_name}</H2>
+
+<P>{is_class?Kelas:Pencetak} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+telah dijalankan lagi.</P>
+
+</DIV>
diff --git a/templates/id/printer-stop.tmpl b/templates/id/printer-stop.tmpl
new file mode 100644
index 000000000..ca022e002
--- /dev/null
+++ b/templates/id/printer-stop.tmpl
@@ -0,0 +1,9 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Menghentikan {is_class?Kelas:Pencetak} {printer_name}</H2>
+
+<P>{is_class?Kelas:Pencetak} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+telah dihentikan.</P>
+
+</DIV>
diff --git a/templates/id/printer.tmpl b/templates/id/printer.tmpl
new file mode 100644
index 000000000..68e0a3981
--- /dev/null
+++ b/templates/id/printer.tmpl
@@ -0,0 +1,45 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
+({printer_state=3?Menganggur:{printer_state=4?Memproses:Berhenti}},
+{printer_is_accepting_jobs=0?Menolak Tugas:Menerima Tugas},
+{server_is_sharing_printers=0?Tidak:{printer_is_shared=0?Tidak:}} Berbagi{default_name={printer_name}?, Server Baku:})</H2>
+
+<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
+<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
+<OPTION VALUE="">Perawatan</OPTION>
+<OPTION VALUE="print-test-page">Cetak Halaman Uji</OPTION>
+{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Bersihkan Kepala Pencetak</OPTION>:}
+{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Cetak Halaman Uji-Sendiri</OPTION>:}
+{printer_state=5?<OPTION VALUE="start-printer">Resume Pencetak</OPTION>:<OPTION VALUE="stop-printer">Tahan Pencetak</OPTION>}
+{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Terima Tugas</OPTION>:<OPTION VALUE="reject-jobs">Tolak Tugas</OPTION>}
+<OPTION VALUE="move-jobs">Pindahkan Semua TUgas</OPTION>
+<OPTION VALUE="purge-jobs">Batalkan Semua Tugas</OPTION>
+</SELECT>
+<INPUT TYPE="SUBMIT" VALUE="Lakukan!" STYLE="display: none;">
+</FORM>
+
+<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
+<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
+<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
+<OPTION VALUE="">Administrasi</OPTION>
+<OPTION VALUE="modify-printer">Ubah Pencetak</OPTION>
+<OPTION VALUE="delete-printer">Hapus Pencetak</OPTION>
+<OPTION VALUE="set-printer-options">Atur Opsi Baku</OPTION>
+<OPTION VALUE="set-as-default">Atus Sebagai Server Baku</OPTION>
+<OPTION VALUE="set-allowed-users">Atur Pengguna yang Diperbolehkan</OPTION>
+</SELECT>
+<INPUT TYPE="SUBMIT" VALUE="Lakukan!" STYLE="display: none;">
+</FORM>
+
+<TABLE SUMMARY="{printer_name}">
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Deskripsi:</TH><TD>{printer_info}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Lokasi:</TH><TD>{printer_location}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Penggerak:</TH><TD>{printer_make_and_model} ({color_supported=1?warna:skala abu-abu}{sides_supported?, cetak 2-sisi:})<BR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Koneksi:</TH><TD>{device_uri}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Baku:</TH><TD>job-sheets={job_sheets_default}
+media={media_default?{media_default}:tak dikenal}
+{sides_default?sides={sides_default}:}</TD></TR>
+</TABLE>
+
+</DIV>
diff --git a/templates/id/printers-header.tmpl b/templates/id/printers-header.tmpl
new file mode 100644
index 000000000..b1a00fcd4
--- /dev/null
+++ b/templates/id/printers-header.tmpl
@@ -0,0 +1 @@
+<P ALIGN="CENTER">{total=0?Tidak ada pencetak:Menampilkan {#printer_name} dari {total} pencetak{total=1?:}}.</P>
diff --git a/templates/id/printers.tmpl b/templates/id/printers.tmpl
new file mode 100644
index 000000000..3aa4d0da6
--- /dev/null
+++ b/templates/id/printers.tmpl
@@ -0,0 +1,11 @@
+{#printer_name=0?:
+<TABLE CLASS="list" SUMMARY="Printer List">
+<THEAD>
+<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nama Antrian <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nama Antrian <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Deskripsi</TH><TH>Lokasi</TH><TH>Pembuat dan Model</TH><TH>Status</TH></TR>
+</THEAD>
+<TBODY>
+{[printer_name]
+<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{printer_make_and_model}</TD><TD>{printer_state=3?Menganggur:{printer_state=4?Memproses:Berhenti}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
+}
+</TBODY>
+</TABLE></DIV>}
diff --git a/templates/id/restart.tmpl b/templates/id/restart.tmpl
new file mode 100644
index 000000000..fde1b06ba
--- /dev/null
+++ b/templates/id/restart.tmpl
@@ -0,0 +1,8 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Ubah Pengaturan</H2>
+
+<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
+ALT="Indikator Kesibukan"> Silakan tunggu selagi server dijalankan ulang...</P>
+
+</DIV>
diff --git a/templates/id/samba-export.tmpl b/templates/id/samba-export.tmpl
new file mode 100644
index 000000000..c42f7b6a3
--- /dev/null
+++ b/templates/id/samba-export.tmpl
@@ -0,0 +1,54 @@
+<SCRIPT TYPE="text/javascript"><!--
+function select_printers() {
+ var list = document.export_samba.EXPORT_NAME;
+ var sel = document.export_samba.EXPORT_ALL.checked;
+
+ for (i = 0; i < list.length; i ++) {
+ list.options[i].selected = sel;
+ }
+}
+--></SCRIPT>
+
+<FORM METHOD="POST" ACTION="/admin/" NAME="export_samba">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba">
+
+<H2 CLASS="title">Ekspor Pencetak ke Samba</H2>
+
+{error?<P>Tak dapat mengekspor pencetak ke Samba\:</P>
+<BLOCKQUOTE>{error}</BLOCKQUOTE>
+<P>Rujuklah berkas <A HREF="/admin/log/error_log"
+TARGET="_blank">error_log</A> untuk informasi lebih lanjut.</P>:
+<P>Di halaman ini, Anda dapat mengekspor pencetak untuk Samba, sehingga
+klien Windows dapat mengakses pencetak-pencetak tersebut melalui ikon
+<VAR>Network Neighborhood</VAR> atau <VAR>Network Places</VAR> yang ada
+di desktop mereka. Namun, sebelumnya Anda harus memasang penggerak
+pencetak PostScript Windows seperti yang dijelaskan pada halaman
+manual <A HREF="/help/man-cupsaddsmb.html"
+TARGET="_blank">cupsaddsmb(8)</A>.</P>}
+
+<TABLE>
+<TR>
+<TH CLASS="label">Pencetak:</TH>
+<TD>
+<SELECT NAME="EXPORT_NAME" SIZE="10" MULTIPLE>
+{[printer_name]<OPTION VALUE="{printer_name}"{export_all? SELECTED:{printer_export? SELECTED:}}>{printer_name}}
+</SELECT><BR>
+<INPUT TYPE="CHECKBOX" NAME="EXPORT_ALL"{export_all? CHECKED:}
+onChange="select_printers()"> Ekspor Semua Pencetak
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">Nama Pengguna Samba:</TH>
+<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (diperlukan)</TD>
+</TR>
+<TR>
+<TH CLASS="label">Sandi Samba:</TH>
+<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (diperlukan)</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Ekspor Pencetak ke Samba"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/id/samba-exported.tmpl b/templates/id/samba-exported.tmpl
new file mode 100644
index 000000000..8fa811100
--- /dev/null
+++ b/templates/id/samba-exported.tmpl
@@ -0,0 +1 @@
+<P>Pencetak berhasil diekspor ke Samba.</P>
diff --git a/templates/id/search.tmpl b/templates/id/search.tmpl
new file mode 100644
index 000000000..9dc2e5d54
--- /dev/null
+++ b/templates/id/search.tmpl
@@ -0,0 +1,10 @@
+<FORM ACTION="/{SECTION}/{?SEARCH_DEST}" METHOD="GET">
+{WHICH_JOBS?<INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{WHICH_JOBS}">:}
+{ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
+
+<P ALIGN="CENTER"><B>Cari di
+{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?Kelas:{SECTION=jobs?Tugas:Pencetak}}}:</B>
+<INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
+TYPE="SUBMIT" VALUE="Cari"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Bersihkan"></P>
+
+</FORM>
diff --git a/templates/id/set-printer-options-header.tmpl b/templates/id/set-printer-options-header.tmpl
new file mode 100644
index 000000000..12386dc29
--- /dev/null
+++ b/templates/id/set-printer-options-header.tmpl
@@ -0,0 +1,25 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Atur Opsi Baku untuk {printer_name}</H2>
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Kuiri Pencetak untuk Opsi Baku">:}
+
+<SCRIPT TYPE="text/javascript"><!--
+function update_paramtable(option)
+{
+ var cb = document.getElementById("select-" + option)
+ var paramstable = document.getElementById(option + "-params");
+ if (cb.value == "Custom")
+ paramstable.style.display = "table";
+ else
+ paramstable.style.display = "none";
+}
+--></SCRIPT>
+
+<H3 CLASS="title">{[group_id]
+<A HREF="#{group_id}">{group}</A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</H3>
+
+<DIV CLASS="tabs">
diff --git a/templates/id/set-printer-options-trailer.tmpl b/templates/id/set-printer-options-trailer.tmpl
new file mode 100644
index 000000000..11adc7012
--- /dev/null
+++ b/templates/id/set-printer-options-trailer.tmpl
@@ -0,0 +1,16 @@
+</DIV>
+
+<SCRIPT TYPE="text/javascript"><!--
+// Hide custom options parameters for browsers that understand Javascript
+var paramtables = document.getElementsByName("paramtable");
+for (var i = 0; i < paramtables.length; i++)
+{
+ var opt = paramtables[i].id.substr(0, paramtables[i].id.lastIndexOf("-"));
+ var cb = document.getElementById("select-" + opt);
+ if (cb.value != "Custom")
+ paramtables[i].style.display = "none";
+}
+--></SCRIPT>
+</FORM>
+
+</DIV>
diff --git a/templates/id/subscription-added.tmpl b/templates/id/subscription-added.tmpl
new file mode 100644
index 000000000..70abc79f8
--- /dev/null
+++ b/templates/id/subscription-added.tmpl
@@ -0,0 +1,5 @@
+<DIV CLASS="indent">
+
+<P>Subskripsi {subscription_name} telah berhasil ditambahkan.</P>
+
+</DIV>
diff --git a/templates/id/subscription-canceled.tmpl b/templates/id/subscription-canceled.tmpl
new file mode 100644
index 000000000..ba7b0e15e
--- /dev/null
+++ b/templates/id/subscription-canceled.tmpl
@@ -0,0 +1,5 @@
+<DIV CLASS="indent">
+
+<P>Subskripsi #{notify_subscription_id} telah dibatalkan.</P>
+
+</DIV>
diff --git a/templates/id/test-page.tmpl b/templates/id/test-page.tmpl
new file mode 100644
index 000000000..5b1492ea1
--- /dev/null
+++ b/templates/id/test-page.tmpl
@@ -0,0 +1,8 @@
+<DIV CLASS="indent">
+
+<H2 CLASS="title">Cetak Halaman Uji pada {printer_name}</H2>
+
+<P>Halaman uji telah dikirim; ID tugas adalah <A HREF="/{SECTION}/{printer_name}">
+{printer_name}-{job_id}</A>.</P>
+
+</DIV>
diff --git a/templates/id/trailer.tmpl b/templates/id/trailer.tmpl
new file mode 100644
index 000000000..33262f989
--- /dev/null
+++ b/templates/id/trailer.tmpl
@@ -0,0 +1,8 @@
+</TD></TR>
+<TR><TD>&nbsp;</TD></TR>
+<TR><TD CLASS="trailer">CUPS dan logo CUPS adalah merek dagang dari
+<A HREF="http://www.apple.com">Apple Inc.</A> Hak Cipta CUPS adalah 2007-2009 Apple
+Inc. Semua hak terpelihara.</TD></TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/templates/id/users.tmpl b/templates/id/users.tmpl
new file mode 100644
index 000000000..3795d694a
--- /dev/null
+++ b/templates/id/users.tmpl
@@ -0,0 +1,29 @@
+<DIV CLASS="indent">
+
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+{IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
+
+<H2 CLASS="title">Pengguna yang Diperbolehkan Bagi {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">Pengguna:</TH>
+<TD>
+<INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
+<BR>
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Perbolehkan pengguna ini untuk mencetak
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Larang pengguna ini untuk mencetak
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>
+<INPUT TYPE="SUBMIT" VALUE="Atur Pengguna yang Diperbolehkan">
+</TD>
+</TR>
+</TABLE>
+
+</FORM>
+</DIV>
diff --git a/templates/ja/add-printer.tmpl b/templates/ja/add-printer.tmpl
index baf93ea29..c98424679 100644
--- a/templates/ja/add-printer.tmpl
+++ b/templates/ja/add-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff --git a/templates/ja/admin.tmpl b/templates/ja/admin.tmpl
index 642e90b99..f2904cb44 100644
--- a/templates/ja/admin.tmpl
+++ b/templates/ja/admin.tmpl
@@ -20,7 +20,7 @@
<H2 CLASS="title">ジョブ</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="ジョブの管理"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="ジョブの管理"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
diff --git a/templates/ja/modify-printer.tmpl b/templates/ja/modify-printer.tmpl
index ef3066f3d..ff14b400b 100644
--- a/templates/ja/modify-printer.tmpl
+++ b/templates/ja/modify-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
diff --git a/templates/ja/option-conflict.tmpl b/templates/ja/option-conflict.tmpl
index f21acc5c9..4f782ac80 100644
--- a/templates/ja/option-conflict.tmpl
+++ b/templates/ja/option-conflict.tmpl
@@ -1,7 +1,7 @@
<P><B>エラー:</B> 以下のオプションは競合します:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>競合を解決するために、1 つ以上のオプションを変更してください。</P>
diff --git a/templates/modify-printer.tmpl b/templates/modify-printer.tmpl
index c78dc2081..f0a8ea874 100644
--- a/templates/modify-printer.tmpl
+++ b/templates/modify-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
diff --git a/templates/option-conflict.tmpl b/templates/option-conflict.tmpl
index 5086a649f..3772295a8 100644
--- a/templates/option-conflict.tmpl
+++ b/templates/option-conflict.tmpl
@@ -1,7 +1,7 @@
<P><B>Error:</B> The following options are conflicting:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>Please change one or more of the options to resolve the conflicts.</P>
diff --git a/templates/pl/add-printer.tmpl b/templates/pl/add-printer.tmpl
index a8f2f5925..9fa76ca62 100644
--- a/templates/pl/add-printer.tmpl
+++ b/templates/pl/add-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff --git a/templates/pl/admin.tmpl b/templates/pl/admin.tmpl
index 5a5e828d2..387f05360 100644
--- a/templates/pl/admin.tmpl
+++ b/templates/pl/admin.tmpl
@@ -20,7 +20,7 @@
<H2 CLASS="title">Zadania</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="Zarządzanie zadaniami"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Zarządzanie zadaniami"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
diff --git a/templates/pl/jobs-header.tmpl b/templates/pl/jobs-header.tmpl
index c91943f6b..ea8718d12 100644
--- a/templates/pl/jobs-header.tmpl
+++ b/templates/pl/jobs-header.tmpl
@@ -2,4 +2,4 @@
{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Wyświetl zakończone zadania"></FORM>}
{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Wyświetl wszystkie zadania"></FORM>}</DIV>
-<P ALIGN="CENTER">{total=0?Brak zadań:Wyświetlanie {#job_id} z {total} {?which_jobs=?aktywnych:{which_jobs=wszystkich?:zakończonych}} zadań{total=1?:s}}.</P>
+<P ALIGN="CENTER">{total=0?Brak zadań:Wyświetlanie {#job_id} z {total} {?which_jobs=?aktywnych:{which_jobs=all?:zakończonych}} zadań{total=1?:s}}.</P>
diff --git a/templates/pl/modify-printer.tmpl b/templates/pl/modify-printer.tmpl
index 5851a0ec9..30b2c14ec 100644
--- a/templates/pl/modify-printer.tmpl
+++ b/templates/pl/modify-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
diff --git a/templates/pl/option-conflict.tmpl b/templates/pl/option-conflict.tmpl
index 42aa5759d..708ba4c2f 100644
--- a/templates/pl/option-conflict.tmpl
+++ b/templates/pl/option-conflict.tmpl
@@ -1,7 +1,7 @@
<P><B>Błąd:</B> następujące opcje są w konflikcie ze sobą:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>Proszę zmienić jedną lub więcej opcji, aby rozwiązać konflikt.</P>
diff --git a/templates/ru/add-printer.tmpl b/templates/ru/add-printer.tmpl
index ff333e936..59d6e2193 100644
--- a/templates/ru/add-printer.tmpl
+++ b/templates/ru/add-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
diff --git a/templates/ru/admin.tmpl b/templates/ru/admin.tmpl
index dafb5fd96..9362f428c 100644
--- a/templates/ru/admin.tmpl
+++ b/templates/ru/admin.tmpl
@@ -20,7 +20,7 @@
<H2 CLASS="title">Задания</H2>
<P>
-<FORM ACTION="/jobs/" METHDO="GET"><INPUT TYPE="SUBMIT" VALUE="Управление заданиями"></FORM>
+<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Управление заданиями"></FORM>
</P>
</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
diff --git a/templates/ru/jobs-header.tmpl b/templates/ru/jobs-header.tmpl
index d1a4c0812..d9ee96043 100644
--- a/templates/ru/jobs-header.tmpl
+++ b/templates/ru/jobs-header.tmpl
@@ -1,5 +1,6 @@
<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Показать активные задания"></FORM>}
-{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="Завершено"><INPUT TYPE="SUBMIT" VALUE="Показать завершенные задания"></FORM>}
-{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="все"><INPUT TYPE="SUBMIT" VALUE="Показать все задания"></FORM>}</DIV>
+{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Показать завершенные задания"></FORM>}
+{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Показать все задания"></FORM>}</DIV>
+
+<P ALIGN="CENTER">{total=0?Нет заданий:Задание {#job_id} из {total} {?which_jobs=?активных:{which_jobs=all?:завершенных}}.</P>
-<P ALIGN="CENTER">{total=0?Нет заданий:Задание {#job_id} из {total} {?which_jobs=?активных:{which_jobs=всех?:завершенных}}.</P>
diff --git a/templates/ru/modify-printer.tmpl b/templates/ru/modify-printer.tmpl
index b5f1e39c3..74ea27c3b 100644
--- a/templates/ru/modify-printer.tmpl
+++ b/templates/ru/modify-printer.tmpl
@@ -4,6 +4,10 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
+<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
+<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
+<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
diff --git a/templates/ru/option-conflict.tmpl b/templates/ru/option-conflict.tmpl
index a3ba6395b..9497fb777 100644
--- a/templates/ru/option-conflict.tmpl
+++ b/templates/ru/option-conflict.tmpl
@@ -1,7 +1,7 @@
<P><B>Ошибка:</B> следующие параметры конфликтуют:</P>
<UL>
-{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>Измените один или несколько параметров для того, чтобы избежать конфликта.</P>
diff --git a/test/run-stp-tests.sh b/test/run-stp-tests.sh
index 191756587..b78ea9c22 100755
--- a/test/run-stp-tests.sh
+++ b/test/run-stp-tests.sh
@@ -275,11 +275,6 @@ ln -s $root/data/*.h /tmp/cups-$user/share/ppdc
ln -s $root/data/*.defs /tmp/cups-$user/share/ppdc
ln -s $root/templates /tmp/cups-$user/share
-if test $ssltype != 0; then
- mkdir $root/ssl
- cp server.* $root/ssl
-fi
-
#
# Mac OS X filters and configuration files...
#
@@ -437,6 +432,7 @@ fi
export SHLIB_PATH
+CUPS_DISABLE_APPLE_DEFAULT=yes; export CUPS_DISABLE_APPLE_DEFAULT
CUPS_SERVER=localhost:8631; export CUPS_SERVER
CUPS_SERVERROOT=/tmp/cups-$user; export CUPS_SERVERROOT
CUPS_STATEDIR=/tmp/cups-$user; export CUPS_STATEDIR