]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Load cups into easysw/current.
authorjlovell <jlovell@a1ca3aef-8c08-0410-bb20-df032aa958be>
Thu, 24 May 2007 18:54:11 +0000 (18:54 +0000)
committerjlovell <jlovell@a1ca3aef-8c08-0410-bb20-df032aa958be>
Thu, 24 May 2007 18:54:11 +0000 (18:54 +0000)
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@326 a1ca3aef-8c08-0410-bb20-df032aa958be

146 files changed:
CHANGES-1.2.txt
CHANGES.txt
Makefile
config-scripts/cups-defaults.m4
cups/language.c
desktop/cups.desktop
doc/Makefile
doc/help/spec-ipp.html
doc/help/spec-ppd.html
doc/images/button-list-available-printers.gif [new file with mode: 0644]
doc/zh_TW/images/button-accept-jobs.gif [new file with mode: 0644]
doc/zh_TW/images/button-add-class.gif [new file with mode: 0644]
doc/zh_TW/images/button-add-printer.gif [new file with mode: 0644]
doc/zh_TW/images/button-add-this-printer.gif [new file with mode: 0644]
doc/zh_TW/images/button-cancel-all-jobs.gif [new file with mode: 0644]
doc/zh_TW/images/button-cancel-job.gif [new file with mode: 0644]
doc/zh_TW/images/button-change-settings.gif [new file with mode: 0644]
doc/zh_TW/images/button-clean-print-heads.gif [new file with mode: 0644]
doc/zh_TW/images/button-clear.gif [new file with mode: 0644]
doc/zh_TW/images/button-continue.gif [new file with mode: 0644]
doc/zh_TW/images/button-delete-class.gif [new file with mode: 0644]
doc/zh_TW/images/button-delete-printer.gif [new file with mode: 0644]
doc/zh_TW/images/button-edit-configuration-file.gif [new file with mode: 0644]
doc/zh_TW/images/button-export-samba.gif [new file with mode: 0644]
doc/zh_TW/images/button-help.gif [new file with mode: 0644]
doc/zh_TW/images/button-hold-job.gif [new file with mode: 0644]
doc/zh_TW/images/button-manage-classes.gif [new file with mode: 0644]
doc/zh_TW/images/button-manage-jobs.gif [new file with mode: 0644]
doc/zh_TW/images/button-manage-printers.gif [new file with mode: 0644]
doc/zh_TW/images/button-manage-server.gif [new file with mode: 0644]
doc/zh_TW/images/button-modify-class.gif [new file with mode: 0644]
doc/zh_TW/images/button-modify-printer.gif [new file with mode: 0644]
doc/zh_TW/images/button-move-job.gif [new file with mode: 0644]
doc/zh_TW/images/button-move-jobs.gif [new file with mode: 0644]
doc/zh_TW/images/button-print-self-test-page.gif [new file with mode: 0644]
doc/zh_TW/images/button-print-test-page.gif [new file with mode: 0644]
doc/zh_TW/images/button-publish-printer.gif [new file with mode: 0644]
doc/zh_TW/images/button-reject-jobs.gif [new file with mode: 0644]
doc/zh_TW/images/button-release-job.gif [new file with mode: 0644]
doc/zh_TW/images/button-restart-job.gif [new file with mode: 0644]
doc/zh_TW/images/button-save-changes.gif [new file with mode: 0644]
doc/zh_TW/images/button-search.gif [new file with mode: 0644]
doc/zh_TW/images/button-set-allowed-users.gif [new file with mode: 0644]
doc/zh_TW/images/button-set-as-default.gif [new file with mode: 0644]
doc/zh_TW/images/button-set-printer-options.gif [new file with mode: 0644]
doc/zh_TW/images/button-show-active.gif [new file with mode: 0644]
doc/zh_TW/images/button-show-all.gif [new file with mode: 0644]
doc/zh_TW/images/button-show-completed.gif [new file with mode: 0644]
doc/zh_TW/images/button-show-next.gif [new file with mode: 0644]
doc/zh_TW/images/button-show-previous.gif [new file with mode: 0644]
doc/zh_TW/images/button-sort-ascending.gif [new file with mode: 0644]
doc/zh_TW/images/button-sort-descending.gif [new file with mode: 0644]
doc/zh_TW/images/button-start-class.gif [new file with mode: 0644]
doc/zh_TW/images/button-start-printer.gif [new file with mode: 0644]
doc/zh_TW/images/button-stop-class.gif [new file with mode: 0644]
doc/zh_TW/images/button-stop-printer.gif [new file with mode: 0644]
doc/zh_TW/images/button-unpublish-printer.gif [new file with mode: 0644]
doc/zh_TW/images/button-use-default-config.gif [new file with mode: 0644]
doc/zh_TW/images/button-view-access-log.gif [new file with mode: 0644]
doc/zh_TW/images/button-view-error-log.gif [new file with mode: 0644]
doc/zh_TW/images/button-view-page-log.gif [new file with mode: 0644]
doc/zh_TW/images/button-view-printable-version.gif [new file with mode: 0644]
doc/zh_TW/index.html.in [new file with mode: 0644]
init/PrintingServices.launchd [new file with mode: 0755]
locale/cups_zh_TW.po [new file with mode: 0644]
packaging/cups.list.in
packaging/cups.spec.in
packaging/installer.gif
packaging/installer.tif
packaging/installer.xcf.gz
pdftops/PSOutputDev.cxx
scheduler/conf.c
scheduler/cups-driverd.c
scheduler/dirsvc.c
scheduler/ipp.c
scheduler/main.c
scheduler/printers.c
scheduler/printers.h
scheduler/quotas.c
scheduler/util.c
systemv/cupstestppd.c
templates/Makefile
templates/zh_TW/add-class.tmpl [new file with mode: 0644]
templates/zh_TW/add-printer.tmpl [new file with mode: 0644]
templates/zh_TW/admin.tmpl [new file with mode: 0644]
templates/zh_TW/choose-device.tmpl [new file with mode: 0644]
templates/zh_TW/choose-make.tmpl [new file with mode: 0644]
templates/zh_TW/choose-model.tmpl [new file with mode: 0644]
templates/zh_TW/choose-serial.tmpl [new file with mode: 0644]
templates/zh_TW/choose-uri.tmpl [new file with mode: 0644]
templates/zh_TW/class-added.tmpl [new file with mode: 0644]
templates/zh_TW/class-confirm.tmpl [new file with mode: 0644]
templates/zh_TW/class-deleted.tmpl [new file with mode: 0644]
templates/zh_TW/class-jobs-header.tmpl [new file with mode: 0644]
templates/zh_TW/class-modified.tmpl [new file with mode: 0644]
templates/zh_TW/classes-header.tmpl [new file with mode: 0644]
templates/zh_TW/classes.tmpl [new file with mode: 0644]
templates/zh_TW/edit-config.tmpl.in [new file with mode: 0644]
templates/zh_TW/error-op.tmpl [new file with mode: 0644]
templates/zh_TW/error.tmpl [new file with mode: 0644]
templates/zh_TW/header.tmpl.in [new file with mode: 0644]
templates/zh_TW/help-header.tmpl [new file with mode: 0644]
templates/zh_TW/help-printable.tmpl [new file with mode: 0644]
templates/zh_TW/job-cancel.tmpl [new file with mode: 0644]
templates/zh_TW/job-hold.tmpl [new file with mode: 0644]
templates/zh_TW/job-move.tmpl [new file with mode: 0644]
templates/zh_TW/job-moved.tmpl [new file with mode: 0644]
templates/zh_TW/job-release.tmpl [new file with mode: 0644]
templates/zh_TW/job-restart.tmpl [new file with mode: 0644]
templates/zh_TW/jobs-header.tmpl [new file with mode: 0644]
templates/zh_TW/jobs.tmpl [new file with mode: 0644]
templates/zh_TW/maintenance.tmpl [new file with mode: 0644]
templates/zh_TW/modify-class.tmpl [new file with mode: 0644]
templates/zh_TW/modify-printer.tmpl [new file with mode: 0644]
templates/zh_TW/option-boolean.tmpl [new file with mode: 0644]
templates/zh_TW/option-conflict.tmpl [new file with mode: 0644]
templates/zh_TW/option-header.tmpl [new file with mode: 0644]
templates/zh_TW/option-pickmany.tmpl [new file with mode: 0644]
templates/zh_TW/option-pickone.tmpl [new file with mode: 0644]
templates/zh_TW/option-trailer.tmpl [new file with mode: 0644]
templates/zh_TW/pager.tmpl [new file with mode: 0644]
templates/zh_TW/printer-accept.tmpl [new file with mode: 0644]
templates/zh_TW/printer-added.tmpl [new file with mode: 0644]
templates/zh_TW/printer-configured.tmpl [new file with mode: 0644]
templates/zh_TW/printer-confirm.tmpl [new file with mode: 0644]
templates/zh_TW/printer-default.tmpl [new file with mode: 0644]
templates/zh_TW/printer-deleted.tmpl [new file with mode: 0644]
templates/zh_TW/printer-jobs-header.tmpl [new file with mode: 0644]
templates/zh_TW/printer-modified.tmpl [new file with mode: 0644]
templates/zh_TW/printer-purge.tmpl [new file with mode: 0644]
templates/zh_TW/printer-reject.tmpl [new file with mode: 0644]
templates/zh_TW/printer-start.tmpl [new file with mode: 0644]
templates/zh_TW/printer-stop.tmpl [new file with mode: 0644]
templates/zh_TW/printers-header.tmpl [new file with mode: 0644]
templates/zh_TW/printers.tmpl [new file with mode: 0644]
templates/zh_TW/restart.tmpl [new file with mode: 0644]
templates/zh_TW/samba-export.tmpl [new file with mode: 0644]
templates/zh_TW/samba-exported.tmpl [new file with mode: 0644]
templates/zh_TW/search.tmpl [new file with mode: 0644]
templates/zh_TW/set-printer-options-header.tmpl [new file with mode: 0644]
templates/zh_TW/set-printer-options-trailer.tmpl [new file with mode: 0644]
templates/zh_TW/test-page.tmpl [new file with mode: 0644]
templates/zh_TW/trailer.tmpl [new file with mode: 0644]
templates/zh_TW/users.tmpl [new file with mode: 0644]
tools/makebuttons
tools/testosx

index ce6be902bc7563ce37b9cde584590f8b2d4a062b..de8bf752453ac2b90aa25f98c2e4001660de3bc9 100644 (file)
@@ -3,6 +3,9 @@ CHANGES-1.2.txt
 
 CHANGES IN CUPS V1.2.11
 
+       - Fixed the "relaying from" log message (STR #2376)
+       - Updated the launchd support on Mac OS X to better
+         support reconfiguration.
        - "make distclean" didn't remove all generated files
          (STR #2366)
        - Fixed a bug in the advertisement of classes (STR
index 3985acf684bdfa08d59d9f378553520aa6a147a3..942cd4d307e1b9bd35d2dc0d5e3f5917038733fd 100644 (file)
@@ -5,6 +5,8 @@ CHANGES IN CUPS V1.3
 
        - Documentation updates (STR #1775, STR #2130, STR #2131,
          STR #2263, STR #2356)
+       - The scheduler did not report Bonjour shared printers as
+         remote printers (STR #2384)
        - Added new -R and -W options to the cupstestppd program
          for greater control over the testing of PPDs.
        - Added a new cupsGetServerPPD() function for getting
@@ -14,11 +16,17 @@ CHANGES IN CUPS V1.3
        - Added a new CUPS_GET_PPD operation for getting an
          available PPD file on the server (STR #2334) 
        - CUPS_GET_PPDS now reports multiple ppd-product values
-         if the corresponding PPD contains multiple products
-         (STR #2334)
+         based on the PPD ModelName and Product strings (STR
+         #2334, STR #2383)
        - CUPS_GET_PPDS now reports the PSVersion attributes
          from a PPD file in the ppd-psversion attribute
          (STR #2334)
+       - CUPS_GET_PPDS now reports the cupsModelNumber attribute
+         from a PPD file in the ppd-model-number attribute (STR
+         #2383)
+       - CUPS_GET_PPDS now reports a driver type string in the
+         ppd-type attribute based on the cupsFax and cupsFilter
+         attributes in a PPD file (STR #2383)
        - Added a new printer attribute called "cups-version"
          which reports the version of CUPS that is running
          (STR #2240)
index 1cb72a93227e63e1c5593c5fb55d289198b3ac6d..1edbe7939a3ee58ff9d2637b938304ca031e44a1 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
 #
-# "$Id: Makefile 6500 2007-04-30 21:47:48Z mike $"
+# "$Id: Makefile 6513 2007-05-06 23:50:25Z mike $"
 #
 #   Top-level Makefile for the Common UNIX Printing System (CUPS).
 #
@@ -132,12 +132,21 @@ install:  installhdrs
                        echo Installing StartupItems files...; \
                        $(INSTALL_SCRIPT) init/PrintingServices $(BUILDROOT)$(INITDDIR)/PrintingServices; \
                        $(INSTALL_DATA) init/StartupParameters.plist $(BUILDROOT)$(INITDDIR)/StartupParameters.plist; \
-                       $(INSTALL_DIR) -m 755 $(BUILDROOT)$(INITDDIR)/Resources/English.lproj; \
+                       $(INSTALL_DIR) $(BUILDROOT)$(INITDDIR)/Resources/English.lproj; \
                        $(INSTALL_DATA) init/Localizable.strings $(BUILDROOT)$(INITDDIR)/Resources/English.lproj/Localizable.strings; \
                elif test "$(INITDDIR)" = "/System/Library/LaunchDaemons"; then \
                        echo Installing LaunchDaemons configuration files...; \
                        $(INSTALL_DATA) init/org.cups.cupsd.plist $(BUILDROOT)$(DEFAULT_LAUNCHD_CONF); \
                        $(INSTALL_DATA) init/org.cups.cups-lpd.plist $(BUILDROOT)/System/Library/LaunchDaemons; \
+                       case `uname -r` in \
+                               8.*) \
+                               $(INSTALL_DIR) $(BUILDROOT)/System/Library/StartupItems/PrintingServices; \
+                               $(INSTALL_SCRIPT) init/PrintingServices.launchd $(BUILDROOT)/System/Library/StartupItems/PrintingServices/PrintingServices; \
+                               $(INSTALL_DATA) init/StartupParameters.plist $(BUILDROOT)/System/Library/StartupItems/PrintingServices/StartupParameters.plist; \
+                               $(INSTALL_DIR) $(BUILDROOT)/System/Library/StartupItems/PrintingServices/Resources/English.lproj; \
+                               $(INSTALL_DATA) init/Localizable.strings $(BUILDROOT)/System/Library/StartupItems/PrintingServices/Resources/English.lproj/Localizable.strings; \
+                               ;; \
+                       esac \
                else \
                        echo Installing RC script...; \
                        $(INSTALL_SCRIPT) init/cups.sh $(BUILDROOT)$(INITDDIR)/cups; \
@@ -215,7 +224,9 @@ uninstall:
                        $(RM) $(BUILDROOT)$(INITDDIR)/Resources/English.lproj/Localizable.strings; \
                        $(RMDIR) $(BUILDROOT)$(INITDDIR)/Resources/English.lproj; \
                elif test "$(INITDDIR)" = "/System/Library/LaunchDaemons"; then \
-                       $(RM) $(BUILDROOT)$(DEFAULT_LAUNCHD_CONF); \
+                       $(RM) $(BUILDROOT)$(INITDDIR)/org.cups.cupsd.plist; \
+                       $(RM) $(BUILDROOT)$(INITDDIR)/org.cups.cups-lpd.plist; \
+                       $(RMDIR) $(BUILDROOT)/System/Library/StartupItems/PrintingServices; \
                else \
                        $(INSTALL_SCRIPT) init/cups.sh $(BUILDROOT)$(INITDDIR)/cups; \
                fi \
@@ -280,5 +291,5 @@ dist:       all
 
 
 #
-# End of "$Id: Makefile 6500 2007-04-30 21:47:48Z mike $".
+# End of "$Id: Makefile 6513 2007-05-06 23:50:25Z mike $".
 #
index 6444188332cdb38235e618aa7123a1fcad66d6db..5edcbb4336f66b5473c9596c9dce4e39c6bcdd0f 100644 (file)
@@ -1,5 +1,5 @@
 dnl
-dnl "$Id: cups-defaults.m4 6431 2007-04-02 14:31:49Z mike $"
+dnl "$Id: cups-defaults.m4 6529 2007-05-08 19:48:20Z mike $"
 dnl
 dnl   Default cupsd configuration settings for the Common UNIX Printing System
 dnl   (CUPS).
@@ -24,11 +24,11 @@ dnl         WWW: http://www.cups.org
 dnl
 
 dnl Default langugages...
-AC_ARG_WITH(languages, [  --with-languages        set installed languages, default="de es et fr he it ja pl sv" ],
+AC_ARG_WITH(languages, [  --with-languages        set installed languages, default="de es et fr he it ja pl sv zh_TW" ],
        if test "x$withval" != xno; then
                LANGUAGES="$withval"
        fi,
-       LANGUAGES="de es et fr he it ja pl sv")
+       LANGUAGES="de es et fr he it ja pl sv zh_TW")
 AC_SUBST(LANGUAGES)
 
 dnl Default ConfigFilePerm
@@ -294,5 +294,5 @@ AC_SUBST(CUPS_MAX_COPIES)
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_MAX_COPIES, $CUPS_MAX_COPIES)
 
 dnl
-dnl End of "$Id: cups-defaults.m4 6431 2007-04-02 14:31:49Z mike $".
+dnl End of "$Id: cups-defaults.m4 6529 2007-05-08 19:48:20Z mike $".
 dnl
index 21c6ad782bd02d7e784c72f3f6b040d66e428cef..20e11cd0904134d425431dec7dc56f467c779088 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: language.c 6489 2007-04-30 17:55:15Z mike $"
+ * "$Id: language.c 6532 2007-05-09 18:54:23Z mike $"
  *
  *   I18N/language support for the Common UNIX Printing System (CUPS).
  *
@@ -351,7 +351,7 @@ cupsLangGet(const char *language)   /* I - Language or locale */
   * preference so we have to look it up this way...
   */
 
-  if (!language)
+  if (!language && (language = getenv("LANG")) == NULL)
     language = appleLangDefault();
 
 #else
@@ -1363,5 +1363,5 @@ cups_unquote(char       *d,               /* O - Unquoted string */
 
 
 /*
- * End of "$Id: language.c 6489 2007-04-30 17:55:15Z mike $".
+ * End of "$Id: language.c 6532 2007-05-09 18:54:23Z mike $".
  */
index 9664933e706946fa930835f6fc616c9da4379378..3657d87f9799ab3b312fc2bd74eb10a9c4d7c649 100644 (file)
@@ -29,3 +29,5 @@ Name[it]=Gestione stampa
 Comment[it]=Interfaccia web di CUPS
 Name[he]=נהל הדפסות
 Comment[he]=ממשק דפדפן של CUPS
+Name[zh_TW]=印表管理
+Comment[zh_TW]=CUPS 網頁介面
index 13b99d7ebc46985a42f9a8e9bd57952df6d56bbf..ee2d3397348abd6ced61df2ccd420591c340b894 100644 (file)
@@ -1,9 +1,9 @@
 #
-# "$Id: Makefile 6431 2007-04-02 14:31:49Z mike $"
+# "$Id: Makefile 6519 2007-05-08 01:55:27Z mike $"
 #
 #   Documentation makefile for the Common UNIX Printing System (CUPS).
 #
-#   Copyright 1997-2006 by Easy Software Products.
+#   Copyright 1997-2007 by Easy Software Products.
 #
 #   These coded instructions, statements, and computer programs are the
 #   property of Easy Software Products and are protected by Federal
@@ -38,9 +38,11 @@ WEBBUTTONS   =       \
                        images/button-accept-jobs.gif \
                        images/button-add-class.gif \
                        images/button-add-printer.gif \
+                       images/button-add-rss-subscription.gif \
                        images/button-add-this-printer.gif \
                        images/button-cancel-all-jobs.gif \
                        images/button-cancel-job.gif \
+                       images/button-cancel-subscription.gif \
                        images/button-change-settings.gif \
                        images/button-clean-print-heads.gif \
                        images/button-clear.gif \
@@ -51,6 +53,7 @@ WEBBUTTONS    =       \
                        images/button-export-samba.gif \
                        images/button-help.gif \
                        images/button-hold-job.gif \
+                       images/button-list-available-printers.gif \
                        images/button-manage-classes.gif \
                        images/button-manage-jobs.gif \
                        images/button-manage-printers.gif \
index be45bdd94c81bbb712367f888949adf51d560992..998699174367e440b2e839f3388198c1d319aec0 100644 (file)
@@ -1512,20 +1512,39 @@ CUPS-Get-PPDs request:
 
        <dt>"limit" (integer (1:MAX)):
 
-       <dd>The client OPTIONALLY supplies this attribute limiting the number of
-       PPDs that are returned.
+       <dd>The client OPTIONALLY supplies this attribute limiting the number of PPDs that are returned.
 
        <dt>"ppd-make" (text(127)):
 
-       <dd>The client OPTIONALLY supplies a printer manufacturer to select
-       which PPDs are returned.
+       <dd>The client OPTIONALLY supplies a printer manufacturer to select which PPDs are returned.
+
+       <dt>"ppd-make-and-model" (text(127)):<span class='info'>CUPS 1.3</span>
+
+       <dd>The client OPTIONALLY supplies a make and model to select which PPDs are returned.
+
+       <dt>"ppd-model-number" (integer):<span class='info'>CUPS 1.3</span>
+
+       <dd>The client OPTIONALLY supplies a model number to select which PPDs are returned.
+
+       <dt>"ppd-natural-language" (naturalLanguage):<span class='info'>CUPS 1.3</span>
+
+       <dd>The client OPTIONALLY supplies a language to select which PPDs are returned.
+
+       <dt>"ppd-product" (text(127)):<span class='info'>CUPS 1.3</span>
+
+       <dd>The client OPTIONALLY supplies a PostScript product string to select which PPDs are returned.
+
+       <dt>"ppd-psversion" (text(127)):<span class='info'>CUPS 1.3</span>
+
+       <dd>The client OPTIONALLY supplies a PostScript version string to select which PPDs are returned.
+
+       <dt>"ppd-type" (type1 keyword):<span class='info'>CUPS 1.3</span>
+
+       <dd>The client OPTIONALLY supplies a driver type to select which PPDs are returned.
 
        <dt>"requested-attributes" (1setOf keyword) :
 
-       <dd>The client OPTIONALLY supplies a set of attribute names and/or
-       attribute group names in whose values the requester is interested. If
-       the client omits this attribute, the server responds as if this
-       attribute had been supplied with a value of 'all'.
+       <dd>The client OPTIONALLY supplies a set of attribute names and/or attribute group names in whose values the requester is interested. If the client omits this attribute, the server responds as if this attribute had been supplied with a value of 'all'. Specify "ppd-make" to get a list of manufacturers.
 
 </dl>
 
@@ -2135,11 +2154,13 @@ name of the PPD file (the NickName attribute in the PPD file). If the
 make and model is not specified in the PPD file then the ModelName or
 ShortNickName attributes are used instead.
 
+<h4><a name="ppd-model-number">ppd-model-number (integer)</a><span class="info">CUPS 1.3</span></h4>
+
+<p>The ppd-model-number attribute provides the <tt>cupsModelNumber</tt> value from the PPD file.
+
 <h4><a name="ppd-name">ppd-name (name(255))</a></h4>
 
-<p>The ppd-name attribute specifies the PPD filename on the server
-relative to the model directory. The forward slash (/) is used to
-delineate directories.
+<p>The ppd-name attribute specifies either the PPD filename on the server relative to the model directory or a URI that maps to a specific driver interface in the driver directory. The forward slash (/) is used to delineate directories.
 
 <h4><a name="ppd-natural-language">ppd-natural-language (1setOf naturalLanguage)</a></h4>
 
@@ -2155,6 +2176,24 @@ language is unknown or undefined then "en" (English) is assumed.
 
 <p>The ppd-product attribute specifies the PSVersion attribute values in the PPD file.
 
+<h4><a name="ppd-type">ppd-type (type1 keyword)</a><span class="info">CUPS 1.3</span></h4>
+
+<p>The ppd-type attribute specifies the type of driver described by the PPD file:</p>
+
+<ul>
+
+       <li><tt>fax</tt> - A facsimile or multi-function device</li>
+
+       <li><tt>pdf</tt> - A PDF printer</li>
+
+       <li><tt>postscript</tt> - A PostScript printer (no filters)</li>
+
+       <li><tt>raster</tt> - A CUPS raster driver</li>
+
+       <li><tt>unknown</tt> - An unknown or hybrid driver</li>
+
+</ul>
+
 
 <h3 class='title'><a name='PRINTER_ATTRIBUTES'>Printer Attributes</a></h3>
 
index cf02272bc067cad6af3f8cb8b7b9ee24c682a53e..46ef77506802b83d8e6e6d1793a936a0828a7459 100644 (file)
@@ -8,7 +8,7 @@
 </head>
 <body>
 <!--
-  "$Id: spec-ppd.html 6457 2007-04-17 18:40:55Z mike $"
+  "$Id: spec-ppd.html 6534 2007-05-16 17:51:03Z mike $"
 
   CUPS PPD extensions specification for the Common UNIX Printing System (CUPS).
 
@@ -109,6 +109,18 @@ default is <tt>true</tt> when <tt>cupsFlipDuplex</tt>  is <tt>true</tt> and <tt>
 
 <p>Also see the related <tt>cupsFlipDuplex</tt> attribute.</p>
 
+<h3>APRemoteQueueID</h3>
+
+<p class='summary'>*APRemoteQueueID: "string"</p>
+
+<p>This string attribute notifies the scheduler that this PPD is for a remote CUPS printer, typically shared via Bonjour.</p>
+
+<p>Example:</p>
+
+<pre class='command'>
+*APRemoteQueueID: "myprinter"
+</pre>
+
 <h3>cupsEvenDuplex</h3>
 
 <p class='summary'>*cupsEvenDuplex: boolean</p>
@@ -124,6 +136,18 @@ printing is selected. The default value is <code>false</code>.</p>
 *cupsEvenDuplex: true
 </pre>
 
+<h3>cupsFax</h3>
+
+<p class='summary'>*cupsFax: boolean</p>
+
+<p>This boolean attribute specifies whether the PPD defines a facsimile device. The default is <tt>false</tt>.</p>
+
+<p>Examples:</p>
+
+<pre class='command'>
+*cupsFax: true
+</pre>
+
 <h3>cupsFilter</h3>
 
 <p class='summary'>*cupsFilter: "source/type cost program"</p>
diff --git a/doc/images/button-list-available-printers.gif b/doc/images/button-list-available-printers.gif
new file mode 100644 (file)
index 0000000..e9a18fa
Binary files /dev/null and b/doc/images/button-list-available-printers.gif differ
diff --git a/doc/zh_TW/images/button-accept-jobs.gif b/doc/zh_TW/images/button-accept-jobs.gif
new file mode 100644 (file)
index 0000000..f5c3e2f
Binary files /dev/null and b/doc/zh_TW/images/button-accept-jobs.gif differ
diff --git a/doc/zh_TW/images/button-add-class.gif b/doc/zh_TW/images/button-add-class.gif
new file mode 100644 (file)
index 0000000..2c91089
Binary files /dev/null and b/doc/zh_TW/images/button-add-class.gif differ
diff --git a/doc/zh_TW/images/button-add-printer.gif b/doc/zh_TW/images/button-add-printer.gif
new file mode 100644 (file)
index 0000000..43b9bf3
Binary files /dev/null and b/doc/zh_TW/images/button-add-printer.gif differ
diff --git a/doc/zh_TW/images/button-add-this-printer.gif b/doc/zh_TW/images/button-add-this-printer.gif
new file mode 100644 (file)
index 0000000..98ca9a1
Binary files /dev/null and b/doc/zh_TW/images/button-add-this-printer.gif differ
diff --git a/doc/zh_TW/images/button-cancel-all-jobs.gif b/doc/zh_TW/images/button-cancel-all-jobs.gif
new file mode 100644 (file)
index 0000000..33445a8
Binary files /dev/null and b/doc/zh_TW/images/button-cancel-all-jobs.gif differ
diff --git a/doc/zh_TW/images/button-cancel-job.gif b/doc/zh_TW/images/button-cancel-job.gif
new file mode 100644 (file)
index 0000000..d588cab
Binary files /dev/null and b/doc/zh_TW/images/button-cancel-job.gif differ
diff --git a/doc/zh_TW/images/button-change-settings.gif b/doc/zh_TW/images/button-change-settings.gif
new file mode 100644 (file)
index 0000000..9071f67
Binary files /dev/null and b/doc/zh_TW/images/button-change-settings.gif differ
diff --git a/doc/zh_TW/images/button-clean-print-heads.gif b/doc/zh_TW/images/button-clean-print-heads.gif
new file mode 100644 (file)
index 0000000..821bea2
Binary files /dev/null and b/doc/zh_TW/images/button-clean-print-heads.gif differ
diff --git a/doc/zh_TW/images/button-clear.gif b/doc/zh_TW/images/button-clear.gif
new file mode 100644 (file)
index 0000000..8fa8102
Binary files /dev/null and b/doc/zh_TW/images/button-clear.gif differ
diff --git a/doc/zh_TW/images/button-continue.gif b/doc/zh_TW/images/button-continue.gif
new file mode 100644 (file)
index 0000000..c6b943f
Binary files /dev/null and b/doc/zh_TW/images/button-continue.gif differ
diff --git a/doc/zh_TW/images/button-delete-class.gif b/doc/zh_TW/images/button-delete-class.gif
new file mode 100644 (file)
index 0000000..830313c
Binary files /dev/null and b/doc/zh_TW/images/button-delete-class.gif differ
diff --git a/doc/zh_TW/images/button-delete-printer.gif b/doc/zh_TW/images/button-delete-printer.gif
new file mode 100644 (file)
index 0000000..cecaf34
Binary files /dev/null and b/doc/zh_TW/images/button-delete-printer.gif differ
diff --git a/doc/zh_TW/images/button-edit-configuration-file.gif b/doc/zh_TW/images/button-edit-configuration-file.gif
new file mode 100644 (file)
index 0000000..610f8d4
Binary files /dev/null and b/doc/zh_TW/images/button-edit-configuration-file.gif differ
diff --git a/doc/zh_TW/images/button-export-samba.gif b/doc/zh_TW/images/button-export-samba.gif
new file mode 100644 (file)
index 0000000..1572bcb
Binary files /dev/null and b/doc/zh_TW/images/button-export-samba.gif differ
diff --git a/doc/zh_TW/images/button-help.gif b/doc/zh_TW/images/button-help.gif
new file mode 100644 (file)
index 0000000..bfb0b75
Binary files /dev/null and b/doc/zh_TW/images/button-help.gif differ
diff --git a/doc/zh_TW/images/button-hold-job.gif b/doc/zh_TW/images/button-hold-job.gif
new file mode 100644 (file)
index 0000000..2e1e87a
Binary files /dev/null and b/doc/zh_TW/images/button-hold-job.gif differ
diff --git a/doc/zh_TW/images/button-manage-classes.gif b/doc/zh_TW/images/button-manage-classes.gif
new file mode 100644 (file)
index 0000000..a41bc71
Binary files /dev/null and b/doc/zh_TW/images/button-manage-classes.gif differ
diff --git a/doc/zh_TW/images/button-manage-jobs.gif b/doc/zh_TW/images/button-manage-jobs.gif
new file mode 100644 (file)
index 0000000..71fed91
Binary files /dev/null and b/doc/zh_TW/images/button-manage-jobs.gif differ
diff --git a/doc/zh_TW/images/button-manage-printers.gif b/doc/zh_TW/images/button-manage-printers.gif
new file mode 100644 (file)
index 0000000..de3042d
Binary files /dev/null and b/doc/zh_TW/images/button-manage-printers.gif differ
diff --git a/doc/zh_TW/images/button-manage-server.gif b/doc/zh_TW/images/button-manage-server.gif
new file mode 100644 (file)
index 0000000..6d54dbe
Binary files /dev/null and b/doc/zh_TW/images/button-manage-server.gif differ
diff --git a/doc/zh_TW/images/button-modify-class.gif b/doc/zh_TW/images/button-modify-class.gif
new file mode 100644 (file)
index 0000000..ce8c339
Binary files /dev/null and b/doc/zh_TW/images/button-modify-class.gif differ
diff --git a/doc/zh_TW/images/button-modify-printer.gif b/doc/zh_TW/images/button-modify-printer.gif
new file mode 100644 (file)
index 0000000..91cb2b1
Binary files /dev/null and b/doc/zh_TW/images/button-modify-printer.gif differ
diff --git a/doc/zh_TW/images/button-move-job.gif b/doc/zh_TW/images/button-move-job.gif
new file mode 100644 (file)
index 0000000..e1b63d5
Binary files /dev/null and b/doc/zh_TW/images/button-move-job.gif differ
diff --git a/doc/zh_TW/images/button-move-jobs.gif b/doc/zh_TW/images/button-move-jobs.gif
new file mode 100644 (file)
index 0000000..0434bc6
Binary files /dev/null and b/doc/zh_TW/images/button-move-jobs.gif differ
diff --git a/doc/zh_TW/images/button-print-self-test-page.gif b/doc/zh_TW/images/button-print-self-test-page.gif
new file mode 100644 (file)
index 0000000..5ebfb42
Binary files /dev/null and b/doc/zh_TW/images/button-print-self-test-page.gif differ
diff --git a/doc/zh_TW/images/button-print-test-page.gif b/doc/zh_TW/images/button-print-test-page.gif
new file mode 100644 (file)
index 0000000..f5d0a70
Binary files /dev/null and b/doc/zh_TW/images/button-print-test-page.gif differ
diff --git a/doc/zh_TW/images/button-publish-printer.gif b/doc/zh_TW/images/button-publish-printer.gif
new file mode 100644 (file)
index 0000000..39ed520
Binary files /dev/null and b/doc/zh_TW/images/button-publish-printer.gif differ
diff --git a/doc/zh_TW/images/button-reject-jobs.gif b/doc/zh_TW/images/button-reject-jobs.gif
new file mode 100644 (file)
index 0000000..1520d49
Binary files /dev/null and b/doc/zh_TW/images/button-reject-jobs.gif differ
diff --git a/doc/zh_TW/images/button-release-job.gif b/doc/zh_TW/images/button-release-job.gif
new file mode 100644 (file)
index 0000000..c8fbece
Binary files /dev/null and b/doc/zh_TW/images/button-release-job.gif differ
diff --git a/doc/zh_TW/images/button-restart-job.gif b/doc/zh_TW/images/button-restart-job.gif
new file mode 100644 (file)
index 0000000..7b39b22
Binary files /dev/null and b/doc/zh_TW/images/button-restart-job.gif differ
diff --git a/doc/zh_TW/images/button-save-changes.gif b/doc/zh_TW/images/button-save-changes.gif
new file mode 100644 (file)
index 0000000..cb870d7
Binary files /dev/null and b/doc/zh_TW/images/button-save-changes.gif differ
diff --git a/doc/zh_TW/images/button-search.gif b/doc/zh_TW/images/button-search.gif
new file mode 100644 (file)
index 0000000..7f2c4ea
Binary files /dev/null and b/doc/zh_TW/images/button-search.gif differ
diff --git a/doc/zh_TW/images/button-set-allowed-users.gif b/doc/zh_TW/images/button-set-allowed-users.gif
new file mode 100644 (file)
index 0000000..09efc50
Binary files /dev/null and b/doc/zh_TW/images/button-set-allowed-users.gif differ
diff --git a/doc/zh_TW/images/button-set-as-default.gif b/doc/zh_TW/images/button-set-as-default.gif
new file mode 100644 (file)
index 0000000..0ccecfa
Binary files /dev/null and b/doc/zh_TW/images/button-set-as-default.gif differ
diff --git a/doc/zh_TW/images/button-set-printer-options.gif b/doc/zh_TW/images/button-set-printer-options.gif
new file mode 100644 (file)
index 0000000..cbd25f3
Binary files /dev/null and b/doc/zh_TW/images/button-set-printer-options.gif differ
diff --git a/doc/zh_TW/images/button-show-active.gif b/doc/zh_TW/images/button-show-active.gif
new file mode 100644 (file)
index 0000000..448df4b
Binary files /dev/null and b/doc/zh_TW/images/button-show-active.gif differ
diff --git a/doc/zh_TW/images/button-show-all.gif b/doc/zh_TW/images/button-show-all.gif
new file mode 100644 (file)
index 0000000..a41159b
Binary files /dev/null and b/doc/zh_TW/images/button-show-all.gif differ
diff --git a/doc/zh_TW/images/button-show-completed.gif b/doc/zh_TW/images/button-show-completed.gif
new file mode 100644 (file)
index 0000000..8f01cd3
Binary files /dev/null and b/doc/zh_TW/images/button-show-completed.gif differ
diff --git a/doc/zh_TW/images/button-show-next.gif b/doc/zh_TW/images/button-show-next.gif
new file mode 100644 (file)
index 0000000..3021bea
Binary files /dev/null and b/doc/zh_TW/images/button-show-next.gif differ
diff --git a/doc/zh_TW/images/button-show-previous.gif b/doc/zh_TW/images/button-show-previous.gif
new file mode 100644 (file)
index 0000000..afa5975
Binary files /dev/null and b/doc/zh_TW/images/button-show-previous.gif differ
diff --git a/doc/zh_TW/images/button-sort-ascending.gif b/doc/zh_TW/images/button-sort-ascending.gif
new file mode 100644 (file)
index 0000000..aa9a704
Binary files /dev/null and b/doc/zh_TW/images/button-sort-ascending.gif differ
diff --git a/doc/zh_TW/images/button-sort-descending.gif b/doc/zh_TW/images/button-sort-descending.gif
new file mode 100644 (file)
index 0000000..8634f03
Binary files /dev/null and b/doc/zh_TW/images/button-sort-descending.gif differ
diff --git a/doc/zh_TW/images/button-start-class.gif b/doc/zh_TW/images/button-start-class.gif
new file mode 100644 (file)
index 0000000..21decdc
Binary files /dev/null and b/doc/zh_TW/images/button-start-class.gif differ
diff --git a/doc/zh_TW/images/button-start-printer.gif b/doc/zh_TW/images/button-start-printer.gif
new file mode 100644 (file)
index 0000000..0118d79
Binary files /dev/null and b/doc/zh_TW/images/button-start-printer.gif differ
diff --git a/doc/zh_TW/images/button-stop-class.gif b/doc/zh_TW/images/button-stop-class.gif
new file mode 100644 (file)
index 0000000..4f1aafb
Binary files /dev/null and b/doc/zh_TW/images/button-stop-class.gif differ
diff --git a/doc/zh_TW/images/button-stop-printer.gif b/doc/zh_TW/images/button-stop-printer.gif
new file mode 100644 (file)
index 0000000..22fd1fa
Binary files /dev/null and b/doc/zh_TW/images/button-stop-printer.gif differ
diff --git a/doc/zh_TW/images/button-unpublish-printer.gif b/doc/zh_TW/images/button-unpublish-printer.gif
new file mode 100644 (file)
index 0000000..12d4c62
Binary files /dev/null and b/doc/zh_TW/images/button-unpublish-printer.gif differ
diff --git a/doc/zh_TW/images/button-use-default-config.gif b/doc/zh_TW/images/button-use-default-config.gif
new file mode 100644 (file)
index 0000000..835d714
Binary files /dev/null and b/doc/zh_TW/images/button-use-default-config.gif differ
diff --git a/doc/zh_TW/images/button-view-access-log.gif b/doc/zh_TW/images/button-view-access-log.gif
new file mode 100644 (file)
index 0000000..ce41e85
Binary files /dev/null and b/doc/zh_TW/images/button-view-access-log.gif differ
diff --git a/doc/zh_TW/images/button-view-error-log.gif b/doc/zh_TW/images/button-view-error-log.gif
new file mode 100644 (file)
index 0000000..92128f1
Binary files /dev/null and b/doc/zh_TW/images/button-view-error-log.gif differ
diff --git a/doc/zh_TW/images/button-view-page-log.gif b/doc/zh_TW/images/button-view-page-log.gif
new file mode 100644 (file)
index 0000000..4efe78e
Binary files /dev/null and b/doc/zh_TW/images/button-view-page-log.gif differ
diff --git a/doc/zh_TW/images/button-view-printable-version.gif b/doc/zh_TW/images/button-view-printable-version.gif
new file mode 100644 (file)
index 0000000..b558666
Binary files /dev/null and b/doc/zh_TW/images/button-view-printable-version.gif differ
diff --git a/doc/zh_TW/index.html.in b/doc/zh_TW/index.html.in
new file mode 100644 (file)
index 0000000..213eea4
--- /dev/null
@@ -0,0 +1,137 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>首頁 - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
+       <LINK REL="SHORTCUT ICON" HREF="/favicon.ico" TYPE="image/x-icon">
+</HEAD>
+<BODY>
+<TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="Common UNIX Printing System @CUPS_VERSION@">
+<TR CLASS="header">
+<TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
+<TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
+<TD WIDTH="100%" HEIGHT="60"><H1>Common UNIX Printing System @CUPS_VERSION@@CUPS_REVISION@</H1></TD>
+<TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
+SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+<TR CLASS="header"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+
+<A CLASS="sel" HREF="/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;首頁&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/admin/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;管理&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/classes/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;分類&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/help/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;文件/求助&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/jobs/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;工作&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="unsel" HREF="/printers/"><IMG SRC="/images/tab-left.gif" WIDTH="4"
+HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;印表機&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+</TD></TR>
+<TR CLASS="page">
+<TD WIDTH="15">&nbsp;</TD>
+<TD COLSPAN="2" WIDTH="100%" VALIGN="TOP" CLASS="page">
+
+<H2 CLASS="title">歡迎!</H2>
+
+<P>此處的網頁讓您監看您的印表機和工作,以及
+進行系統管理任務。按下上方任何的分頁頁標或是
+下方的按鈕,以執行某個作業。</P>
+
+<P>
+<A HREF="/help/"><IMG SRC="/images/button-help.gif" CLASS="button" ALT="求助"></A>
+<A HREF="/admin?OP=add-class"><IMG SRC="/images/button-add-class.gif" CLASS="button" ALT="增加分類"></A>
+<A HREF="/admin?OP=add-printer"><IMG SRC="/images/button-add-printer.gif" CLASS="button" ALT="增加印表機"></A>
+<A HREF="/classes"><IMG SRC="/images/button-manage-classes.gif" CLASS="button" ALT="管理分類"></A>
+<A HREF="/jobs"><IMG SRC="/images/button-manage-jobs.gif" CLASS="button" ALT="管理工作"></A>
+<A HREF="/printers"><IMG SRC="/images/button-manage-printers.gif" CLASS="button" ALT="管理印表機"></A>
+<A HREF="/admin"><IMG SRC="/images/button-manage-server.gif" CLASS="button" ALT="管理伺服器"></A>
+</P>
+
+<P><I>如果向您要求使用者名稱與密碼,請輸入
+您的使用者名稱與密碼,或是 "root" 的使用者名稱與密碼。</I></P>
+
+<H2 CLASS="title">關於 CUPS</H2>
+
+<P>
+<IMG SRC="/images/happy.gif" ALIGN="LEFT" WIDTH="196" HEIGHT="144"
+STYLE="padding-right: 10px;" ALT="快樂的電腦與印表機">
+
+<A HREF="http://www.easysw.com/"><IMG SRC="/images/esp-logo.gif"
+ALIGN="RIGHT" WIDTH="110" HEIGHT="68" BORDER="0"
+STYLE="padding-left: 10px; padding-bottom: 10px;"
+ALT="Easy Software Products"></A>
+
+CUPS 提供以 UNIX<SUP>&reg;</SUP> 為基礎的作業系統 
+一層具有可攜性的列印介面。它是由 <A HREF="http://www.easysw.com">Easy Software
+Products</a> 為了推動一個標準的列印解決方案所開發與維護。CUPS 是目前用於
+MacOS<SUP>&reg;</SUP> X 與大部份 Linux<SUP>&reg;</SUP> 發行版本的標準列印系統。</P>
+
+<P>CUPS 使用 <A HREF="http://www.pwg.org/ipp/"
+TARGET="_blank"> Internet Printing Protocol ("IPP")</A> 做為
+管理列印工作與佇列的基礎,並且加入瀏覽網路印表機和基於
+PostScript Printer Description ("PPD") 的列印選項,
+以支援真實世界中的列印。<BR CLEAR="ALL"></P>
+
+<H2 CLASS="title">印表機驅動程式與協助</H2>
+
+<P>造訪 CUPS 的官方網站以獲得印表機驅動程式與協助:</P>
+
+<PRE>
+    <A HREF="http://www.cups.org/" TARGET="_blank">www.cups.org</A>
+</PRE>
+
+<P>CUPS 的商業支援與進階版本名為 <A
+HREF="http://www.easysw.com/printpro/">ESP Print Pro</A> 是提供自:</P>
+
+<PRE>
+    <A HREF="http://www.easysw.com/" TARGET="_blank">www.easysw.com</A>
+</PRE>
+
+</TD>
+<TD WIDTH="15">&nbsp;</TD>
+</TR>
+<TR CLASS="header">
+<TD VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-left.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+<TD COLSPAN="2" WIDTH="100%" STYLE="padding: 5;">
+
+<P><SMALL>The Common UNIX Printing System, CUPS, and the CUPS logo are the
+trademark property of <A HREF="http://www.easysw.com">Easy Software
+Products</A>. CUPS is copyright 1997-2007 by Easy Software Products,
+All Rights Reserved.</SMALL></P>
+
+</TD>
+
+<TD ALIGN="RIGHT" VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-right.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/init/PrintingServices.launchd b/init/PrintingServices.launchd
new file mode 100755 (executable)
index 0000000..be9992a
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+##
+# PrintingServices - a.k.a. CUPS
+##
+
+. /etc/rc.common
+
+StartService ()
+{
+       ConsoleMessage "Starting printing services"
+       launchctl start org.cups.cupsd
+}
+
+StopService ()
+{
+       ConsoleMessage "Stopping printing services"
+       launchctl stop org.cups.cupsd
+}
+
+RestartService ()
+{
+       ConsoleMessage "Restarting printing services"
+       launchctl stop org.cups.cupsd
+       launchctl start org.cups.cupsd
+}
+
+RunService "$1"
diff --git a/locale/cups_zh_TW.po b/locale/cups_zh_TW.po
new file mode 100644 (file)
index 0000000..b6aabcf
--- /dev/null
@@ -0,0 +1,2924 @@
+#
+# "$Id$"
+#
+#   Message catalog template for the Common UNIX Printing System (CUPS).
+#
+#   Copyright 2005-2006 by Easy Software Products.
+#
+#   These coded instructions, statements, and computer programs are the
+#   property of Easy Software Products 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 missing or damaged please contact Easy Software Products
+#   at:
+#
+#       Attn: CUPS Licensing Information
+#       Easy Software Products
+#       44141 Airport View Drive, Suite 204
+#       Hollywood, Maryland 20636 USA
+#
+#       Voice: (301) 373-9600
+#       EMail: cups-info@cups.org
+#         WWW: http://www.cups.org
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: cups 1.2.8\n"
+"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
+"POT-Creation-Date: 2007-01-23 09:19-0500\n"
+"PO-Revision-Date: 2007-02-17 00:00+0800\n"
+"Last-Translator: Wei-Lun Chao <chaoweilun@gmail.com>\n"
+"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgid "Options Installed"
+msgstr "已安裝選項"
+
+msgid "Class"
+msgstr "類別"
+
+msgid "Printer"
+msgstr "印表機"
+
+msgid "Extra"
+msgstr "其他"
+
+msgid "General"
+msgstr "一般"
+
+msgid "Media Size"
+msgstr "媒體大小"
+
+msgid "Media Type"
+msgstr "媒體類型"
+
+msgid "Media Source"
+msgstr "媒體來源"
+
+msgid "Output Mode"
+msgstr "輸出模式"
+
+msgid "Resolution"
+msgstr "解析度"
+
+msgid "Variable"
+msgstr "變數"
+
+msgid "Yes"
+msgstr "是"
+
+msgid "No"
+msgstr "無"
+
+msgid "Auto"
+msgstr "自動"
+
+msgid ""
+"Enter your username and password or the root username and password to access "
+"this page."
+msgstr "輸入您的使用者名稱和密碼,或是系統管理者名稱和密碼,以存取此頁面。"
+
+msgid "You must use a https: URL to access this page."
+msgstr "您必須使用 https:URL 以存取此頁面。"
+
+#, c-format
+msgid "Bad request version number %d.%d!"
+msgstr "不當的請求版本號碼 %d.%d!"
+
+msgid "No attributes in request!"
+msgstr "在請求中沒有任何屬性!"
+
+#, c-format
+msgid "Attribute groups are out of order (%x < %x)!"
+msgstr "屬性群組超出順序 (%x < %x)!"
+
+msgid "Missing required attributes!"
+msgstr "缺少必要的屬性!"
+
+#, c-format
+msgid "%s not supported!"
+msgstr "不支援 %s!"
+
+msgid "The printer or class was not found."
+msgstr "找不到印表機或類別。"
+
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
+msgstr "printer-uri 必須是「ipp://主機名稱/classes/類別名稱」的形式。"
+
+#, c-format
+msgid "The printer-uri \"%s\" contains invalid characters."
+msgstr "printer-uri「%s」內含無效的字元。"
+
+#, c-format
+msgid "A printer named \"%s\" already exists!"
+msgstr "名為的印表機「%s」已經存在!"
+
+#, c-format
+msgid "Attempt to set %s printer-state to bad value %d!"
+msgstr "試圖去設定 %s printer-state 為不當的值 %d!"
+
+#, c-format
+msgid "add_class: Unknown printer-op-policy \"%s\"."
+msgstr "add_class:不明的 printer-op-policy「%s」。"
+
+#, c-format
+msgid "add_class: Unknown printer-error-policy \"%s\"."
+msgstr "add_class:不明的 printer-error-policy「%s」。"
+
+msgid "Unable to allocate memory for file types!"
+msgstr "無法配置用於檔案類型的記憶體!"
+
+#, c-format
+msgid "Character set \"%s\" not supported!"
+msgstr "不支援字元集「%s」!"
+
+#, c-format
+msgid "Language \"%s\" not supported!"
+msgstr "不支援語言「%s」!"
+
+#, c-format
+msgid "The notify-user-data value is too large (%d > 63 octets)!"
+msgstr "notify-user-data 值太大 (%d > 63 個八位元組)!"
+
+msgid ""
+"The notify-lease-duration attribute cannot be used with job subscriptions."
+msgstr "notify-lease-duration 屬性無法與工作預定一起使用。"
+
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
+msgstr "printer-uri 必須是「ipp://主機名稱/printers/印表機名稱」的形式。"
+
+#, c-format
+msgid "A class named \"%s\" already exists!"
+msgstr "名為「%s」的類別已經存在!"
+
+#, c-format
+msgid ""
+"File device URIs have been disabled! To enable, see the FileDevice directive "
+"in \"%s/cupsd.conf\"."
+msgstr ""
+"檔案裝置 URIs 已停用!要啟用的話,參看「%s/cupsd.conf」中的 FileDevice 指令。"
+
+#, c-format
+msgid "Bad device-uri \"%s\"!"
+msgstr "不當的 device-uri「%s」!"
+
+#, c-format
+msgid "Bad port-monitor \"%s\"!"
+msgstr "不當的 port-monitor「%s」!"
+
+#, c-format
+msgid "Bad printer-state value %d!"
+msgstr "不當的 printer-state 值 %d!"
+
+#, c-format
+msgid "Unknown printer-op-policy \"%s\"."
+msgstr "不明的 printer-op-policy「%s」。"
+
+#, c-format
+msgid "Unknown printer-error-policy \"%s\"."
+msgstr "不明的 printer-error-policy「%s」。"
+
+#, c-format
+msgid "Unable to copy interface script - %s!"
+msgstr "無法複製介面命令稿 - %s!"
+
+#, c-format
+msgid "Unable to copy PPD file - %s!"
+msgstr "無法複製 PPD 檔案 - %s!"
+
+msgid "Unable to copy PPD file!"
+msgstr "無法複製 PPD 檔案!"
+
+msgid "Got a printer-uri attribute but no job-id!"
+msgstr "得到 printer-uri 屬性但是沒有 job-id!"
+
+#, c-format
+msgid "Bad job-uri attribute \"%s\"!"
+msgstr "不當的 job-uri 屬性「%s」!"
+
+#, c-format
+msgid "Job #%d doesn't exist!"
+msgstr "工作 #%d 不存在!"
+
+#, c-format
+msgid "Job #%d is not held for authentication!"
+msgstr "工作 #%d 並未被延遲以便驗證!"
+
+#, c-format
+msgid "You are not authorized to authenticate job #%d owned by \"%s\"!"
+msgstr "您未被授權去驗證由「%2$s」所擁有的工作 #%1$d!"
+
+msgid "The printer-uri attribute is required!"
+msgstr "printer-uri 屬性為必要的!"
+
+msgid "Missing requesting-user-name attribute!"
+msgstr "缺少 requesting-user-name 屬性!"
+
+#, c-format
+msgid "The printer-uri \"%s\" is not valid."
+msgstr "printer-uri「%s」並非有效。"
+
+#, c-format
+msgid "No active jobs on %s!"
+msgstr "於 %s 無作用中工作!"
+
+#, c-format
+msgid "You are not authorized to delete job #%d owned by \"%s\"!"
+msgstr "您未被授權去刪除由「%2$s」所擁有的工作 #%1$d!"
+
+#, c-format
+msgid "Job #%d is already %s - can't cancel."
+msgstr "工作 #%d 已經 %s - 無法取消。"
+
+msgid "The printer or class is not shared!"
+msgstr "印表機或類別並未共享!"
+
+#, c-format
+msgid "Destination \"%s\" is not accepting jobs."
+msgstr "目的印表機「%s」並未接受工作。"
+
+#, c-format
+msgid "Bad copies value %d."
+msgstr "不當的份數值 %d。"
+
+#, c-format
+msgid "Bad page-ranges values %d-%d."
+msgstr "不當的 page-ranges 值 %d-%d。"
+
+msgid "Too many active jobs."
+msgstr "太多作用中工作。"
+
+msgid "Quota limit reached."
+msgstr "達到配額限制。"
+
+#, c-format
+msgid "Unable to add job for destination \"%s\"!"
+msgstr "無法於目的印表機「%s」加入工作!"
+
+msgid "No subscription attributes in request!"
+msgstr "在請求中沒有訂用屬性!"
+
+msgid "notify-events not specified!"
+msgstr "notify-events 尚未指定!"
+
+#, c-format
+msgid "Job %d not found!"
+msgstr "找不到工作 %d!"
+
+msgid "No default printer"
+msgstr "無預設印表機"
+
+msgid "cups-deviced failed to execute."
+msgstr "cups-deviced 執行失敗。"
+
+msgid "cups-driverd failed to execute."
+msgstr "cups-driverd 執行失敗。"
+
+msgid "No destinations added."
+msgstr "無目的印表機加入。"
+
+#, c-format
+msgid "notify-subscription-id %d no good!"
+msgstr "notify-subscription-id %d 不良!"
+
+#, c-format
+msgid "Job #%s does not exist!"
+msgstr "工作 #%s 不存在!"
+
+#, c-format
+msgid "Job #%d does not exist!"
+msgstr "工作 #%d 不存在!"
+
+msgid "No subscriptions found."
+msgstr "找不到訂用記錄。"
+
+#, c-format
+msgid "Not authorized to hold job #%d owned by \"%s\"!"
+msgstr "未被授權暫停由「%2$s」所擁有的工作 #%1$d!"
+
+#, c-format
+msgid "Job #%d is finished and cannot be altered!"
+msgstr "工作 #%d 已完成而無法改變!"
+
+#, c-format
+msgid "You are not authorized to move job #%d owned by \"%s\"!"
+msgstr "您未被授權移動由「%2$s」所擁有的工作 #%1$d!"
+
+msgid "job-printer-uri attribute missing!"
+msgstr "缺少 job-printer-uri 屬性!"
+
+#, c-format
+msgid "Unsupported compression \"%s\"!"
+msgstr "不支援的壓縮「%s」!"
+
+msgid "No file!?!"
+msgstr "沒有檔案!?!"
+
+#, c-format
+msgid "Could not scan type \"%s\"!"
+msgstr "無法掃描型態「%s」!"
+
+#, c-format
+msgid "Unsupported format '%s/%s'!"
+msgstr "不支援的格式「%s/%s」!"
+
+msgid "Printer not shared!"
+msgstr "印表機未共享!"
+
+#, c-format
+msgid "Too many jobs - %d jobs, max jobs is %d."
+msgstr "太多工作 - %d 項工作,最大工作數為 %d。"
+
+#, c-format
+msgid "Job #%d is not held!"
+msgstr "工作 #%d 並未被延遲!"
+
+#, c-format
+msgid "You are not authorized to release job id %d owned by \"%s\"!"
+msgstr "您未被授權釋出由「%2$s」所擁有的工作識別號 %1$d!"
+
+#, c-format
+msgid "Job #%d is not complete!"
+msgstr "工作 #%d 並未完成!"
+
+#, c-format
+msgid "Job #%d cannot be restarted - no files!"
+msgstr "工作 #%d 無法重新啟動 - 沒有檔案!"
+
+#, c-format
+msgid "You are not authorized to restart job id %d owned by \"%s\"!"
+msgstr "您未被授權重新啟動由「%2$s」所擁有的工作識別號 %1$d!"
+
+#, c-format
+msgid "You are not authorized to send document for job #%d owned by \"%s\"!"
+msgstr "您未被授權發送文件給「%2$s」所擁有的工作 #%1$d!"
+
+#, c-format
+msgid "Bad document-format \"%s\"!"
+msgstr "不當的文件格式「%s」!"
+
+#, c-format
+msgid "You are not authorized to alter job id %d owned by \"%s\"!"
+msgstr "您未被授權改變由「%2$s」所擁有的工作識別號 #%1$d!"
+
+#, c-format
+msgid "%s cannot be changed."
+msgstr "%s 無法變更。"
+
+msgid "Bad job-priority value!"
+msgstr "不當的工作優先值!"
+
+msgid "Job is completed and cannot be changed."
+msgstr "工作已完成而無法變更。"
+
+msgid "Bad job-state value!"
+msgstr "不當的工作狀態值!"
+
+msgid "Job state cannot be changed."
+msgstr "工作狀態無法變更。"
+
+#, c-format
+msgid "Unsupported compression attribute %s!"
+msgstr "不支援的壓縮屬性 %s!"
+
+#, c-format
+msgid "Unsupported format \"%s\"!"
+msgstr "不支援的格式「%s」!"
+
+#, c-format
+msgid "%s is not implemented by the CUPS version of lpc.\n"
+msgstr "%s 並未由 lpc 的 CUPS 版本所實作。\n"
+
+msgid ""
+"Commands may be abbreviated.  Commands are:\n"
+"\n"
+"exit    help    quit    status  ?\n"
+msgstr ""
+"命令可以為縮寫。 命令是:\n"
+"\n"
+"exit    help    quit    status  ?\n"
+
+msgid "help\t\tget help on commands\n"
+msgstr "help\t\t取得對於命令的說明\n"
+
+msgid "status\t\tshow status of daemon and queue\n"
+msgstr "status\t\t顯示守護程式和佇列的狀況\n"
+
+msgid "?Invalid help command unknown\n"
+msgstr "?不明的無效求助命令\n"
+
+#, c-format
+msgid "\tprinter is on device '%s' speed -1\n"
+msgstr "\t印表機位於裝置「%s」速度 -1\n"
+
+msgid "\tqueuing is enabled\n"
+msgstr "\t排隊已啟用\n"
+
+msgid "\tqueuing is disabled\n"
+msgstr "\t排隊已停用\n"
+
+msgid "\tprinting is enabled\n"
+msgstr "\t列印已啟用\n"
+
+msgid "\tprinting is disabled\n"
+msgstr "\t列印已停用\n"
+
+msgid "\tno entries\n"
+msgstr "\t沒有項目\n"
+
+#, c-format
+msgid "\t%d entries\n"
+msgstr "\t%d 個項目\n"
+
+msgid "\tdaemon present\n"
+msgstr "\t守護程式存在\n"
+
+msgid "lpq: Unable to contact server!\n"
+msgstr "lpq:無法連上伺服器!\n"
+
+#, c-format
+msgid "%s: Sorry, no encryption support compiled in!\n"
+msgstr "%s:抱歉,加密支援沒有編譯進去!\n"
+
+#, c-format
+msgid "lpq: Unknown destination \"%s/%s\"!\n"
+msgstr "lpq:不明的目的印表機「%s/%s」!\n"
+
+#, c-format
+msgid "lpq: Unknown destination \"%s\"!\n"
+msgstr "lpq:不明的目的印表機「%s」!\n"
+
+#, c-format
+msgid ""
+"lp: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "lp:錯誤 - %s 環境變數指稱到不存在的目的印表機「%s」!\n"
+
+msgid "lpq: error - no default destination available.\n"
+msgstr "lpq:錯誤 - 無預設目的印表機可用。\n"
+
+#, c-format
+msgid "lpq: get-jobs failed: %s\n"
+msgstr "lpq:get-jobs 失敗:%s\n"
+
+msgid ""
+"Rank   Owner      Pri  Job        Files                       Total Size\n"
+msgstr ""
+"等級   擁有人     優先 工作       檔案                        總計  大小\n"
+
+msgid "Rank    Owner   Job     File(s)                         Total Size\n"
+msgstr "等級    擁有人  工作    檔案                            總計  大小\n"
+
+#, c-format
+msgid "%s: %-33.33s [job %d localhost]\n"
+msgstr "%s:%-33.33s [工作 %d 本地主機]\n"
+
+#, c-format
+msgid "        %-39.39s %.0f bytes\n"
+msgstr "        %-39.39s %.0f 位元組\n"
+
+#, c-format
+msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes\n"
+msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f 位元組\n"
+
+#, c-format
+msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes\n"
+msgstr "%-7s %-7.7s %-7d %-31.31s %.0f 位元組\n"
+
+msgid "no entries\n"
+msgstr "沒有項目\n"
+
+#, c-format
+msgid "lpq: get-printer-attributes failed: %s\n"
+msgstr "lpq:get-printer-attributes 失敗:%s\n"
+
+#, c-format
+msgid "%s is ready\n"
+msgstr "%s 已就緒\n"
+
+#, c-format
+msgid "%s is ready and printing\n"
+msgstr "%s 已就緒並正在列印\n"
+
+#, c-format
+msgid "%s is not ready\n"
+msgstr "%s 並未就緒\n"
+
+msgid "Usage: lpq [-P dest] [-l] [+interval]\n"
+msgstr "用法:lpq [-P 目的印表機] [-l] [+ 間隔]\n"
+
+#, c-format
+msgid "lpr: error - expected value after -%c option!\n"
+msgstr "lpr:錯誤 - 預期 -%c 選項之後有值!\n"
+
+#, c-format
+msgid ""
+"lpr: warning - '%c' format modifier not supported - output may not be "
+"correct!\n"
+msgstr "lpr:警告 - 不支援「%c」格式修飾鍵 - 輸出也許無法正確!\n"
+
+msgid "lpr: error - expected option=value after -o option!\n"
+msgstr "lpr:錯誤 - 預期 -o 選項之後有 option=value!\n"
+
+msgid "lpr: warning - email notification is not currently supported!\n"
+msgstr "lpr:警告 - 目前並未支援以電子郵件通知!\n"
+
+msgid "lpr: error - expected destination after -P option!\n"
+msgstr "lpr:錯誤 - 預期 -P 選項之後有目的印表機!\n"
+
+msgid "lpr: error - expected copy count after -# option!\n"
+msgstr "lpr:錯誤 - 預期 -# 選項之後有複製份數!\n"
+
+#, c-format
+msgid "lpr: error - expected name after -%c option!\n"
+msgstr "lpr:錯誤 - 預期 -%c 選項之後有名稱!\n"
+
+msgid "lpr: error - expected username after -U option!\n"
+msgstr "lpr:錯誤 - 預期 -U 選項之後有使用者名稱!\n"
+
+#, c-format
+msgid "lpr: error - unknown option '%c'!\n"
+msgstr "lpr:錯誤 - 不明的選項「%c」!\n"
+
+#, c-format
+msgid "lpr: error - unable to access \"%s\" - %s\n"
+msgstr "lpr:錯誤 - 無法存取「%s」- %s\n"
+
+#, c-format
+msgid "lpr: error - too many files - \"%s\"\n"
+msgstr "lpr:錯誤 - 太多檔案 -「%s」\n"
+
+#, c-format
+msgid ""
+"lpr: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "lpr:錯誤 - %s 環境變數指稱不存在的目的印表機「%s」!\n"
+
+msgid "lpr: error - no default destination available.\n"
+msgstr "lpr:錯誤 - 無預設目的印表機可用。\n"
+
+msgid "lpr: error - scheduler not responding!\n"
+msgstr "lpr:錯誤 - 排程程式無反應!\n"
+
+#, c-format
+msgid "lpr: error - unable to create temporary file \"%s\" - %s\n"
+msgstr "lpr:錯誤 - 無法建立暫時檔案「%s」- %s\n"
+
+#, c-format
+msgid "lpr: error - unable to write to temporary file \"%s\" - %s\n"
+msgstr "lpr:錯誤 - 無法寫入暫時檔案「%s」- %s\n"
+
+msgid "lpr: error - stdin is empty, so no job has been sent.\n"
+msgstr "lpr:錯誤 - 標準輸入為空,因而無工作發出。\n"
+
+#, c-format
+msgid "lpr: error - unable to print file: %s\n"
+msgstr "lpr:錯誤 - 無法列印檔案:%s\n"
+
+msgid "lprm: Unable to contact server!\n"
+msgstr "lprm:無法連上伺服器!\n"
+
+#, c-format
+msgid "lprm: Unknown destination \"%s\"!\n"
+msgstr "lprm:不明的目的印表機「%s」!\n"
+
+#, c-format
+msgid "lprm: Unknown option '%c'!\n"
+msgstr "lprm:不明的選項「%c」!\n"
+
+msgid "lprm: Job or printer not found!\n"
+msgstr "lprm:工作或印表機找不到!\n"
+
+msgid "lprm: Not authorized to lprm job(s)!\n"
+msgstr "lprm:未被授權以 lprm 移除工作!\n"
+
+#, c-format
+msgid "lprm: You don't own job ID %d!\n"
+msgstr "lprm:您並不擁有工作識別號 %d!\n"
+
+msgid "lprm: Unable to lprm job(s)!\n"
+msgstr "lprm:無法以 lprm 移除工作!\n"
+
+msgid "lprm: Unable to cancel job(s)!\n"
+msgstr "lprm:無法取消工作!\n"
+
+#, c-format
+msgid "%s: Don't know what to do!\n"
+msgstr "%s:不知道要做什麼!\n"
+
+#, c-format
+msgid "%s: Expected server name after -h!\n"
+msgstr "%s:預期 -h 之後有伺服器名稱!\n"
+
+#, c-format
+msgid "%s: Expected reason text after -r!\n"
+msgstr "%s:預期 -r 之後有原因文字!\n"
+
+#, c-format
+msgid "%s: Unknown option '%c'!\n"
+msgstr "%s:不明的選項「%c」!\n"
+
+#, c-format
+msgid "%s: Unable to connect to server: %s\n"
+msgstr "%s:無法連接伺服器:%s\n"
+
+#, c-format
+msgid "%s: Operation failed: %s\n"
+msgstr "%s:作業失敗:%s\n"
+
+msgid "cancel: Error - expected hostname after '-h' option!\n"
+msgstr "取消:錯誤 - 預期「-h」選項之後有主機名稱!\n"
+
+msgid "cancel: Error - expected username after '-u' option!\n"
+msgstr "取消:錯誤 - 預期「-u」選項之後有使用者名稱!\n"
+
+#, c-format
+msgid "cancel: Unknown option '%c'!\n"
+msgstr "取消:不明的選項「%c」!\n"
+
+#, c-format
+msgid "cancel: Unknown destination \"%s\"!\n"
+msgstr "取消:不明的目的印表機「%s」!\n"
+
+msgid "cancel: Unable to contact server!\n"
+msgstr "取消:無法連上伺服器!\n"
+
+#, c-format
+msgid "cancel: %s failed: %s\n"
+msgstr "取消:%s 失敗:%s\n"
+
+#, c-format
+msgid "cupsaddsmb: Missing value on line %d!\n"
+msgstr "cupsaddsmb:在第 %d 列上缺少值!\n"
+
+#, c-format
+msgid "cupsaddsmb: Missing double quote on line %d!\n"
+msgstr "cupsaddsmb:在第 %d 列上缺少雙引號!\n"
+
+#, c-format
+msgid "cupsaddsmb: Bad option + choice on line %d!\n"
+msgstr "cupsaddsmb:在第 %d 列上有不當的選項 + 選擇!\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to connect to server \"%s\" for %s - %s\n"
+msgstr "cupsaddsmb:無法連接伺服器「%s」用於 %s - %s\n"
+
+#, c-format
+msgid "cupsaddsmb: No PPD file for printer \"%s\" - skipping!\n"
+msgstr "cupsaddsmb:沒有用於印表機「%s」的 PPD 檔案- 跳過!\n"
+
+#, c-format
+msgid "cupsaddsmb: get-printer-attributes failed for \"%s\": %s\n"
+msgstr "cupsaddsmb:get-printer-attributes 用於「%s」時失敗:%s\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to convert PPD file for %s - %s\n"
+msgstr "cupsaddsmb:無法轉換 PPD 檔案用於 %s - %s\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to copy Windows 2000 printer driver files (%d)!\n"
+msgstr "cupsaddsmb:無法複製 Windows 2000 印表機驅動程式檔案 (%d)!\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to copy CUPS printer driver files (%d)!\n"
+msgstr "cupsaddsmb:無法複製 CUPS 印表機驅動程式檔案 (%d)!\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to install Windows 2000 printer driver files (%d)!\n"
+msgstr "cupsaddsmb:無法安裝 Windows 2000 印表機驅動程式檔案 (%d)!\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to copy Windows 9x printer driver files (%d)!\n"
+msgstr "cupsaddsmb:無法複製 Windows 9x 印表機驅動程式檔案 (%d)!\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to install Windows 9x printer driver files (%d)!\n"
+msgstr "cupsaddsmb:無法安裝 Windows 9x 印表機驅動程式檔案 (%d)!\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to set Windows printer driver (%d)!\n"
+msgstr "cupsaddsmb:無法設定 Windows 印表機驅動程式 (%d)!\n"
+
+msgid ""
+"Usage: cupsaddsmb [options] printer1 ... printerN\n"
+"       cupsaddsmb [options] -a\n"
+"\n"
+"Options:\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 ""
+"用法:cupsaddsmb [選項] 印表機1…印表機N\n"
+"       cupsaddsmb [選項] -a\n"
+"\n"
+"選項:\n"
+"  -H samba-server  使用被點名的 SAMBA 伺服器\n"
+"  -U samba-user    驗證使用被點名的 SAMBA 使用者\n"
+"  -a               匯出所有印表機\n"
+"  -h cups-server   使用被點名的 CUPS 伺服器\n"
+"  -v               詳細輸出 (顯示命令)\n"
+
+msgid "cupstestppd: The -q option is incompatible with the -v option.\n"
+msgstr "cupstestppd:-q 選項與 -v 選項不相容。\n"
+
+msgid "cupstestppd: The -v option is incompatible with the -q option.\n"
+msgstr "cupstestppd:-v 選項與 -q 選項不相容。\n"
+
+#, c-format
+msgid ""
+" FAIL\n"
+"      **FAIL**  Unable to open PPD file - %s\n"
+msgstr ""
+" 失敗\n"
+"      ** 失敗 **  無法開啟 PPD 檔案 - %s\n"
+
+#, c-format
+msgid ""
+" FAIL\n"
+"      **FAIL**  Unable to open PPD file - %s on line %d.\n"
+msgstr ""
+" 失敗\n"
+"      ** 失敗 **  無法開啟 PPD 檔案 - %s 於第 %d 列。\n"
+
+msgid "                REF: Page 42, section 5.2.\n"
+msgstr "               參考:頁面 42, 區段 5.2。\n"
+
+msgid "                REF: Page 20, section 3.4.\n"
+msgstr "               參考:頁面 20, 區段 3.4。\n"
+
+msgid "                REF: Pages 45-46, section 5.2.\n"
+msgstr "               參考:頁面 45-46, 區段 5.2。\n"
+
+msgid "                REF: Pages 42-45, section 5.2.\n"
+msgstr "               參考:頁面 42-45, 區段 5.2。\n"
+
+msgid "                REF: Pages 48-49, section 5.2.\n"
+msgstr "               參考:頁面 48-49, 區段 5.2。\n"
+
+msgid "                REF: Pages 52-54, section 5.2.\n"
+msgstr "               參考:頁面 52-54, 區段 5.2。\n"
+
+msgid "                REF: Page 15, section 3.2.\n"
+msgstr "               參考:頁面 15, 區段 3.2。\n"
+
+msgid "                REF: Page 15, section 3.1.\n"
+msgstr "               參考:頁面 15, 區段 3.1。\n"
+
+msgid "                REF: Pages 16-17, section 3.2.\n"
+msgstr "               參考:頁面 16-17, 區段 3.2。\n"
+
+msgid "                REF: Page 19, section 3.3.\n"
+msgstr "               參考:頁面 19, 區段 3.3。\n"
+
+msgid "                REF: Page 27, section 3.5.\n"
+msgstr "               參考:頁面 27, 區段 3.5。\n"
+
+msgid ""
+"\n"
+"    DETAILED CONFORMANCE TEST RESULTS\n"
+msgstr ""
+"\n"
+"    詳細的符合性測試結果\n"
+
+#, c-format
+msgid "        WARN    %s has no corresponding options!\n"
+msgstr "        警告    %s 沒有相應選項!\n"
+
+msgid " FAIL\n"
+msgstr " 失敗\n"
+
+msgid ""
+"      **FAIL**  REQUIRED DefaultImageableArea\n"
+"                REF: Page 102, section 5.15.\n"
+msgstr ""
+"      ** 失敗 **  必要的 DefaultImageableArea\n"
+"               參考:頁面 102, 區段 5.15。\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  BAD DefaultImageableArea %s!\n"
+"                REF: Page 102, section 5.15.\n"
+msgstr ""
+"      ** 失敗 **  不當的 DefaultImageableArea %s!\n"
+"               參考:頁面 102, 區段 5.15。\n"
+
+msgid "        PASS    DefaultImageableArea\n"
+msgstr "        略過    DefaultImageableArea\n"
+
+msgid ""
+"      **FAIL**  REQUIRED DefaultPaperDimension\n"
+"                REF: Page 103, section 5.15.\n"
+msgstr ""
+"      ** 失敗 **  必要的 DefaultPaperDimension\n"
+"               參考:頁面 103, 區段 5.15。\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  BAD DefaultPaperDimension %s!\n"
+"                REF: Page 103, section 5.15.\n"
+msgstr ""
+"      ** 失敗 **  不當的 DefaultPaperDimension %s!\n"
+"               參考:頁面 103, 區段 5.15。\n"
+
+msgid "        PASS    DefaultPaperDimension\n"
+msgstr "        略過    DefaultPaperDimension\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  BAD Default%s %s\n"
+"                REF: Page 40, section 4.5.\n"
+msgstr ""
+"      ** 失敗 **  不當的預設 %s %s\n"
+"               參考:頁面 40, 區段 4.5。\n"
+
+#, c-format
+msgid "        PASS    Default%s\n"
+msgstr "        略過    預設 %s\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED Default%s\n"
+"                REF: Page 40, section 4.5.\n"
+msgstr ""
+"      ** 失敗 **  必要的預設 %s\n"
+"               參考:頁面 40, 區段 4.5。\n"
+
+msgid "        PASS    FileVersion\n"
+msgstr "        略過    FileVersion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED FileVersion\n"
+"                REF: Page 56, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  必要的 FileVersion\n"
+"               參考:頁面 56, 區段 5.3。\n"
+
+msgid "        PASS    FormatVersion\n"
+msgstr "        略過    FormatVersion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED FormatVersion\n"
+"                REF: Page 56, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  必要的 FormatVersion\n"
+"               參考:頁面 56, 區段 5.3。\n"
+
+msgid "        PASS    LanguageEncoding\n"
+msgstr "        略過    LanguageEncoding\n"
+
+msgid ""
+"      **FAIL**  REQUIRED LanguageEncoding\n"
+"                REF: Pages 56-57, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  必要的 LanguageEncoding\n"
+"               參考:頁面 56-57, 區段 5.3。\n"
+
+msgid "        PASS    LanguageVersion\n"
+msgstr "        略過    LanguageVersion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED LanguageVersion\n"
+"                REF: Pages 57-58, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  必要的 LanguageVersion\n"
+"               參考:頁面 57-58, 區段 5.3。\n"
+
+msgid ""
+"      **FAIL**  BAD Manufacturer (should be \"HP\")\n"
+"                REF: Page 211, table D.1.\n"
+msgstr ""
+"      ** 失敗 **  不當的製造商(應該是「HP」)\n"
+"               參考:頁面 211, 表格 D.1。\n"
+
+msgid "        PASS    Manufacturer\n"
+msgstr "        略過    製造商\n"
+
+msgid ""
+"      **FAIL**  REQUIRED Manufacturer\n"
+"                REF: Pages 58-59, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  必要的製造商\n"
+"               參考:頁面 58-59, 區段 5.3。\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  BAD ModelName - \"%c\" not allowed in string.\n"
+"                REF: Pages 59-60, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  不當的 ModelName -無法允許「%c」在字串中。\n"
+"               參考:頁面 59-60, 區段 5.3。\n"
+
+msgid "        PASS    ModelName\n"
+msgstr "        略過    ModelName\n"
+
+msgid ""
+"      **FAIL**  REQUIRED ModelName\n"
+"                REF: Pages 59-60, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  必要的 ModelName\n"
+"               參考:頁面 59-60, 區段 5.3。\n"
+
+msgid "        PASS    NickName\n"
+msgstr "        略過    暱稱\n"
+
+msgid ""
+"      **FAIL**  REQUIRED NickName\n"
+"                REF: Page 60, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  必要的暱稱\n"
+"               參考:頁面 60, 區段 5.3。\n"
+
+msgid "        PASS    PageSize\n"
+msgstr "        略過    PageSize\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PageSize\n"
+"                REF: Pages 99-100, section 5.14.\n"
+msgstr ""
+"      ** 失敗 **  必要的 PageSize\n"
+"               參考:頁面 99-100, 區段 5.14。\n"
+
+msgid "        PASS    PageRegion\n"
+msgstr "        略過    PageRegion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PageRegion\n"
+"                REF: Page 100, section 5.14.\n"
+msgstr ""
+"      ** 失敗 **  必要的 PageRegion\n"
+"               參考:頁面 100, 區段 5.14。\n"
+
+msgid "        PASS    PCFileName\n"
+msgstr "        略過    PCFileName\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PCFileName\n"
+"                REF: Pages 61-62, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  必要的 PCFileName\n"
+"               參考:頁面 61-62, 區段 5.3。\n"
+
+msgid ""
+"      **FAIL**  BAD Product - not \"(string)\".\n"
+"                REF: Page 62, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  不當的產品 - 不是「(字串)」。\n"
+"               參考:頁面 62, 區段 5.3。\n"
+
+msgid "        PASS    Product\n"
+msgstr "        略過    產品\n"
+
+msgid ""
+"      **FAIL**  REQUIRED Product\n"
+"                REF: Page 62, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  必要的產品\n"
+"               參考:頁面 62, 區段 5.3。\n"
+
+msgid ""
+"      **FAIL**  BAD PSVersion - not \"(string) int\".\n"
+"                REF: Pages 62-64, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  不當的 PSVersion - 不是「(字串) int」。\n"
+"               參考:頁面 62-64, 區段 5.3。\n"
+
+msgid "        PASS    PSVersion\n"
+msgstr "        略過    PSVersion\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PSVersion\n"
+"                REF: Pages 62-64, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  必要的 PSVersion\n"
+"               參考:頁面 62-64, 區段 5.3。\n"
+
+msgid ""
+"      **FAIL**  BAD ShortNickName - longer than 31 chars.\n"
+"                REF: Pages 64-65, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  不當的 ShortNickName - 長度超過 31 個字元。\n"
+"               參考:頁面 64-65, 區段 5.3。\n"
+
+msgid "        PASS    ShortNickName\n"
+msgstr "        略過    ShortNickName\n"
+
+msgid ""
+"      **FAIL**  REQUIRED ShortNickName\n"
+"                REF: Page 64-65, section 5.3.\n"
+msgstr ""
+"      ** 失敗 **  必要的 ShortNickName\n"
+"               參考:頁面 64-65, 區段 5.3。\n"
+
+msgid ""
+"      **FAIL**  BAD JobPatchFile attribute in file\n"
+"                REF: Page 24, section 3.4.\n"
+msgstr ""
+"      ** 失敗 **  在檔案中不當的 JobPatchFile 屬性\n"
+"               參考:頁面 24, 區段 3.4。\n"
+
+msgid ""
+"      **FAIL**  REQUIRED PageSize\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 99, section 5.14.\n"
+msgstr ""
+"      ** 失敗 **  必要的 PageSize\n"
+"               參考:頁面 41, 區段 5.\n"
+"               參考:頁面 99, 區段 5.14。\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 102, section 5.15.\n"
+msgstr ""
+"      ** 失敗 **  必要的 ImageableArea 用於 PageSize %s\n"
+"               參考:頁面 41, 區段 5.\n"
+"               參考:頁面 102, 區段 5.15。\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
+"                REF: Page 41, section 5.\n"
+"                REF: Page 103, section 5.15.\n"
+msgstr ""
+"      ** 失敗 **  必要的 PaperDimension 用於 PageSize %s\n"
+"               參考:頁面 41, 區段 5.\n"
+"               參考:頁面 103, 區段 5.15。\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad %s choice %s!\n"
+"                REF: Page 84, section 5.9\n"
+msgstr ""
+"      ** 失敗 **  不當的 %s 選擇 %s!\n"
+"               參考:頁面 84, 區段 5.9\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  REQUIRED %s does not define choice None!\n"
+"                REF: Page 122, section 5.17\n"
+msgstr ""
+"      ** 失敗 **  必要的 %s 未定義[不]選擇!\n"
+"               參考:頁面 122, 區段 5.17\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  Bad %s choice %s!\n"
+"                REF: Page 122, section 5.17\n"
+msgstr ""
+"      ** 失敗 **  不當的 %s 選擇 %s!\n"
+"               參考:頁面 122, 區段 5.17\n"
+
+msgid " PASS\n"
+msgstr " 略過\n"
+
+#, c-format
+msgid ""
+"        WARN    Duplex option keyword %s should be named Duplex or "
+"JCLDuplex!\n"
+"                REF: Page 122, section 5.17\n"
+msgstr ""
+"        警告    雙工選項關鍵字 %s 應該被稱為 Duplex 或 JCLDuplex!\n"
+"               參考:頁面 122, 區段 5.17\n"
+
+msgid "        WARN    Default choices conflicting!\n"
+msgstr "        警告    預設選擇衝突!\n"
+
+#, c-format
+msgid ""
+"        WARN    Obsolete PPD version %.1f!\n"
+"                REF: Page 42, section 5.2.\n"
+msgstr ""
+"        警告    淘汰的 PPD 版本 %.1f!\n"
+"               參考:頁面 42, 區段 5.2。\n"
+
+msgid ""
+"        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
+"                REF: Pages 56-57, section 5.3.\n"
+msgstr ""
+"        警告    由 PPD 4.3 spec 所需的 LanguageEncoding。\n"
+"               參考:頁面 56-57, 區段 5.3。\n"
+
+msgid ""
+"        WARN    Manufacturer required by PPD 4.3 spec.\n"
+"                REF: Pages 58-59, section 5.3.\n"
+msgstr ""
+"        警告    由 PPD 4.3 spec 所需的製造商。\n"
+"               參考:頁面 58-59, 區段 5.3。\n"
+
+msgid ""
+"        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
+"                REF: Pages 61-62, section 5.3.\n"
+msgstr ""
+"        警告    PCFileName 長度超過 8.3 而違反了 PPD 的 spec。\n"
+"               參考:頁面 61-62, 區段 5.3。\n"
+
+msgid ""
+"        WARN    ShortNickName required by PPD 4.3 spec.\n"
+"                REF: Pages 64-65, section 5.3.\n"
+msgstr ""
+"        警告    由 PPD 4.3 spec 所需的 ShortNickName。\n"
+"               參考:頁面 64-65, 區段 5.3。\n"
+
+msgid ""
+"        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
+"                REF: Pages 78-79, section 5.7.\n"
+msgstr ""
+"        警告    含有 PJL 和 BCP 兩者的協定;預期為 TBCP。\n"
+"               參考:頁面 78-79, 區段 5.7。\n"
+
+msgid ""
+"        WARN    Protocols contains PJL but JCL attributes are not set.\n"
+"                REF: Pages 78-79, section 5.7.\n"
+msgstr ""
+"        警告    協定含有 PJL 但是 JCL 屬性未設定。\n"
+"               參考:頁面 78-79, 區段 5.7。\n"
+
+#, c-format
+msgid ""
+"        WARN    %s shares a common prefix with %s\n"
+"                REF: Page 15, section 3.2.\n"
+msgstr ""
+"        警告    %s 分享共同的 %s 字首\n"
+"               參考:頁面 15, 區段 3.2。\n"
+
+#, c-format
+msgid "    %d ERROR%s FOUND\n"
+msgstr "    找到 %d 個錯誤%s\n"
+
+msgid "    NO ERRORS FOUND\n"
+msgstr "    沒有找到錯誤\n"
+
+#, c-format
+msgid ""
+"        WARN    \"%s %s\" conflicts with \"%s %s\"\n"
+"                (constraint=\"%s %s %s %s\")\n"
+msgstr ""
+"        警告    「%s %s」與「%s %s」產生衝突\n"
+"               (條件約束=「%s %s %s %s」)\n"
+
+msgid ""
+"Usage: cupstestppd [-q] [-r] [-v[v]] filename1.ppd[.gz] [... filenameN.ppd[."
+"gz]]\n"
+"       program | cupstestppd [-q] [-r] [-v[v]] -\n"
+msgstr ""
+"用法:cupstestppd [-q] [-r] [-v[v]] 檔案名稱1.ppd [.gz] [...檔案名稱N.ppd [."
+"gz]]\n"
+"       程式 | cupstestppd [-q] [-r] [-v[v]] -\n"
+
+msgid "lpstat: Need \"completed\" or \"not-completed\" after -W!\n"
+msgstr "lpstat:-W 之後需要「completed」或「not-completed」!\n"
+
+msgid "lpstat: The -b option requires a destination argument.\n"
+msgstr "lpstat: -b 選項需要目的印表機的引數。\n"
+
+msgid "Error: need hostname after '-h' option!\n"
+msgstr "錯誤:「-h」選項之後需要主機名稱!\n"
+
+#, c-format
+msgid "lpstat: Unknown option '%c'!\n"
+msgstr "lpstat:不明的選項「%c」!\n"
+
+#, c-format
+msgid "lpstat: Invalid destination name in list \"%s\"!\n"
+msgstr "lpstat:在表列「%s」中存在無效的目的印表機名稱!\n"
+
+#, c-format
+msgid "lpstat: Unknown destination \"%s\"!\n"
+msgstr "lpstat:不明的目的印表機「%s」!\n"
+
+#, c-format
+msgid "lpstat: Unable to connect to server %s on port %d: %s\n"
+msgstr "lpstat:無法以連接埠 %2$d 連接伺服器 %1$s:%3$s\n"
+
+#, c-format
+msgid "lpstat: get-printers failed: %s\n"
+msgstr "lpstat:get-printers 失敗:%s\n"
+
+#, c-format
+msgid "%s accepting requests since Jan 01 00:00\n"
+msgstr "%s 從 Jan 01 00:00 起接受請求\n"
+
+#, c-format
+msgid ""
+"%s not accepting requests since Jan 01 00:00 -\n"
+"\t%s\n"
+msgstr ""
+"%s 從 Jan 01 00:00 起無法接受請求 -\n"
+"\t%s\n"
+
+#, c-format
+msgid "%s/%s accepting requests since Jan 01 00:00\n"
+msgstr "%s/%s 從 Jan 01 00:00 起接受請求\n"
+
+#, c-format
+msgid ""
+"%s/%s not accepting requests since Jan 01 00:00 -\n"
+"\t%s\n"
+msgstr ""
+"%s/%s 從 Jan 01 00:00 起無法接受請求 -\n"
+"\t%s\n"
+
+#, c-format
+msgid "lpstat: get-classes failed: %s\n"
+msgstr "lpstat:get-classes 失敗:%s\n"
+
+#, c-format
+msgid "members of class %s:\n"
+msgstr "成員的類別 %s:\n"
+
+#, c-format
+msgid "system default destination: %s/%s\n"
+msgstr "系統預設目的印表機:%s/%s\n"
+
+#, c-format
+msgid "system default destination: %s\n"
+msgstr "系統預設目的印表機:%s\n"
+
+#, c-format
+msgid ""
+"lpstat: error - %s environment variable names non-existent destination \"%s"
+"\"!\n"
+msgstr "lpstat:錯誤 - %s 環境變數指稱不存在的目的印表機「%s」!\n"
+
+msgid "no system default destination\n"
+msgstr "無系統預設目的印表機\n"
+
+#, c-format
+msgid "Output for printer %s is sent to remote printer %s on %s\n"
+msgstr "給印表機 %1$s 的輸出已發送到位於 %3$s 的遠端印表機 %2$s\n"
+
+#, c-format
+msgid "Output for printer %s is sent to %s\n"
+msgstr "給印表機 %s 的輸出已發送到 %s\n"
+
+#, c-format
+msgid "Output for printer %s/%s is sent to remote printer %s on %s\n"
+msgstr "給印表機 %1$s/%2$s 的輸出已發送到位於 %4$s 的遠端印表機 %3$s\n"
+
+#, c-format
+msgid "Output for printer %s/%s is sent to %s\n"
+msgstr "給印表機 %s/%s 的輸出已發送到 %s\n"
+
+#, c-format
+msgid "device for %s: %s\n"
+msgstr "裝置用於 %s:%s\n"
+
+#, c-format
+msgid "device for %s/%s: %s\n"
+msgstr "裝置用於 %s/%s:%s\n"
+
+#, c-format
+msgid "lpstat: get-jobs failed: %s\n"
+msgstr "lpstat:get-jobs 失敗:%s\n"
+
+#, c-format
+msgid "\tqueued for %s\n"
+msgstr "\t已加入佇列於 %s\n"
+
+#, c-format
+msgid "printer %s is idle.  enabled since %s\n"
+msgstr "印表機 %s 為閒置。從 %s 起已啟用\n"
+
+#, c-format
+msgid "printer %s now printing %s-%d.  enabled since %s\n"
+msgstr "印表機 %s 正在列印 %s-%d。從 %s 起已啟用\n"
+
+#, c-format
+msgid "printer %s disabled since %s -\n"
+msgstr "印表機 %s 從 %s 起已停用 -\n"
+
+msgid "\treason unknown\n"
+msgstr "\t原因不詳\n"
+
+msgid ""
+"\tForm mounted:\n"
+"\tContent types: any\n"
+"\tPrinter types: unknown\n"
+msgstr ""
+"\t形式掛載:\n"
+"\t內容類型:任何\n"
+"\t印表機類型:不明\n"
+
+#, c-format
+msgid "\tDescription: %s\n"
+msgstr "\t描述:%s\n"
+
+msgid "\tAlerts:"
+msgstr "\t警示:"
+
+#, c-format
+msgid "\tLocation: %s\n"
+msgstr "\t位置:%s\n"
+
+msgid "\tConnection: remote\n"
+msgstr "\t連接:遠端\n"
+
+#, c-format
+msgid "\tInterface: %s.ppd\n"
+msgstr "\t介面:%s.ppd\n"
+
+msgid "\tConnection: direct\n"
+msgstr "\t連接:直接\n"
+
+#, c-format
+msgid "\tInterface: %s/interfaces/%s\n"
+msgstr "\t介面:%s/介面/%s\n"
+
+#, c-format
+msgid "\tInterface: %s/ppd/%s.ppd\n"
+msgstr "\t介面:%s/ppd/%s.ppd\n"
+
+msgid "\tOn fault: no alert\n"
+msgstr "\t於失誤:無警示\n"
+
+msgid "\tAfter fault: continue\n"
+msgstr "\t失誤之後:繼續\n"
+
+msgid "\tUsers allowed:\n"
+msgstr "\t允許的使用者:\n"
+
+msgid "\tUsers denied:\n"
+msgstr "\t被拒的使用者:\n"
+
+msgid "\t\t(all)\n"
+msgstr "\t\t(所有)\n"
+
+msgid "\tForms allowed:\n"
+msgstr "\t允許的形式:\n"
+
+msgid "\t\t(none)\n"
+msgstr "\t\t(無一)\n"
+
+msgid "\tBanner required\n"
+msgstr "\t需要的橫幅\n"
+
+msgid "\tCharset sets:\n"
+msgstr "\t字元集設定:\n"
+
+msgid "\tDefault pitch:\n"
+msgstr "\t預設間距:\n"
+
+msgid "\tDefault page size:\n"
+msgstr "\t預設頁面大小:\n"
+
+msgid "\tDefault port settings:\n"
+msgstr "\t預設連接埠設定值:\n"
+
+#, c-format
+msgid "printer %s/%s is idle.  enabled since %s\n"
+msgstr "印表機 %s/%s 為閒置。從 %s 起已啟用\n"
+
+#, c-format
+msgid "printer %s/%s now printing %s-%d.  enabled since %s\n"
+msgstr "印表機 %s/%s 正在列印 %s-%d。從 %s 起已啟用\n"
+
+#, c-format
+msgid "printer %s/%s disabled since %s -\n"
+msgstr "印表機 %s/%s 從 %s 起已停用 -\n"
+
+msgid "scheduler is running\n"
+msgstr "排程程式執行中\n"
+
+msgid "scheduler is not running\n"
+msgstr "排程程式並未執行\n"
+
+#, c-format
+msgid "lpadmin: Unable to connect to server: %s\n"
+msgstr "lpadmin:無法連接伺服器:%s\n"
+
+msgid ""
+"lpadmin: Unable to add a printer to the class:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin:無法加入印表機到類別:\n"
+"         您必須先指定印表機名稱!\n"
+
+msgid "lpadmin: Expected class name after '-c' option!\n"
+msgstr "lpadmin:「-c」選項之後預期為類別名稱!\n"
+
+msgid "lpadmin: Class name can only contain printable characters!\n"
+msgstr "lpadmin:類別名稱只能包含可列印字元!\n"
+
+msgid "lpadmin: Expected printer name after '-d' option!\n"
+msgstr "lpadmin:「-d」選項之後預期為印表機名稱!\n"
+
+msgid "lpadmin: Printer name can only contain printable characters!\n"
+msgstr "lpadmin:印表機名稱只能包含可列印字元!\n"
+
+msgid "lpadmin: Expected hostname after '-h' option!\n"
+msgstr "lpadmin:「-h」選項之後預期為主機名稱!\n"
+
+msgid ""
+"lpadmin: Unable to set the interface script:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin:無法設定介面命令稿:\n"
+"         您必須先指定印表機名稱!\n"
+
+msgid "lpadmin: Expected interface after '-i' option!\n"
+msgstr "lpadmin:「-i」選項之後預期為介面!\n"
+
+msgid ""
+"lpadmin: Unable to set the interface script or PPD file:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin:無法設定介面命令稿或 PPD 檔案:\n"
+"         您必須先指定印表機名稱!\n"
+
+msgid "lpadmin: Expected model after '-m' option!\n"
+msgstr "lpadmin:「-m」選項之後預期為型號!\n"
+
+msgid "lpadmin: Expected name=value after '-o' option!\n"
+msgstr "lpadmin:「-o」選項之後預期為名稱=值!\n"
+
+msgid "lpadmin: Expected printer after '-p' option!\n"
+msgstr "lpadmin:「-p」選項之後預期為印表機!\n"
+
+msgid ""
+"lpadmin: Unable to remove a printer from the class:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin:無法從類別移除印表機:\n"
+"         您必須先指定印表機名稱!\n"
+
+msgid "lpadmin: Expected class after '-r' option!\n"
+msgstr "lpadmin:「-r」選項之後預期為類別!\n"
+
+msgid "lpadmin: Expected allow/deny:userlist after '-u' option!\n"
+msgstr "lpadmin:「-u」選項之後預期為允許/拒絕:使用者串列!\n"
+
+#, c-format
+msgid "lpadmin: Unknown allow/deny option \"%s\"!\n"
+msgstr "lpadmin:不明的允許/拒絕選項「%s」!\n"
+
+msgid ""
+"lpadmin: Unable to set the device URI:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin:無法設定裝置的 URI:\n"
+"         您必須先指定印表機名稱!\n"
+
+msgid "lpadmin: Expected device URI after '-v' option!\n"
+msgstr "lpadmin:「-v」選項之後預期為裝置的 URI!\n"
+
+msgid "lpadmin: Expected printer or class after '-x' option!\n"
+msgstr "lpadmin:「-x」選項之後預期為印表機或類別!\n"
+
+msgid ""
+"lpadmin: Unable to set the printer description:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin:無法設定印表機描述:\n"
+"         您必須先指定印表機名稱!\n"
+
+msgid "lpadmin: Expected description after '-D' option!\n"
+msgstr "lpadmin:「-D」選項之後預期為描述!\n"
+
+msgid "lpadmin: Expected file type(s) after '-I' option!\n"
+msgstr "lpadmin:「-I」選項之後預期為檔案類型!\n"
+
+msgid "lpadmin: Warning - content type list ignored!\n"
+msgstr "lpadmin:警告 - 內容類型表列被忽略!\n"
+
+msgid ""
+"lpadmin: Unable to set the printer location:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin:無法設定印表機位置:\n"
+"         您必須先指定印表機名稱!\n"
+
+msgid "lpadmin: Expected location after '-L' option!\n"
+msgstr "lpadmin:「-L」選項之後預期為位置!\n"
+
+msgid ""
+"lpadmin: Unable to set the PPD file:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin:無法設定 PPD 檔案:\n"
+"         您必須先指定印表機名稱!\n"
+
+msgid "lpadmin: Expected PPD after '-P' option!\n"
+msgstr "lpadmin:「-P」選項之後預期為 PPD!\n"
+
+#, c-format
+msgid "lpadmin: Unknown option '%c'!\n"
+msgstr "lpadmin:不明的選項「%c」!\n"
+
+#, c-format
+msgid "lpadmin: Unknown argument '%s'!\n"
+msgstr "lpadmin:不明的引數「%s」!\n"
+
+msgid ""
+"lpadmin: Unable to set the printer options:\n"
+"         You must specify a printer name first!\n"
+msgstr ""
+"lpadmin:無法設定印表機選項:\n"
+"         您必須先指定印表機名稱!\n"
+
+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 ""
+"用法:\n"
+"\n"
+"    lpadmin [-h 伺服器] -d 目的印表機\n"
+"    lpadmin [-h 伺服器] -x 目的印表機\n"
+"    lpadmin [-h 伺服器] -p 印表機 [-c 要加入的類別] [-i 介面] [-m 型號]\n"
+"                       [-r 要移除的類別] [-v 裝置] [-D 描述]\n"
+"                       [-P PPD-檔案] [-o 名稱=值]\n"
+"                       [-u allow:使用者,使用者] [-u deny:使用者,使用者]\n"
+"\n"
+
+#, c-format
+msgid "lpadmin: Unable to create temporary file: %s\n"
+msgstr "lpadmin:無法建立暫時檔案:%s\n"
+
+#, c-format
+msgid "lpadmin: Unable to open file \"%s\": %s\n"
+msgstr "lpadmin:無法開啟檔案「%s」:%s\n"
+
+#, c-format
+msgid "lpadmin: add-printer (set model) failed: %s\n"
+msgstr "lpadmin:加入印表機 (設定型號) 失敗:%s\n"
+
+#, c-format
+msgid "lpadmin: add-printer (set description) failed: %s\n"
+msgstr "lpadmin:加入印表機 (設定描述) 失敗:%s\n"
+
+#, c-format
+msgid "lpadmin: add-printer (set location) failed: %s\n"
+msgstr "lpadmin:加入印表機 (設定位置) 失敗:%s\n"
+
+#, c-format
+msgid "lpadmin: Unable to create temporary file - %s\n"
+msgstr "lpadmin:無法建立暫時檔案 - %s\n"
+
+#, c-format
+msgid "lpadmin: Unable to open PPD file \"%s\" - %s\n"
+msgstr "lpadmin:無法開啟 PPD 檔案「%s」- %s\n"
+
+#, c-format
+msgid "lpadmin: %s failed: %s\n"
+msgstr "lpadmin:%s 失敗:%s\n"
+
+msgid "lp: Expected destination after -d option!\n"
+msgstr "lp:-d 選項之後預期為目的印表機!\n"
+
+msgid "lp: Expected form after -f option!\n"
+msgstr "lp:-f 選項之後預期為形式!\n"
+
+msgid "lp: Expected hostname after -h option!\n"
+msgstr "lp:-h 選項之後預期為主機名稱!\n"
+
+msgid "lp: Expected job ID after -i option!\n"
+msgstr "lp:-i 選項之後預期為工作識別號!\n"
+
+msgid "lp: Error - cannot print files and alter jobs simultaneously!\n"
+msgstr "lp:錯誤 - 無法同步列印檔案和改變工作!\n"
+
+msgid "lp: Error - bad job ID!\n"
+msgstr "lp:錯誤 - 不當的工作識別號!\n"
+
+msgid "lp: Expected copies after -n option!\n"
+msgstr "lp:-n 選項之後預期為份數!\n"
+
+msgid "lp: Expected option string after -o option!\n"
+msgstr "lp:-o 選項之後預期為選項字串!\n"
+
+#, c-format
+msgid "lp: Expected priority after -%c option!\n"
+msgstr "lp:-%c 選項之後預期為優先權!\n"
+
+msgid "lp: Priority must be between 1 and 100.\n"
+msgstr "lp:優先權必須在 1 和 100 之間。\n"
+
+msgid "lp: Expected title after -t option!\n"
+msgstr "lp:-t 選項之後預期為標題!\n"
+
+msgid "lp: Expected mode list after -y option!\n"
+msgstr "lp:-y 選項之後預期為模式串列!\n"
+
+msgid "lp: Warning - mode option ignored!\n"
+msgstr "lp:警告 - 模式選項被忽略!\n"
+
+msgid "lp: Expected hold name after -H option!\n"
+msgstr "lp:-H 選項之後預期為延遲名稱!\n"
+
+msgid "lp: Need job ID (-i) before \"-H restart\"!\n"
+msgstr "lp:「-H restart」之前需要工作識別號 (-i)!\n"
+
+msgid "lp: Expected page list after -P option!\n"
+msgstr "lp:-P 選項之後預期為頁面表列!\n"
+
+msgid "lp: Expected character set after -S option!\n"
+msgstr "lp:-S 選項之後預期為字元集!\n"
+
+msgid "lp: Warning - character set option ignored!\n"
+msgstr "lp:警告 - 字元集選項被忽略!\n"
+
+msgid "lp: Expected content type after -T option!\n"
+msgstr "lp:-T 選項之後預期為內容類型!\n"
+
+msgid "lp: Warning - content type option ignored!\n"
+msgstr "lp:警告 - 內容類型選項被忽略!\n"
+
+#, c-format
+msgid "lp: Unknown option '%c'!\n"
+msgstr "lp:不明的選項「%c」!\n"
+
+msgid ""
+"lp: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr "lp:錯誤 - 如果提供了檔案或工作識別號,就無法從標準輸入列印!\n"
+
+#, c-format
+msgid "lp: Unable to access \"%s\" - %s\n"
+msgstr "lp:無法存取「%s」- %s\n"
+
+#, c-format
+msgid "lp: Too many files - \"%s\"\n"
+msgstr "lp:太多檔案 -「%s」\n"
+
+msgid "lp: error - no default destination available.\n"
+msgstr "lp:錯誤 - 無預設目的印表機可用。\n"
+
+msgid "lp: error - scheduler not responding!\n"
+msgstr "lp:錯誤 - 排程程式無反應!\n"
+
+#, c-format
+msgid "lp: unable to create temporary file \"%s\" - %s\n"
+msgstr "lp:無法建立暫時檔案「%s」- %s\n"
+
+#, c-format
+msgid "lp: error - unable to write to temporary file \"%s\" - %s\n"
+msgstr "lp:錯誤 - 無法寫入到暫時檔案「%s」- %s\n"
+
+msgid "lp: stdin is empty, so no job has been sent.\n"
+msgstr "lp:標準輸入為空,因而沒有發送任何工作。\n"
+
+#, c-format
+msgid "lp: unable to print file: %s\n"
+msgstr "lp:無法列印檔案:%s\n"
+
+#, c-format
+msgid "request id is %s-%d (%d file(s))\n"
+msgstr "請求識別號為 %s-%d (%d 個檔案)\n"
+
+#, c-format
+msgid "lp: restart-job failed: %s\n"
+msgstr "lp:重新啟動工作時失敗:%s\n"
+
+#, c-format
+msgid "lp: set-job-attributes failed: %s\n"
+msgstr "lp:設置工作屬性時失敗:%s\n"
+
+#, c-format
+msgid "lpinfo: Unable to connect to server: %s\n"
+msgstr "lpinfo:無法連接伺服器:%s\n"
+
+#, c-format
+msgid "lpinfo: Unknown option '%c'!\n"
+msgstr "lpinfo:不明的選項「%c」!\n"
+
+#, c-format
+msgid "lpinfo: Unknown argument '%s'!\n"
+msgstr "lpinfo:不明的引數「%s」!\n"
+
+#, c-format
+msgid "lpinfo: cups-get-devices failed: %s\n"
+msgstr "lpinfo:cups 取得裝置時失敗:%s\n"
+
+#, c-format
+msgid ""
+"Device: uri = %s\n"
+"        class = %s\n"
+"        info = %s\n"
+"        make-and-model = %s\n"
+msgstr ""
+"裝置:uri = %s\n"
+"        類別 = %s\n"
+"        資訊 = %s\n"
+"        廠商與型號 = %s\n"
+
+#, c-format
+msgid "lpinfo: cups-get-ppds failed: %s\n"
+msgstr "lpinfo:cups 取得 PPD 時失敗:%s\n"
+
+#, c-format
+msgid ""
+"Model:  name = %s\n"
+"        natural_language = %s\n"
+"        make-and-model = %s\n"
+msgstr ""
+"型號: 名稱 = %s\n"
+"        自然語言 = %s\n"
+"        廠商與型號 = %s\n"
+
+#, c-format
+msgid "lpmove: Unknown option '%c'!\n"
+msgstr "lpmove:不明的選項「%c」!\n"
+
+#, c-format
+msgid "lpmove: Unknown argument '%s'!\n"
+msgstr "lpmove:不明的引數「%s」!\n"
+
+msgid "Usage: lpmove job dest\n"
+msgstr "用法:lpmove 工作 目的印表機\n"
+
+#, c-format
+msgid "lpmove: Unable to connect to server: %s\n"
+msgstr "lpmove:無法連接伺服器:%s\n"
+
+#, c-format
+msgid "lpmove: move-job failed: %s\n"
+msgstr "lpmove:移動工作時失敗:%s\n"
+
+msgid "lpoptions: Unknown printer or class!\n"
+msgstr "lpoptions:不明的印表機或類別!\n"
+
+msgid "lpoptions: No printers!?!\n"
+msgstr "lpoptions:沒有印表機 !?!\n"
+
+#, c-format
+msgid "lpoptions: Unable to add printer or instance: %s\n"
+msgstr "lpoptions:無法加入印表機或實體:%s\n"
+
+#, c-format
+msgid "lpoptions: Destination %s has no PPD file!\n"
+msgstr "lpoptions:目的印表機 %s 沒有 PPD 檔案!\n"
+
+#, c-format
+msgid "lpoptions: Unable to open PPD file for %s!\n"
+msgstr "lpoptions:無法開啟用於 %s 的 PPD 檔案!\n"
+
+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 ""
+"用法:lpoptions [-h 伺服器] [-E] -d 印表機\n"
+"       lpoptions [-h 伺服器] [-E] [-p 印表機] -l\n"
+"       lpoptions [-h 伺服器] [-E] -p 印表機 -o 選項[=值]…\n"
+"       lpoptions [-h 伺服器] [-E] -x 印表機\n"
+
+msgid "lppasswd: Only root can add or delete passwords!\n"
+msgstr "lppasswd:只有 root 可以加入或刪除密碼!\n"
+
+msgid "Enter old password:"
+msgstr "輸入舊的密碼:"
+
+#, c-format
+msgid "lppasswd: Unable to copy password string: %s\n"
+msgstr "lppasswd:無法複製密碼字串:%s\n"
+
+msgid "Enter password:"
+msgstr "輸入密碼:"
+
+msgid "Enter password again:"
+msgstr "再次輸入密碼:"
+
+msgid "lppasswd: Sorry, passwords don't match!\n"
+msgstr "lppasswd:抱歉,密碼不相符!\n"
+
+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:抱歉,密碼被拒絕。\n"
+" 您的密碼長度必須至少 6 個字元,不可包含\n"
+" 您的使用者名稱,並且必須包含至少一個字母和數字。\n"
+
+msgid "lppasswd: Password file busy!\n"
+msgstr "lppasswd:密碼檔案使用中!\n"
+
+#, c-format
+msgid "lppasswd: Unable to open password file: %s\n"
+msgstr "lppasswd:無法開啟密碼檔案:%s\n"
+
+#, c-format
+msgid "lppasswd: Unable to write to password file: %s\n"
+msgstr "lppasswd:無法寫入密碼檔案:%s\n"
+
+#, c-format
+msgid "lppasswd: user \"%s\" and group \"%s\" do not exist.\n"
+msgstr "lppasswd:使用者「%s」及群組「%s」不存在。\n"
+
+msgid "lppasswd: Sorry, password doesn't match!\n"
+msgstr "lppasswd:抱歉,密碼不相符!\n"
+
+msgid "lppasswd: Password file not updated!\n"
+msgstr "lppasswd:密碼檔案無法更新!\n"
+
+#, c-format
+msgid "lppasswd: failed to backup old password file: %s\n"
+msgstr "lppasswd:備份舊的密碼檔案時失敗:%s\n"
+
+#, c-format
+msgid "lppasswd: failed to rename password file: %s\n"
+msgstr "lppasswd:重新命名密碼檔案時失敗:%s\n"
+
+msgid "Usage: lppasswd [-g groupname]\n"
+msgstr "用法:lppasswd [-g groupname]\n"
+
+msgid ""
+"Usage: lppasswd [-g groupname] [username]\n"
+"       lppasswd [-g groupname] -a [username]\n"
+"       lppasswd [-g groupname] -x [username]\n"
+msgstr ""
+"用法:lppasswd [-g 群組名稱] [使用者名稱]\n"
+"       lppasswd [-g 群組名稱] -a [使用者名稱]\n"
+"       lppasswd [-g 群組名稱] -x [使用者名稱]\n"
+
+msgid "Start Printer"
+msgstr "啟動印表機"
+
+msgid "Stop Printer"
+msgstr "停止印表機"
+
+msgid "Start Class"
+msgstr "啟動類別"
+
+msgid "Stop Class"
+msgstr "停止類別"
+
+msgid "Accept Jobs"
+msgstr "接受工作"
+
+msgid "Reject Jobs"
+msgstr "拒絕工作"
+
+msgid "Purge Jobs"
+msgstr "清除工作"
+
+msgid "Set As Default"
+msgstr "設成預設值"
+
+msgid "Administration"
+msgstr "管理"
+
+msgid "Modify Class"
+msgstr "修改類別"
+
+msgid "Add Class"
+msgstr "加入類別"
+
+msgid ""
+"The class name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"類別名稱最多只能包含 127 個可列印字元,而且不可包含空格、斜線(/),或井字符號"
+"(#)。"
+
+msgid "Unable to modify class:"
+msgstr "無法修改類別:"
+
+msgid "Unable to add class:"
+msgstr "無法加入類別:"
+
+msgid "Modify Printer"
+msgstr "修改印表機"
+
+msgid "Add Printer"
+msgstr "加入印表機"
+
+msgid ""
+"The printer name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"印表機名稱最多只能包含 127 個可列印字元,而且不可包含空格、斜線(/),或井字符"
+"號(#)。"
+
+msgid "Unable to get list of printer drivers:"
+msgstr "無法取得印表機驅動程式清單:"
+
+msgid "Unable to modify printer:"
+msgstr "無法修改印表機:"
+
+msgid "Unable to add printer:"
+msgstr "無法加入印表機:"
+
+msgid "Set Printer Options"
+msgstr "設定印表機選項"
+
+msgid "Missing form variable!"
+msgstr "缺少形式變數!"
+
+msgid "Unable to get PPD file!"
+msgstr "無法取得 PPD 檔案!"
+
+msgid "Unable to open PPD file:"
+msgstr "無法開啟 PPD 檔案:"
+
+msgid "Banners"
+msgstr "橫幅"
+
+msgid "Starting Banner"
+msgstr "開始橫幅"
+
+msgid "Ending Banner"
+msgstr "結束橫幅"
+
+msgid "Policies"
+msgstr "策略"
+
+msgid "Error Policy"
+msgstr "錯誤時策略"
+
+msgid "Operation Policy"
+msgstr "作業時策略"
+
+msgid "PS Binary Protocol"
+msgstr "PS 二進位協定"
+
+msgid "None"
+msgstr "無一"
+
+msgid "Unable to set options:"
+msgstr "無法設定選項:"
+
+msgid "Change Settings"
+msgstr "變更設定值"
+
+msgid "Unable to change server settings:"
+msgstr "無法變更伺服器設定值:"
+
+msgid "Unable to upload cupsd.conf file:"
+msgstr "無法上傳 cupsd.conf 檔案:"
+
+msgid "Edit Configuration File"
+msgstr "編輯組態檔案"
+
+msgid "Unable to create temporary file:"
+msgstr "無法建立暫時檔案:"
+
+msgid "Unable to access cupsd.conf file:"
+msgstr "無法存取 cupsd.conf 檔案:"
+
+msgid "Unable to edit cupsd.conf files larger than 1MB!"
+msgstr "無法編輯 cupsd.conf 檔案大於 1 MB!"
+
+msgid "Delete Class"
+msgstr "刪除類別"
+
+msgid "Unable to delete class:"
+msgstr "無法刪除類別:"
+
+msgid "Delete Printer"
+msgstr "刪除印表機"
+
+msgid "Unable to delete printer:"
+msgstr "無法刪除印表機:"
+
+msgid "Export Printers to Samba"
+msgstr "匯出印表機到 Samba"
+
+msgid "Unable to fork process!"
+msgstr "無法衍生進程!"
+
+msgid "Unable to connect to server!"
+msgstr "無法連接伺服器!"
+
+msgid "Unable to get printer attributes!"
+msgstr "無法取得印表機屬性!"
+
+msgid "Unable to convert PPD file!"
+msgstr "無法轉換 PPD 檔案!"
+
+msgid "Unable to copy Windows 2000 printer driver files!"
+msgstr "無法複製 Windows 2000 印表機驅動程式檔案!"
+
+msgid "Unable to install Windows 2000 printer driver files!"
+msgstr "無法安裝 Windows 2000 印表機驅動程式檔案!"
+
+msgid "Unable to copy Windows 9x printer driver files!"
+msgstr "無法複製 Windows 9x 印表機驅動程式檔案!"
+
+msgid "Unable to install Windows 9x printer driver files!"
+msgstr "無法安裝 Windows 9x 印表機驅動程式檔案!"
+
+msgid "Unable to set Windows printer driver!"
+msgstr "無法設定 Windows 印表機驅動程式!"
+
+msgid "No printer drivers found!"
+msgstr "找不到印表機驅動程式!"
+
+msgid "Unable to execute cupsaddsmb command!"
+msgstr "無法執行 cupsaddsmb 命令!"
+
+#, c-format
+msgid "cupsaddsmb failed with status %d"
+msgstr "cupsaddsmb 失敗時狀態 %d"
+
+#, c-format
+msgid "cupsaddsmb crashed on signal %d"
+msgstr "cupsaddsmb 當機於信號 %d"
+
+msgid "A Samba username is required to export printer drivers!"
+msgstr "需要 Samba 使用者名稱以匯出印表機驅動程式!"
+
+msgid "A Samba password is required to export printer drivers!"
+msgstr "需要 Samba 密碼以匯出印表機驅動程式!"
+
+msgid "Unable to open cupsd.conf file:"
+msgstr "無法開啟 cupsd.conf 檔案:"
+
+msgid "Unable to change printer:"
+msgstr "無法變更印表機:"
+
+msgid "Set Allowed Users"
+msgstr "設定允許的使用者"
+
+msgid "Unable to get printer attributes:"
+msgstr "無法取得印表機屬性:"
+
+msgid "Set Publishing"
+msgstr "設定發布"
+
+msgid "Unable to change printer-is-shared attribute:"
+msgstr "無法變更印表機分享的屬性:"
+
+msgid "Classes"
+msgstr "類別"
+
+msgid "Unable to get class list:"
+msgstr "無法取得類別表列:"
+
+msgid "Unable to get class status:"
+msgstr "無法取得類別狀況:"
+
+msgid "Move Job"
+msgstr "移動工作"
+
+msgid "Unable to find destination for job!"
+msgstr "無法找到此工作之目的印表機!"
+
+msgid "Move All Jobs"
+msgstr "移動所有工作"
+
+msgid "Unable to move job"
+msgstr "無法移動工作"
+
+msgid "Unable to move jobs"
+msgstr "無法移動工作"
+
+msgid "Print Test Page"
+msgstr "列印測試頁"
+
+msgid "Unable to print test page:"
+msgstr "無法列印測試頁:"
+
+msgid "Jobs"
+msgstr "工作"
+
+msgid "Job operation failed:"
+msgstr "工作失敗:"
+
+msgid "Printers"
+msgstr "印表機"
+
+msgid "Unable to get printer list:"
+msgstr "無法取得印表機表列:"
+
+msgid "Unable to get printer status:"
+msgstr "無法取得印表機狀態:"
+
+msgid "OK"
+msgstr "確定"
+
+msgid "Unable to open PPD file"
+msgstr "無法開啟 PPD 檔案"
+
+msgid "NULL PPD file pointer"
+msgstr "空的 PPD 檔案指標"
+
+msgid "Memory allocation error"
+msgstr "記憶體配置錯誤"
+
+msgid "Missing PPD-Adobe-4.x header"
+msgstr "缺少 PPD-Adobe-4.x 頁首"
+
+msgid "Missing value string"
+msgstr "缺少值字串"
+
+msgid "Internal error"
+msgstr "內部錯誤"
+
+msgid "Bad OpenGroup"
+msgstr "不當的 OpenGroup"
+
+msgid "OpenGroup without a CloseGroup first"
+msgstr "CloseGroup 未先於 OpenGroup 而出現"
+
+msgid "Bad OpenUI/JCLOpenUI"
+msgstr "不當的 OpenUI/JCLOpenUI"
+
+msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
+msgstr "CloseUI/JCLCloseUI 未先於 OpenUI/JCLOpenUI 而出現"
+
+msgid "Bad OrderDependency"
+msgstr "不當的 OrderDependency"
+
+msgid "Bad UIConstraints"
+msgstr "不當的 UIConstraints"
+
+msgid "Missing asterisk in column 1"
+msgstr "在第一欄中缺少星號"
+
+msgid "Line longer than the maximum allowed (255 characters)"
+msgstr "列長超過允許的最大值(255 個字元)"
+
+msgid "Illegal control character"
+msgstr "不合法的控制字元"
+
+msgid "Illegal main keyword string"
+msgstr "不合法的主要關鍵字字串"
+
+msgid "Illegal option keyword string"
+msgstr "不合法的選項關鍵字字串"
+
+msgid "Illegal translation string"
+msgstr "不合法的翻譯字串"
+
+msgid "Illegal whitespace character"
+msgstr "不合法的空白字元"
+
+msgid "Bad custom parameter"
+msgstr "不當的自訂參數"
+
+msgid "Unknown"
+msgstr "不明的"
+
+msgid "Custom"
+msgstr "自訂"
+
+msgid "JCL"
+msgstr "工作控制語言(JCL)"
+
+msgid "No authentication information provided!"
+msgstr "未提供任何認證資訊!"
+
+#, c-format
+msgid "Password for %s required to access %s via SAMBA: "
+msgstr "需要 %s 的密碼以透過 SAMBA 存取 %s:"
+
+#, c-format
+msgid "Running command: %s %s -N -U '%s%%%s' -c '%s'\n"
+msgstr "正在執行命令:%s %s -N -U '%s%%%s' -c '%s'\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to run \"%s\": %s\n"
+msgstr "cupsaddsmb:無法運行「%s」:%s\n"
+
+msgid "cupsaddsmb: No Windows printer drivers are installed!\n"
+msgstr "cupsaddsmb:未安裝任何 Windows 印表機驅動程式!\n"
+
+msgid "cupsaddsmb: Warning, no Windows 2000 printer drivers are installed!\n"
+msgstr "cupsaddsmb:警告,未安裝任何 Windows 2000 印表機驅動程式!\n"
+
+#, c-format
+msgid "lpadmin: Printer %s is already a member of class %s.\n"
+msgstr "lpadmin:印表機 %s 已經是類別 %s 的成員。\n"
+
+msgid "lpadmin: No member names were seen!\n"
+msgstr "lpadmin:未發現任何成員名稱!\n"
+
+#, c-format
+msgid "lpadmin: Printer %s is not a member of class %s.\n"
+msgstr "lpadmin:印表機 %s 並非類別 %s 的成員。\n"
+
+#, c-format
+msgid ""
+"Device: uri = %s\n"
+"        class = %s\n"
+"        info = %s\n"
+"        make-and-model = %s\n"
+"        device-id = %s\n"
+msgstr ""
+"裝置:uri = %s\n"
+"        類別 = %s\n"
+"        資訊 = %s\n"
+"        廠商與型號 = %s\n"
+"        裝置識別號 = %s\n"
+
+#, c-format
+msgid ""
+"Model:  name = %s\n"
+"        natural_language = %s\n"
+"        make-and-model = %s\n"
+"        device-id = %s\n"
+msgstr ""
+"型號: 名稱 = %s\n"
+"        自然語言 = %s\n"
+"        廠商與型號 = %s\n"
+"        裝置識別號 = %s\n"
+
+msgid "Usage: lpmove job/src dest\n"
+msgstr "用法:lpmove 工作/來源 目的印表機\n"
+
+msgid "lpstat: Need \"completed\", \"not-completed\", or \"all\" after -W!\n"
+msgstr "lpstat:-W 之後需要「completed」、「not-completed」或「all」!\n"
+
+#, c-format
+msgid "%s accepting requests since %s\n"
+msgstr "%s 從 %s 開始接受請求\n"
+
+#, c-format
+msgid ""
+"%s not accepting requests since %s -\n"
+"\t%s\n"
+msgstr ""
+"%s 從 %s 開始無法接受請求 -\n"
+"\t%s\n"
+
+#, c-format
+msgid "%s/%s accepting requests since %s\n"
+msgstr "%s/%s 從 %s 開始接受請求\n"
+
+#, c-format
+msgid ""
+"%s/%s not accepting requests since %s -\n"
+"\t%s\n"
+msgstr ""
+"%s/%s 從 %s 開始無法接受請求 -\n"
+"\t%s\n"
+
+msgid "lpc> "
+msgstr "lpc> "
+
+#, c-format
+msgid "%s: Unable to contact server!\n"
+msgstr "%s:無法連上伺服器!\n"
+
+#, c-format
+msgid "%s: Error - expected username after '-U' option!\n"
+msgstr "%s:錯誤 - 「-U」選項之後預期為使用者名稱!\n"
+
+#, c-format
+msgid "%s: Error - unknown destination \"%s/%s\"!\n"
+msgstr "%s:錯誤 - 不明的目的印表機「%s/%s」!\n"
+
+#, c-format
+msgid "%s: Unknown destination \"%s\"!\n"
+msgstr "%s:不明的目的印表機「%s」!\n"
+
+#, c-format
+msgid "%s: Error - expected hostname after '-h' option!\n"
+msgstr "%s:錯誤 - 「-h」選項之後預期為主機名稱!\n"
+
+#, c-format
+msgid ""
+"%s: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "%s:錯誤 - %s 環境變數指稱不存在的目的印表機「%s」!\n"
+
+#, c-format
+msgid "%s: error - no default destination available.\n"
+msgstr "%s:錯誤 - 無可用的預設目的印表機。\n"
+
+msgid ""
+"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
+msgstr ""
+"用法:lpq [-P 目的印表機] [-U 使用者名稱] [-h 主機名稱 [:連接埠]] [-l] [+間"
+"隔]\n"
+
+#, c-format
+msgid "%s: Error - expected hostname after '-H' option!\n"
+msgstr "%s:錯誤 - 「-H」選項之後預期為主機名稱!\n"
+
+#, c-format
+msgid "%s: Error - expected value after '-%c' option!\n"
+msgstr "%s:錯誤 - 「-%c」選項之後預期為設定值!\n"
+
+#, c-format
+msgid ""
+"%s: Warning - '%c' format modifier not supported - output may not be "
+"correct!\n"
+msgstr "%s:警告 - 不支援 '%c' 格式修飾鍵 - 輸出可能不正確!\n"
+
+#, c-format
+msgid "%s: error - expected option=value after '-o' option!\n"
+msgstr "%s:錯誤 - 「-o」選項之後預期為選項=值!\n"
+
+#, c-format
+msgid "%s: Error - expected destination after '-P' option!\n"
+msgstr "%s:錯誤 - 「-P」選項之後預期為目的印表機!\n"
+
+#, c-format
+msgid "%s: Error - expected copy count after '-#' option!\n"
+msgstr "%s:錯誤 - 「-#」選項之後預期為複製份數!\n"
+
+#, c-format
+msgid "%s: Error - expected name after '-%c' option!\n"
+msgstr "%s:錯誤 - 「-%c」選項之後預期為名稱!\n"
+
+#, c-format
+msgid "%s: Error - unknown option '%c'!\n"
+msgstr "%s:錯誤 - 不明的選項「%c」!\n"
+
+#, c-format
+msgid "%s: Error - unable to access \"%s\" - %s\n"
+msgstr "%s:錯誤 - 無法存取「%s」- %s\n"
+
+#, c-format
+msgid "%s: Error - too many files - \"%s\"\n"
+msgstr "%s:錯誤 - 太多檔案 -「%s」\n"
+
+#, c-format
+msgid ""
+"%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr "%s:錯誤 - %s 環境變數指稱不存在的目的印表機「%s」!\n"
+
+#, c-format
+msgid "%s: Error - no default destination available.\n"
+msgstr "%s:錯誤 - 無可用的預設目的印表機。\n"
+
+#, c-format
+msgid "%s: Error - scheduler not responding!\n"
+msgstr "%s:錯誤 - 排程程式無反應!\n"
+
+#, c-format
+msgid "%s: Error - unable to create temporary file \"%s\" - %s\n"
+msgstr "%s:錯誤 - 無法建立暫時檔案「%s」- %s\n"
+
+#, c-format
+msgid "%s: Error - unable to write to temporary file \"%s\" - %s\n"
+msgstr "%s:錯誤 - 無法寫入暫時檔案「%s」- %s\n"
+
+#, c-format
+msgid "%s: Error - stdin is empty, so no job has been sent.\n"
+msgstr "%s:錯誤 - 標準輸入為空,因而未發送任何工作。\n"
+
+#, c-format
+msgid "%s: Error - unknown destination \"%s\"!\n"
+msgstr "%s:錯誤 - 不明的目的印表機「%s」!\n"
+
+#, c-format
+msgid "%s: Error - expected reason text after '-r' option!\n"
+msgstr "%s:錯誤 - 「-r」選項之後預期為理由文字!\n"
+
+#, c-format
+msgid "%s: Error - expected username after '-u' option!\n"
+msgstr "%s:錯誤 - 「-u」選項之後預期為使用者名稱!\n"
+
+#, c-format
+msgid "%s: %s failed: %s\n"
+msgstr "%s:%s 失敗:%s\n"
+
+#, c-format
+msgid "%s: Error - expected destination after '-d' option!\n"
+msgstr "%s:錯誤 - 「-d」選項之後預期為目的印表機!\n"
+
+#, c-format
+msgid "%s: Error - expected form after '-f' option!\n"
+msgstr "%s:錯誤 - 「-f」選項之後預期為形式!\n"
+
+#, c-format
+msgid "%s: Warning - form option ignored!\n"
+msgstr "%s:警告 - 已忽略形式選項!\n"
+
+#, c-format
+msgid "%s: Expected job ID after '-i' option!\n"
+msgstr "%s:「-i」選項之後預期為工作識別號!\n"
+
+#, c-format
+msgid "%s: Error - cannot print files and alter jobs simultaneously!\n"
+msgstr "%s:錯誤 - 無法同步列印檔案和改變工作!\n"
+
+#, c-format
+msgid "%s: Error - bad job ID!\n"
+msgstr "%s:錯誤 - 不當的工作識別號!\n"
+
+#, c-format
+msgid "%s: Error - expected copies after '-n' option!\n"
+msgstr "%s:錯誤 - 「-n」選項之後預期為份數!\n"
+
+#, c-format
+msgid "%s: Error - expected option string after '-o' option!\n"
+msgstr "%s:錯誤 - 「-o」選項之後預期為選項字串!\n"
+
+#, c-format
+msgid "%s: Error - expected priority after '-%c' option!\n"
+msgstr "%s:錯誤 - 「-%c」選項之後預期為優先權!\n"
+
+#, c-format
+msgid "%s: Error - priority must be between 1 and 100.\n"
+msgstr "%s:錯誤 - 優先權必須在 1 和 100 之間。\n"
+
+#, c-format
+msgid "%s: Error - expected title after '-t' option!\n"
+msgstr "%s:錯誤 - 「-t」選項之後預期為標題!\n"
+
+#, c-format
+msgid "%s: Error - expected mode list after '-y' option!\n"
+msgstr "%s:錯誤 - 「-y」選項之後預期為模式表列!\n"
+
+#, c-format
+msgid "%s: Warning - mode option ignored!\n"
+msgstr "%s:警告 - 已忽略模式選項!\n"
+
+#, c-format
+msgid "%s: Error - expected hold name after '-H' option!\n"
+msgstr "%s:錯誤 - 「-H」選項之後預期為暫停名稱!\n"
+
+#, c-format
+msgid "%s: Need job ID ('-i jobid') before '-H restart'!\n"
+msgstr "%s:「-H 重新啟動」之前需要工作識別號(「-i jobid」)!\n"
+
+#, c-format
+msgid "%s: Error - expected page list after '-P' option!\n"
+msgstr "%s:錯誤 - 「-P」選項之後預期為頁面表列!\n"
+
+#, c-format
+msgid "%s: Error - expected character set after '-S' option!\n"
+msgstr "%s:錯誤 - 「-S」選項之後預期為字元集!\n"
+
+#, c-format
+msgid "%s: Warning - character set option ignored!\n"
+msgstr "%s:警告 - 已忽略字元集選項!\n"
+
+#, c-format
+msgid "%s: Error - expected content type after '-T' option!\n"
+msgstr "%s:錯誤 - 「-T」選項之後預期為內容類型!\n"
+
+#, c-format
+msgid "%s: Warning - content type option ignored!\n"
+msgstr "%s:警告 - 已忽略內容類型選項!\n"
+
+#, c-format
+msgid ""
+"%s: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr "%s:錯誤 - 如果已提供檔案或工作識別號,就無法從標準輸入列印!\n"
+
+#, c-format
+msgid ""
+"%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' "
+"option!\n"
+msgstr ""
+"%s:錯誤 - 「-W」選項之後需要「completed」、「not-completed」或「all」!\n"
+
+#, c-format
+msgid "%s: Error - expected destination after '-b' option!\n"
+msgstr "%s:錯誤 - 「-b」選項之後預期為目的印表機!\n"
+
+#, c-format
+msgid "%s: Invalid destination name in list \"%s\"!\n"
+msgstr "%s:在表列「%s」中出現無效的目的印表機名稱!\n"
+
+#, c-format
+msgid "%s: Unable to connect to server\n"
+msgstr "%s:無法連接伺服器\n"
+
+msgid "Print Job:"
+msgstr "列印工作:"
+
+msgid "pending"
+msgstr "擱置"
+
+msgid "held"
+msgstr "延遲"
+
+msgid "processing"
+msgstr "處理中"
+
+msgid "stopped"
+msgstr "停止"
+
+msgid "canceled"
+msgstr "取消"
+
+msgid "aborted"
+msgstr "放棄"
+
+msgid "completed"
+msgstr "已完成"
+
+msgid "unknown"
+msgstr "不明"
+
+msgid "untitled"
+msgstr "無標題"
+
+msgid "Printer:"
+msgstr "印表機:"
+
+msgid "idle"
+msgstr "閒置"
+
+msgid "Missing notify-subscription-ids attribute!"
+msgstr "缺少 notify-subscription-ids 屬性!"
+
+msgid "Job subscriptions cannot be renewed!"
+msgstr "工作無法重新訂用!"
+
+msgid "cupsd: Expected config filename after \"-c\" option!\n"
+msgstr "cupsd:「-c」選項之後預期為配置檔案名稱!\n"
+
+msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n"
+msgstr "cupsd:launchd(8) 的支援未被編譯進來,以正常模式運行。\n"
+
+#, c-format
+msgid "cupsd: Unknown option \"%c\" - aborting!\n"
+msgstr "cupsd:不明的選項「%c」- 放棄中!\n"
+
+#, c-format
+msgid "cupsd: Unknown argument \"%s\" - aborting!\n"
+msgstr "cupsd:不明的引數「%s」- 放棄中!\n"
+
+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 ""
+"用法:cupsd [-c 組態檔案] [-f] [-F] [-h] [-l]\n"
+"\n"
+" -c 組態檔案         載入替代的組態檔案\n"
+" -f                  在前景中運行\n"
+" -F                  在前景中以卸離方式運行\n"
+" -h                  顯示此用法訊息\n"
+" -l                  從 launchd(8) 運行 cupsd\n"
+
+#, c-format
+msgid "        WARN    Line %d only contains whitespace!\n"
+msgstr "        警告    列 %d 只含空白!\n"
+
+msgid ""
+"        WARN    File contains a mix of CR, LF, and CR LF line endings!\n"
+msgstr "        警告    檔案含有混合的 CR、LF 和 CR LF 列尾結束符號!\n"
+
+msgid ""
+"        WARN    Non-Windows PPD files should use lines ending with only LF, "
+"not CR LF!\n"
+msgstr ""
+"        警告    非 Windows 的 PPD 檔案列結束應該只使用 LF,而非 CR LF!\n"
+
+msgid "Printer Maintenance"
+msgstr "印表機維護"
+
+msgid "Unable to send maintenance job:"
+msgstr "無法發送維護工作:"
+
+#, c-format
+msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s\n"
+msgstr "cupsaddsmb:沒有任何用於印表機「%s」的 PPD 檔案- %s\n"
+
+#, c-format
+msgid "      **FAIL**  %s %s does not exist!\n"
+msgstr "      ** 失敗 **  %s %s 不存在!\n"
+
+#, c-format
+msgid "      **FAIL**  Bad language \"%s\"!\n"
+msgstr "      ** 失敗 **  不當的語言「%s」!\n"
+
+#, c-format
+msgid "      **FAIL**  Missing \"%s\" translation string for option %s!\n"
+msgstr "      ** 失敗 **  缺少用於選項 %s 的「%s」翻譯字串!\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  Default translation string for option %s contains 8-bit "
+"characters!\n"
+msgstr "      ** 失敗 **  預設用於選項 %s 的翻譯字串含有 8-位元字元!\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  Missing \"%s\" translation string for option %s, choice %s!\n"
+msgstr "      ** 失敗 **  缺少用於選項 %s、選擇 %s 的「%s」翻譯字串!\n"
+
+#, c-format
+msgid ""
+"      **FAIL**  Default translation string for option %s choice %s contains "
+"8-bit characters!\n"
+msgstr ""
+"      ** 失敗 **  預設用於選項 %s、選擇 %s 的翻譯字串含有 8-位元字元!\n"
+
+#, c-format
+msgid "      **FAIL**  Bad cupsFilter value \"%s\"!\n"
+msgstr "      ** 失敗 **  不當的 cupsFilter 值「%s」!\n"
+
+msgid "Help"
+msgstr "求助"
+
+#, c-format
+msgid "Missing value on line %d!\n"
+msgstr "第 %d 列缺少設定值!\n"
+
+#, c-format
+msgid "Missing double quote on line %d!\n"
+msgstr "第 %d 列缺少雙引號!\n"
+
+#, c-format
+msgid "Bad option + choice on line %d!\n"
+msgstr "第 %d 列有不當的選項 + 選擇!\n"
+
+#, c-format
+msgid "Unable to copy Windows 2000 printer driver files (%d)!\n"
+msgstr "無法複製 Windows 2000 印表機驅動程式檔案 (%d)!\n"
+
+#, c-format
+msgid "Unable to copy CUPS printer driver files (%d)!\n"
+msgstr "無法複製 CUPS 印表機驅動程式檔案 (%d)!\n"
+
+#, c-format
+msgid "Unable to install Windows 2000 printer driver files (%d)!\n"
+msgstr "無法安裝 Windows 2000 印表機驅動程式檔案 (%d)!\n"
+
+#, c-format
+msgid "Unable to copy Windows 9x printer driver files (%d)!\n"
+msgstr "無法複製 Windows 9x 印表機驅動程式檔案 (%d)!\n"
+
+#, c-format
+msgid "Unable to install Windows 9x printer driver files (%d)!\n"
+msgstr "無法安裝 Windows 9x 印表機驅動程式檔案 (%d)!\n"
+
+msgid "No Windows printer drivers are installed!\n"
+msgstr "未安裝任何 Windows 印表機驅動程式!\n"
+
+msgid "Warning, no Windows 2000 printer drivers are installed!\n"
+msgstr "警告,未安裝任何 Windows 2000 印表機驅動程式!\n"
+
+#, c-format
+msgid "Unable to set Windows printer driver (%d)!\n"
+msgstr "無法設定 Windows 印表機驅動程式 (%d)!\n"
+
+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 ""
+"用法:cupsaddsmb [選項] 印表機1…印表機N\n"
+"       cupsaddsmb [選項] -a\n"
+"\n"
+" 選項:\n"
+"  -E               加密連接到伺服器\n"
+"  -H samba-server  使用具名的 SAMBA 伺服器\n"
+"  -U samba-user    使用具名的 SAMBA 使用者來驗證\n"
+"  -a               匯出所有印表機\n"
+"  -h cups-server   使用具名的 CUPS 伺服器\n"
+"  -v               詳細的輸出(顯示命令)\n"
+
+#, c-format
+msgid "Unable to copy Windows 2000 printer driver files (%d)!"
+msgstr "無法複製 Windows 2000 印表機驅動程式檔案 (%d)!"
+
+#, c-format
+msgid "Unable to copy CUPS printer driver files (%d)!"
+msgstr "無法複製 CUPS 印表機驅動程式檔案 (%d)!"
+
+#, c-format
+msgid "Unable to install Windows 2000 printer driver files (%d)!"
+msgstr "無法安裝 Windows 2000 印表機驅動程式檔案 (%d)!"
+
+#, c-format
+msgid "Unable to copy Windows 9x printer driver files (%d)!"
+msgstr "無法複製 Windows 9x 印表機驅動程式檔案 (%d)!"
+
+#, c-format
+msgid "Unable to install Windows 9x printer driver files (%d)!"
+msgstr "無法安裝 Windows 9x 印表機驅動程式檔案 (%d)!"
+
+msgid "No Windows printer drivers are installed!"
+msgstr "未安裝任何 Windows 印表機驅動程式!"
+
+msgid "Warning, no Windows 2000 printer drivers are installed!"
+msgstr "警告,未安裝任何 Windows 2000 印表機驅動程式!"
+
+#, c-format
+msgid "open of %s failed: %s"
+msgstr "開啟 %s 時失敗:%s"
+
+#, c-format
+msgid "Running command: %s %s -N -A %s -c '%s'\n"
+msgstr "正在執行命令:%s %s -N -A %s -c「%s」\n"
+
+#, c-format
+msgid "stat of %s failed: %s"
+msgstr "統計 %s 時失敗:%s"
+
+#, c-format
+msgid "Job #%d is already cancelled - can't cancel."
+msgstr "工作 #%d 已經取消 - 無法取消。"
+
+#, c-format
+msgid "Job #%d is already aborted - can't cancel."
+msgstr "工作 #%d 已經放棄 - 無法取消。"
+
+#, c-format
+msgid "Job #%d is already completed - can't cancel."
+msgstr "工作 #%d 已經完成 - 無法取消。"
+
+#, c-format
+msgid ""
+"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%"
+"s:%d%s</A>."
+msgstr ""
+"您必須使用網址 <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A> 來存取此頁面。"
+
+#, c-format
+msgid "Unsupported format '%s'!"
+msgstr "不支援格式「%s」!"
+
+msgid "FAIL\n"
+msgstr "失敗\n"
+
+#, c-format
+msgid ""
+"    Line %d is longer than 255 characters (%d)!\n"
+"        REF: Page 25, Line Length\n"
+msgstr ""
+"    列 %d 長度超過 255 個字元 (%d)!\n"
+"       參考:頁面 25, 列長度\n"
+
+msgid ""
+"    Missing %!PS-Adobe-3.0 on first line!\n"
+"        REF: Page 17, 3.1 Conforming Documents\n"
+msgstr ""
+"    缺少 %!PS-Adobe-3.0 於第一列!\n"
+"       參考:頁面 17, 3.1 符合文件\n"
+
+#, c-format
+msgid ""
+"    Bad %%%%Pages: on line %d!\n"
+"        REF: Page 43, %%%%Pages:\n"
+msgstr ""
+"    不當的 %%%%Pages:於第 %d 列!\n"
+"       參考:頁面 43, %%%%Pages:\n"
+
+#, c-format
+msgid ""
+"    Bad %%%%BoundingBox: on line %d!\n"
+"        REF: Page 39, %%%%BoundingBox:\n"
+msgstr ""
+"    不當的 %%%%BoundingBox:於第 %d 列!\n"
+"       參考:頁面 39, %%%%BoundingBox:\n"
+
+#, c-format
+msgid ""
+"    Bad %%%%Page: on line %d!\n"
+"        REF: Page 53, %%%%Page:\n"
+msgstr ""
+"    不當的 %%%%Page:於第 %d 列!\n"
+"       參考:頁面 53, %%%%Page:\n"
+
+#, c-format
+msgid ""
+"    Missing or bad %%BoundingBox: comment!\n"
+"        REF: Page 39, %%BoundingBox:\n"
+msgstr ""
+"    缺少或不當的 %%BoundingBox:註釋!\n"
+"       參考:頁面 39, %%BoundingBox:\n"
+
+#, c-format
+msgid ""
+"    Missing or bad %%Pages: comment!\n"
+"        REF: Page 43, %%Pages:\n"
+msgstr ""
+"    缺少或不當的 %%Pages:註釋!\n"
+"       參考:頁面 43, %%Pages:\n"
+
+#, c-format
+msgid ""
+"    Missing %%EndComments comment!\n"
+"        REF: Page 41, %%EndComments\n"
+msgstr ""
+"    缺少 %%EndComments 註釋!\n"
+"       參考:頁面 41, %%EndComments\n"
+
+#, c-format
+msgid ""
+"    Missing or bad %%Page: comments!\n"
+"        REF: Page 53, %%Page:\n"
+msgstr ""
+"    缺少或不當的 %%Page:註釋!\n"
+"       參考:頁面 53, %%Page:\n"
+
+#, c-format
+msgid "    Too many %%EndDocument comments!\n"
+msgstr "    太多 %%EndDocument 註釋!\n"
+
+#, c-format
+msgid "    Too many %%BeginDocument comments!\n"
+msgstr "    太多 %%BeginDocument 註釋!\n"
+
+#, c-format
+msgid "    Saw %d lines that exceeded 255 characters!\n"
+msgstr "    發現 %d 列超出了 255 個字元!\n"
+
+msgid "PASS\n"
+msgstr "略過\n"
+
+msgid "    Warning: file contains binary data!\n"
+msgstr "    警告:檔案含有二進位資料!\n"
+
+#, c-format
+msgid "    Warning: obsolete DSC version %.1f in file!\n"
+msgstr "    警告:檔案中有過期的 DSC 版本 %.1f!\n"
+
+#, c-format
+msgid "    Warning: no %%EndComments comment in file!\n"
+msgstr "    警告:檔案中沒有任何 %%EndComments 註釋!\n"
+
+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 ""
+"用法:cupstestdsc [選項] 檔案名稱.ps [… 檔案名稱.ps]\n"
+"       cupstestdsc [選項] -\n"
+"\n"
+" 選項:\n"
+"\n"
+"    -h       顯示程式用法\n"
+"\n"
+"    注意:這個程式只有驗證 DSC 註釋,而不是 PostScript 本身。\n"
+
+#, c-format
+msgid "Password for %s on %s? "
+msgstr "用於 %2$s 上的 %1$s 密碼?"
+
+msgid ""
+"      **FAIL**  1284DeviceId must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+msgstr ""
+"      ** 失敗 **  1284DeviceId 必須是 1284DeviceID!\n"
+"               參考:頁面 72, 區段 5.5\n"
+
+#, c-format
+msgid "Missing value on line %d!"
+msgstr "第 %d 列缺少設定值!"
+
+#, c-format
+msgid "Missing double quote on line %d!"
+msgstr "第 %d 列缺少雙引號!"
+
+#, c-format
+msgid "Bad option + choice on line %d!"
+msgstr "第 %d 列有不當的選項 + 選擇!"
+
+msgid "Empty PPD file!"
+msgstr "空的 PPD 檔案!"
+
+#, c-format
+msgid "Unable to set Windows printer driver (%d)!"
+msgstr "無法設定 Windows 印表機驅動程式 (%d)!"
+
+#, c-format
+msgid "Unable to run \"%s\": %s\n"
+msgstr "無法運行「%s」:%s\n"
+
+#, c-format
+msgid "Job #%d is already canceled - can't cancel."
+msgstr "工作 #%d 已經取消 - 無法取消。"
+
+#, c-format
+msgid "Bad notify-recipient URI \"%s\"!"
+msgstr "不當的 notify-recipient URI「%s」!"
+
+#, c-format
+msgid "notify-recipient URI \"%s\" uses unknown scheme!"
+msgstr "notify-recipient URI「%s」使用不明的方案!"
+
+#, c-format
+msgid "Bad notify-pull-method \"%s\"!"
+msgstr "不當的 notify-pull-method「%s」!"
+
+#, c-format
+msgid ""
+"      **FAIL**  %s must be 1284DeviceID!\n"
+"                REF: Page 72, section 5.5\n"
+msgstr ""
+"      ** 失敗 **  %s 必須是 1284DeviceID!\n"
+"               參考:頁面 72, 區段 5.5\n"
+
+#, c-format
+msgid "lpoptions: Unable to get PPD file for %s: %s\n"
+msgstr "lpoptions:無法取得用於 %s 的 PPD 檔案!:%s\n"
index 144038775cb8b70705ec88be0818d2118ff7b670..b926dfa2f375a4f21b3e276e578baad589c56829 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: cups.list.in 6480 2007-04-27 18:53:20Z mike $"
+# "$Id: cups.list.in 6529 2007-05-08 19:48:20Z mike $"
 #
 #   ESP Package Manager (EPM) file list for the Common UNIX Printing
 #   System (CUPS).
 %subpackage sv
 %description Swedish support
 
+%subpackage zh
+%description Chinese support
+
 %subpackage
 
 
@@ -380,6 +383,8 @@ f 0644 root sys $LOCALEDIR/ja/cups_ja.po locale/cups_ja.po
 f 0644 root sys $LOCALEDIR/pl/cups_pl.po locale/cups_pl.po
 %subpackage sv
 f 0644 root sys $LOCALEDIR/sv/cups_sv.po locale/cups_sv.po
+%subpackage zh
+f 0644 root sys $LOCALEDIR/zh_TW/cups_zh_TW.po locale/cups_zh_TW.po
 %subpackage
 
 d 0755 root sys $DATADIR -
@@ -464,6 +469,9 @@ f 0644 root sys $DATADIR/templates/pl templates/pl/*.tmpl
 %subpackage sv
 d 0755 root sys $DATADIR/templates/sv
 f 0644 root sys $DATADIR/templates/sv templates/sv/*.tmpl
+%subpackage zh
+d 0755 root sys $DATADIR/templates/zh_TW
+f 0644 root sys $DATADIR/templates/zh_TW templates/zh_TW/*.tmpl
 %subpackage
 
 # Config files
@@ -580,6 +588,11 @@ d 0755 root sys $DOCDIR/sv
 f 0644 root sys $DOCDIR/sv doc/sv/*.html
 d 0755 root sys $DOCDIR/sv/images -
 f 0644 root sys $DOCDIR/sv/images doc/sv/images/*.gif
+%subpackage zh
+d 0755 root sys $DOCDIR/zh_TW
+f 0644 root sys $DOCDIR/zh_TW doc/zh_TW/*.html
+d 0755 root sys $DOCDIR/zh_TW/images -
+f 0644 root sys $DOCDIR/zh_TW/images doc/zh_TW/images/*.gif
 %subpackage
 
 # Man pages
@@ -634,15 +647,26 @@ f 0644 root sys $AMANDIR/man$MAN8DIR/cups-lpd.$MAN8EXT man/cups-lpd.$MAN8EXT
 # Startup scripts
 %system darwin
 f 0644 root sys /System/Library/LaunchDaemons/org.cups.cupsd.plist init/org.cups.cupsd.plist
-%postinstall <<EOF
-rm -f /System/Library/StartupItems/PrintingServices/PrintingServices
+d 0755 root sys /System/Library/StartupItems/PrintingServices -
+f 0644 root sys /System/Library/StartupItems/PrintingServices/PrintingServices init/PrintingServices.launchd
+f 0644 root sys /System/Library/StartupItems/PrintingServices/StartupParamters.plist init/StartupParameters.plist
+d 0755 root sys /System/Library/StartupItems/PrintingServices/Resources -
+d 0755 root sys /System/Library/StartupItems/PrintingServices/Resources/English.lproj -
+f 0644 root sys /System/Library/StartupItems/PrintingServices/Resources/English.lproj/Localizable.strings init/Localizable.strings
+%preremove <<EOF
 launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist || exit 0
 killall cupsd
-sleep 1
+EOF
+%postinstall <<EOF
+launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist || exit 0
 launchctl load /System/Library/LaunchDaemons/org.cups.cupsd.plist
+launchctl start org.cups.cupsd
 EOF
 %subpackage lpd
 f 0644 root sys /System/Library/LaunchDaemons/org.cups.cups-lpd.plist init/org.cups.cups-lpd.plist
+%preremove <<EOF
+launchctl unload /System/Library/LaunchDaemons/org.cups.cups-lpd.plist || exit 0
+EOF
 %postinstall <<EOF
 rm -f /etc/xinetd.d/cups-lpd
 launchctl unload /System/Library/LaunchDaemons/org.cups.cups-lpd.plist || exit 0
@@ -659,5 +683,5 @@ f 0644 root sys $XINETD/cups-lpd init/cups-lpd
 %subpackage
 
 #
-# End of "$Id: cups.list.in 6480 2007-04-27 18:53:20Z mike $".
+# End of "$Id: cups.list.in 6529 2007-05-08 19:48:20Z mike $".
 #
index a696ea5ec0fc3219f50addcc5525b2d032b10051..df14b7a353c206b575004de5a75cf5346b557b6f 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: cups.spec.in 6431 2007-04-02 14:31:49Z mike $"
+# "$Id: cups.spec.in 6529 2007-05-08 19:48:20Z mike $"
 #
 #   RPM "spec" file for the Common UNIX Printing System (CUPS).
 #
@@ -121,6 +121,11 @@ Summary: Common UNIX Printing System - Swedish support
 Group: System Environment/Daemons
 Requires: %{name} = %{epoch}:%{version}
 
+%package zh
+Summary: Common UNIX Printing System - Chinese support
+Group: System Environment/Daemons
+Requires: %{name} = %{epoch}:%{version}
+
 %if %{?_with_php:1}%{!?_with_php:0}
 %package php
 Summary: Common UNIX Printing System - PHP support
@@ -183,6 +188,10 @@ UNIX
 The Common UNIX Printing System provides a portable printing layer for 
 UNIX® operating systems. This package provides Swedish support.
 
+%description zh
+The Common UNIX Printing System provides a portable printing layer for 
+UNIX® operating systems. This package provides Chinese support.
+
 %if %{?_with_php:1}%{!?_with_php:0}
 %description php
 The Common UNIX Printing System provides a portable printing layer for 
@@ -510,6 +519,16 @@ rm -rf $RPM_BUILD_ROOT
 /usr/share/cups/templates/sv/*
 /usr/share/locale/sv/cups_sv.po
 
+%files zh
+%defattr(-,root,root)
+%dir /usr/share/doc/cups/zh_TW
+/usr/share/doc/cups/zh_TW/index.html
+%dir /usr/share/doc/cups/zh_TW/images
+/usr/share/doc/cups/zh_TW/images/*
+%dir /usr/share/cups/templates/zh_TW
+/usr/share/cups/templates/zh_TW/*
+/usr/share/locale/zh_TW/cups_zh_TW.po
+
 %if %{?_with_php:1}%{!?_with_php:0}
 %files php
 # PHP
@@ -518,5 +537,5 @@ rm -rf $RPM_BUILD_ROOT
 
 
 #
-# End of "$Id: cups.spec.in 6431 2007-04-02 14:31:49Z mike $".
+# End of "$Id: cups.spec.in 6529 2007-05-08 19:48:20Z mike $".
 #
index 8fa635eb0a1a365eaad1cf125ea9d172865f7cbf..184803b5cc3f414e95b57261088a250b444bccc4 100644 (file)
Binary files a/packaging/installer.gif and b/packaging/installer.gif differ
index 158840a157a9f53da8165d7ea81101f7aa3681db..1a0a065019404c165f0913ff1a460a42491c7315 100644 (file)
Binary files a/packaging/installer.tif and b/packaging/installer.tif differ
index 25650c2ea33ae9dc0848025213332e5c402d1058..dd8c0133a4d8e77a427706ec1ede73e919c8754d 100644 (file)
Binary files a/packaging/installer.xcf.gz and b/packaging/installer.xcf.gz differ
index 18b893c37d256a153279df3c0273241775a2ed12..6c8abf095a645bb5d83286787e8b16cd31d699e6 100644 (file)
@@ -1159,7 +1159,14 @@ void PSOutputDev::writeHeader(int firstPage, int lastPage,
   }
 
   // Tell CUPS pstops filter not to do its own rotation...
-  writePSFmt("%%cupsRotation: %d\n", pageRotate);
+  int cups_rotate = 0;
+  int width = (int)ceil(mediaBox->x2 - mediaBox->x1);
+  int height = (int)ceil(mediaBox->y2 - mediaBox->y1);
+  int imgWidth = (int)ceil(cropBox->x2 - cropBox->x1);
+
+  if (width > height && width > imgWidth) cups_rotate = 90;
+
+  writePSFmt("%%cupsRotation: %d\n", cups_rotate);
 
   writePSFmt("%%Producer: xpdf/pdftops %s\n", xpdfVersion);
   xref->getDocInfo(&info);
@@ -2515,7 +2522,6 @@ GBool PSOutputDev::startPage(int pageNum, GfxState *state) {
       fprintf(stderr, "DEBUG: Page rotate=%d, width=%d, height=%d, imgWidth=%d, imgHeight=%d\n",
               state->getRotate(), width, height, imgWidth, imgHeight);
 
-      rotate = (360 - state->getRotate()) % 360;
       if (rotate == 0 || rotate == 180) {
        if (width > height && width > imgWidth) {
          rotate += 90;
index 5fd8f10cfcd04a0d02c52fe92f11e8d85c2f92d6..e45da7378627648dec2b19725926011b7e913db6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: conf.c 6505 2007-05-03 17:44:22Z mike $"
+ * "$Id: conf.c 6518 2007-05-07 22:17:53Z mike $"
  *
  *   Configuration routines for the Common UNIX Printing System (CUPS).
  *
@@ -2662,14 +2662,14 @@ read_configuration(cups_file_t *fp)     /* I - File to read from */
   
          if (relay->from.type == AUTH_IP)
            snprintf(temp2, sizeof(temp2), "%u.%u.%u.%u/%u.%u.%u.%u",
-                    relay->from.mask.ip.address[0],
-                    relay->from.mask.ip.address[1],
-                    relay->from.mask.ip.address[2],
-                    relay->from.mask.ip.address[3],
-                    relay->from.mask.ip.netmask[0],
-                    relay->from.mask.ip.netmask[1],
-                    relay->from.mask.ip.netmask[2],
-                    relay->from.mask.ip.netmask[3]);
+                    relay->from.mask.ip.address[0] >> 24,
+                    (relay->from.mask.ip.address[0] >> 16) & 255,
+                    (relay->from.mask.ip.address[0] >> 8) & 255,
+                    relay->from.mask.ip.address[0] & 255,
+                    relay->from.mask.ip.netmask[0] >> 24,
+                    (relay->from.mask.ip.netmask[0] >> 16) & 255,
+                    (relay->from.mask.ip.netmask[0] >> 8) & 255,
+                    relay->from.mask.ip.netmask[0] & 255);
          else
            strlcpy(temp2, relay->from.mask.name.name, sizeof(temp2));
   
@@ -3373,5 +3373,5 @@ read_policy(cups_file_t *fp,              /* I - Configuration file */
 
 
 /*
- * End of "$Id: conf.c 6505 2007-05-03 17:44:22Z mike $".
+ * End of "$Id: conf.c 6518 2007-05-07 22:17:53Z mike $".
  */
index 1a7a3931daee6e48d1741f68100283e3c203e000..bd632c7386befb22670947ac48f2d9cac0a17e87 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: cups-driverd.c 6508 2007-05-03 20:07:14Z mike $"
+ * "$Id: cups-driverd.c 6540 2007-05-23 15:25:48Z mike $"
  *
  *   PPD/driver support for the Common UNIX Printing System (CUPS).
  *
@@ -58,11 +58,26 @@ extern cups_encoding_t      _ppdGetEncoding(const char *name);
  * Constants...
  */
 
-#define PPD_SYNC       0x50504433      /* Sync word for ppds.dat (PPD3) */
+#define PPD_SYNC       0x50504434      /* Sync word for ppds.dat (PPD4) */
 #define PPD_MAX_LANG   32              /* Maximum languages */
 #define PPD_MAX_PROD   8               /* Maximum products */
 #define PPD_MAX_VERS   8               /* Maximum versions */
 
+#define PPD_TYPE_POSTSCRIPT    0       /* PostScript PPD */
+#define PPD_TYPE_PDF           1       /* PDF PPD */
+#define PPD_TYPE_RASTER                2       /* CUPS raster PPD */
+#define PPD_TYPE_FAX           3       /* Facsimile/MFD PPD */
+#define PPD_TYPE_UNKNOWN       4       /* Other/hybrid PPD */
+
+static const char *ppd_types[] =
+{
+  "postscript",
+  "pdf",
+  "raster",
+  "fax",
+  "unknown"
+};
+
 
 /*
  * PPD information structures...
@@ -72,6 +87,8 @@ typedef struct                                /**** PPD record ****/
 {
   time_t       mtime;                  /* Modification time */
   size_t       size;                   /* Size in bytes */
+  int          model_number;           /* cupsModelNumber */
+  int          type;                   /* ppd-type */
   char         name[512],              /* PPD name */
                languages[PPD_MAX_LANG][6],
                                        /* LanguageVersion/cupsLanguages */
@@ -110,7 +127,7 @@ static ppd_info_t   *add_ppd(const char *name, const char *language,
                                 const char *make, const char *make_and_model,
                                 const char *device_id, const char *product,
                                 const char *psversion, time_t mtime,
-                                size_t size);
+                                size_t size, int model_number, int type);
 static int             cat_ppd(const char *name, int request_id);
 static int             compare_names(const ppd_info_t *p0,
                                      const ppd_info_t *p1);
@@ -167,7 +184,9 @@ add_ppd(const char *name,           /* I - PPD name */
        const char *product,            /* I - Product */
        const char *psversion,          /* I - PSVersion */
         time_t     mtime,              /* I - Modification time */
-       size_t     size)                /* I - File size */
+       size_t     size,                /* I - File size */
+       int        model_number,        /* I - Model number */
+       int        type)                /* I - Driver type */
 {
   ppd_info_t   *ppd;                   /* PPD */
   char         *recommended;           /* Foomatic driver string */
@@ -210,9 +229,11 @@ add_ppd(const char *name,          /* I - PPD name */
 
   memset(ppd, 0, sizeof(ppd_info_t));
 
-  ppd->found        = 1;
-  ppd->record.mtime = mtime;
-  ppd->record.size  = size;
+  ppd->found               = 1;
+  ppd->record.mtime        = mtime;
+  ppd->record.size         = size;
+  ppd->record.model_number = model_number;
+  ppd->record.type         = type;
 
   strlcpy(ppd->record.name, name, sizeof(ppd->record.name));
   strlcpy(ppd->record.languages[0], language,
@@ -561,17 +582,23 @@ list_ppds(int        request_id,  /* I - Request ID */
                *language,              /* ppd-natural-language option */
                *make,                  /* ppd-make option */
                *make_and_model,        /* ppd-make-and-model option */
+               *model_number_str,      /* ppd-model-number option */
                *product,               /* ppd-product option */
-               *psversion;             /* ppd-psversion option */
-  int          mam_len,                /* Length of ppd-make-and-model */
+               *psversion,             /* ppd-psversion option */
+               *type_str;              /* ppd-type option */
+  int          model_number,           /* ppd-model-number value */
+               type,                   /* ppd-type value */
+               mam_len,                /* Length of ppd-make-and-model */
                device_id_len,          /* Length of ppd-device-id */
-               send_natural_language,  /* Send ppd-natural-language? */
+               send_device_id,         /* Send ppd-device-id? */
                send_make,              /* Send ppd-make? */
                send_make_and_model,    /* Send ppd-make-and-model? */
+               send_model_number,      /* Send ppd-model-number? */
                send_name,              /* Send ppd-name? */
-               send_device_id,         /* Send ppd-device-id? */
+               send_natural_language,  /* Send ppd-natural-language? */
                send_product,           /* Send ppd-product? */
                send_psversion,         /* Send ppd-psversion? */
+               send_type,              /* Send ppd-type? */
                sent_header;            /* Sent the IPP header? */
 
 
@@ -734,7 +761,8 @@ list_ppds(int        request_id,    /* I - Request ID */
   * Add the raw driver...
   */
 
-  add_ppd("raw", "en", "Raw", "Raw Queue", "", "", "", 0, 0);
+  add_ppd("raw", "en", "Raw", "Raw Queue", "", "", "", 0, 0, 0,
+          PPD_TYPE_UNKNOWN);
 
  /*
   * Sort the PPDs by make and model...
@@ -748,14 +776,16 @@ list_ppds(int        request_id,  /* I - Request ID */
   * Send IPP attributes...
   */
 
-  num_options    = cupsParseOptions(opt, 0, &options);
-  requested      = cupsGetOption("requested-attributes", num_options, options);
-  device_id      = cupsGetOption("ppd-device-id", num_options, options);
-  language       = cupsGetOption("ppd-natural-language", num_options, options);
-  make           = cupsGetOption("ppd-make", num_options, options);
-  make_and_model = cupsGetOption("ppd-make-and-model", num_options, options);
-  product        = cupsGetOption("ppd-product", num_options, options);
-  psversion      = cupsGetOption("ppd-psversion", num_options, options);
+  num_options      = cupsParseOptions(opt, 0, &options);
+  requested        = cupsGetOption("requested-attributes", num_options, options);
+  device_id        = cupsGetOption("ppd-device-id", num_options, options);
+  language         = cupsGetOption("ppd-natural-language", num_options, options);
+  make             = cupsGetOption("ppd-make", num_options, options);
+  make_and_model   = cupsGetOption("ppd-make-and-model", num_options, options);
+  model_number_str = cupsGetOption("ppd-model-number", num_options, options);
+  product          = cupsGetOption("ppd-product", num_options, options);
+  psversion        = cupsGetOption("ppd-psversion", num_options, options);
+  type_str         = cupsGetOption("ppd-type", num_options, options);
 
   if (make_and_model)
     mam_len = strlen(make_and_model);
@@ -767,6 +797,27 @@ list_ppds(int        request_id,   /* I - Request ID */
   else
     device_id_len = 0;
 
+  if (model_number_str)
+    model_number = atoi(model_number_str);
+  else
+    model_number = 0;
+
+  if (type_str)
+  {
+    for (type = 0;
+         type < (int)(sizeof(ppd_types) / sizeof(ppd_types[0]));
+        type ++)
+      if (!strcmp(type_str, ppd_types[type]))
+        break;
+
+    if (type >= (int)(sizeof(ppd_types) / sizeof(ppd_types[0])))
+    {
+      fprintf(stderr, "ERROR: [cups-driverd] Bad ppd-type=\"%s\" ignored!\n",
+              type_str);
+      type_str = NULL;
+    }
+  }
+
   if (requested)
     fprintf(stderr, "DEBUG: [cups-driverd] requested-attributes=\"%s\"\n",
            requested);
@@ -782,22 +833,29 @@ list_ppds(int        request_id,  /* I - Request ID */
   if (make_and_model)
     fprintf(stderr, "DEBUG: [cups-driverd] ppd-make-and-model=\"%s\"\n",
            make_and_model);
+  if (model_number_str)
+    fprintf(stderr, "DEBUG: [cups-driverd] ppd-model-number=\"%s\"\n",
+           model_number_str);
   if (product)
     fprintf(stderr, "DEBUG: [cups-driverd] ppd-product=\"%s\"\n",
            product);
   if (psversion)
     fprintf(stderr, "DEBUG: [cups-driverd] ppd-psversion=\"%s\"\n",
            psversion);
+  if (type_str)
+    fprintf(stderr, "DEBUG: [cups-driverd] ppd-type=\"%s\"\n", type_str);
 
   if (!requested || strstr(requested, "all"))
   {
     send_name             = 1;
     send_make             = 1;
     send_make_and_model   = 1;
+    send_model_number     = 1;
     send_natural_language = 1;
     send_device_id        = 1;
     send_product          = 1;
     send_psversion        = 1;
+    send_type             = 1;
   }
   else
   {
@@ -806,10 +864,12 @@ list_ppds(int        request_id,  /* I - Request ID */
                             strstr(requested, ",ppd-make") != NULL ||
                             !strcmp(requested, "ppd-make");
     send_make_and_model   = strstr(requested, "ppd-make-and-model") != NULL;
+    send_model_number     = strstr(requested, "ppd-model-number") != NULL;
     send_natural_language = strstr(requested, "ppd-natural-language") != NULL;
     send_device_id        = strstr(requested, "ppd-device-id") != NULL;
     send_product          = strstr(requested, "ppd-product") != NULL;
     send_psversion        = strstr(requested, "ppd-psversion") != NULL;
+    send_type             = strstr(requested, "ppd-type") != NULL;
   }
 
   puts("Content-Type: application/ipp\n");
@@ -849,6 +909,9 @@ list_ppds(int        request_id,    /* I - Request ID */
                                       make_and_model, mam_len))
       continue;
 
+    if (model_number_str && ppd->record.model_number != model_number)
+      continue;
+
     if (product)
     {
       for (j = 0; j < PPD_MAX_PROD; j ++)
@@ -871,6 +934,9 @@ list_ppds(int        request_id,    /* I - Request ID */
        continue;
     }
 
+    if (type_str && ppd->record.type != type)
+      continue;
+
    /*
     * Send this PPD...
     */
@@ -933,6 +999,14 @@ list_ppds(int        request_id,   /* I - Request ID */
        cupsdSendIPPString(IPP_TAG_TEXT, "", ppd->record.psversions[j]);
     }
 
+    if (send_type)
+      cupsdSendIPPString(IPP_TAG_KEYWORD, "ppd-type",
+                        ppd_types[ppd->record.type]);
+
+    if (send_model_number)
+      cupsdSendIPPInteger(IPP_TAG_INTEGER, "ppd-model-number",
+                         ppd->record.model_number);
+
    /*
     * If we have only requested the ppd-make attribute, then skip
     * the remaining PPDs with this make...
@@ -993,6 +1067,8 @@ load_ppds(const char *d,           /* I - Actual directory */
                device_id[256],         /* 1284DeviceID */
                product[256],           /* Product */
                psversion[256];         /* PSVersion */
+  int          model_number,           /* cupsModelNumber */
+               type;                   /* ppd-type */
   cups_array_t *products,              /* Product array */
                *psversions,            /* PSVersion array */
                *cups_languages;        /* cupsLanguages array */
@@ -1131,6 +1207,8 @@ load_ppds(const char *d,          /* I - Actual directory */
     device_id[0]     = '\0';
     lang_encoding[0] = '\0';
     strcpy(lang_version, "en");
+    model_number     = 0;
+    type             = PPD_TYPE_POSTSCRIPT;
 
     while (cupsFileGets(fp, line, sizeof(line)) != NULL)
     {
@@ -1146,17 +1224,17 @@ load_ppds(const char *d,                /* I - Actual directory */
        sscanf(line, "%*[^\"]\"%255[^\"]", nick_name);
       else if (!strncasecmp(line, "*1284DeviceID:", 14))
        sscanf(line, "%*[^\"]\"%255[^\"]", device_id);
-      else if (!strncasecmp(line, "*Product:", 9))
+      else if (!strncmp(line, "*Product:", 9))
       {
        sscanf(line, "%*[^\"]\"(%255[^)]", product);
        cupsArrayAdd(products, strdup(product));
       }
-      else if (!strncasecmp(line, "*PSVersion:", 11))
+      else if (!strncmp(line, "*PSVersion:", 11))
       {
        sscanf(line, "%*[^\"]\"%255[^\"]", psversion);
        cupsArrayAdd(psversions, strdup(psversion));
       }
-      else if (!strncasecmp(line, "*cupsLanguages:", 15))
+      else if (!strncmp(line, "*cupsLanguages:", 15))
       {
         char   *start;                 /* Start of language */
 
@@ -1184,6 +1262,25 @@ load_ppds(const char *d,         /* I - Actual directory */
          }
        }
       }
+      else if (!strncmp(line, "*cupsFax:", 9))
+      {
+        for (ptr = line + 9; isspace(*ptr & 255); ptr ++);
+
+       if (!strncasecmp(ptr, "true", 4))
+          type = PPD_TYPE_FAX;
+      }
+      else if (!strncmp(line, "*cupsFilter:", 12) &&
+               (type == PPD_TYPE_POSTSCRIPT || type == PPD_TYPE_UNKNOWN))
+      {
+        if (strstr(line + 12, "application/vnd.cups-raster"))
+         type = PPD_TYPE_RASTER;
+        else if (strstr(line + 12, "application/vnd.cups-pdf"))
+         type = PPD_TYPE_PDF;
+       else
+         type = PPD_TYPE_UNKNOWN;
+      }
+      else if (!strncmp(line, "*cupsModelNumber:", 17))
+        sscanf(line, "*cupsModelNumber:%d", &model_number);
       else if (!strncmp(line, "*OpenUI", 7))
       {
        /*
@@ -1240,6 +1337,9 @@ load_ppds(const char *d,          /* I - Actual directory */
       continue;
     }
 
+    if (model_name[0])
+      cupsArrayAdd(products, strdup(model_name));
+
    /*
     * See if we got a manufacturer...
     */
@@ -1366,7 +1466,8 @@ load_ppds(const char *d,          /* I - Actual directory */
       ppd = add_ppd(name, lang_version, manufacturer, make_model, device_id,
                     (char *)cupsArrayFirst(products),
                     (char *)cupsArrayFirst(psversions),
-                    dent->fileinfo.st_mtime, dent->fileinfo.st_size);
+                    dent->fileinfo.st_mtime, dent->fileinfo.st_size,
+                   model_number, type);
 
       if (!ppd)
       {
@@ -1384,9 +1485,11 @@ load_ppds(const char *d,         /* I - Actual directory */
 
       memset(ppd, 0, sizeof(ppd_info_t));
 
-      ppd->found        = 1;
-      ppd->record.mtime = dent->fileinfo.st_mtime;
-      ppd->record.size  = dent->fileinfo.st_size;
+      ppd->found               = 1;
+      ppd->record.mtime        = dent->fileinfo.st_mtime;
+      ppd->record.size         = dent->fileinfo.st_size;
+      ppd->record.model_number = model_number;
+      ppd->record.type         = type;
 
       strlcpy(ppd->record.name, name, sizeof(ppd->record.name));
       strlcpy(ppd->record.make, manufacturer, sizeof(ppd->record.make));
@@ -1463,7 +1566,9 @@ load_drivers(void)
                device_id[128],         /* ppd-device-id */
                languages[128],         /* ppd-natural-language */
                product[128],           /* ppd-product */
-               psversion[128];         /* ppd-psversion */
+               psversion[128],         /* ppd-psversion */
+               type_str[128];          /* ppd-type */
+  int          type;                   /* PPD type */
   ppd_info_t   *ppd;                   /* Newly added PPD */
 
 
@@ -1516,12 +1621,14 @@ load_drivers(void)
         device_id[0] = '\0';
        product[0]   = '\0';
        psversion[0] = '\0';
+       strcpy(type_str, "postscript");
 
         if (sscanf(line, "\"%511[^\"]\"%127s%*[ \t]\"%127[^\"]\""
                         "%*[ \t]\"%127[^\"]\"%*[ \t]\"%127[^\"]\""
-                        "%*[ \t]\"%127[^\"]\"%*[ \t]\"%127[^\"]\"",
+                        "%*[ \t]\"%127[^\"]\"%*[ \t]\"%127[^\"]\""
+                        "%*[ \t]\"%127[^\"]\"",
                   name, languages, make, make_and_model,
-                  device_id, product, psversion) < 4)
+                  device_id, product, psversion, type_str) < 4)
         {
         /*
          * Bad format; strip trailing newline and write an error message.
@@ -1543,8 +1650,21 @@ load_drivers(void)
           if ((start = strchr(languages, ',')) != NULL)
            *start++ = '\0';
 
+         for (type = 0;
+               type < (int)(sizeof(ppd_types) / sizeof(ppd_types[0]));
+              type ++)
+           if (!strcmp(type_str, ppd_types[type]))
+              break;
+
+         if (type >= (int)(sizeof(ppd_types) / sizeof(ppd_types[0])))
+         {
+           fprintf(stderr, "ERROR: [cups-driverd] Bad ppd-type \"%s\" ignored!\n",
+                   type_str);
+           type = PPD_TYPE_UNKNOWN;
+         }
+
           ppd = add_ppd(name, languages, make, make_and_model, device_id,
-                       product, psversion, 0, 0);
+                       product, psversion, 0, 0, 0, type);
 
           if (!ppd)
          {
@@ -1587,5 +1707,5 @@ load_drivers(void)
 
 
 /*
- * End of "$Id: cups-driverd.c 6508 2007-05-03 20:07:14Z mike $".
+ * End of "$Id: cups-driverd.c 6540 2007-05-23 15:25:48Z mike $".
  */
index 373b7c535cab7caf3021e3bd52eb664113282053..9a66bad0d3b315547debffe3ffe60b201e09f393 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: dirsvc.c 6483 2007-04-30 17:16:16Z mike $"
+ * "$Id: dirsvc.c 6538 2007-05-17 18:26:05Z mike $"
  *
  *   Directory services routines for the Common UNIX Printing System (CUPS).
  *
@@ -199,7 +199,7 @@ cupsdDeregisterPrinter(
   */
 
   if (!Browsing || !p->shared ||
-      (p->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT)))
+      (p->external_type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT)))
     return;
 
  /*
@@ -626,7 +626,7 @@ void
 cupsdRegisterPrinter(cupsd_printer_t *p)/* I - Printer */
 {
   if (!Browsing || !BrowseLocalProtocols || !BrowseInterval || !NumBrowsers ||
-      (p->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT)))
+      (p->external_type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT)))
     return;
 
 #ifdef HAVE_LIBSLP
@@ -830,7 +830,7 @@ cupsdSendBrowseList(void)
     for (count = 0, p = (cupsd_printer_t *)cupsArrayFirst(Printers);
          count < max_count && p != NULL;
         p = (cupsd_printer_t *)cupsArrayNext(Printers))
-      if (!(p->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT)) &&
+      if (!(p->external_type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT)) &&
           p->shared && p->browse_time < ut)
         count ++;
 
@@ -856,7 +856,8 @@ cupsdSendBrowseList(void)
 
       if (!p)
         break;
-      else if ((p->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT)) ||
+      else if ((p->external_type & (CUPS_PRINTER_REMOTE |
+                                    CUPS_PRINTER_IMPLICIT)) ||
                !p->shared)
         continue;
       else if (p->browse_time < ut)
@@ -3802,5 +3803,5 @@ update_polling(void)
 
 
 /*
- * End of "$Id: dirsvc.c 6483 2007-04-30 17:16:16Z mike $".
+ * End of "$Id: dirsvc.c 6538 2007-05-17 18:26:05Z mike $".
  */
index bbba0162121e0e672b348544e1d1e02d9b5ef775..9c8e50276e2189ed70175836d2dd9fcef2e76d5c 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: ipp.c 6508 2007-05-03 20:07:14Z mike $"
+ * "$Id: ipp.c 6541 2007-05-23 20:18:00Z mike $"
  *
  *   IPP routines for the Common UNIX Printing System (CUPS) scheduler.
  *
@@ -3411,7 +3411,7 @@ check_quotas(cupsd_client_t  *con,        /* I - Client connection */
   */
 
 #ifdef __APPLE__
-  if (AppleQuotas)
+  if (AppleQuotas && (q = cupsdFindQuota(p, username)) != NULL)
   {
    /*
     * TODO: Define these special page count values as constants!
@@ -4529,7 +4529,7 @@ copy_printer_attrs(
     * Add the CUPS-specific printer-type attribute...
     */
 
-    type = printer->type;
+    type = printer->external_type;
 
     if (printer == DefaultPrinter)
       type |= CUPS_PRINTER_DEFAULT;
@@ -6001,7 +6001,7 @@ get_ppd(cupsd_client_t  *con,             /* I - Client connection */
 
     if (dtype & CUPS_PRINTER_REMOTE)
     {
-      send_ipp_status(con, CUPS_SEE_OTHER, NULL);
+      con->response->request.status.status_code = CUPS_SEE_OTHER;
       ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_URI,
                    "printer-uri", NULL, dest->uri);
       return;
@@ -6018,7 +6018,7 @@ get_ppd(cupsd_client_t  *con,             /* I - Client connection */
         dest = dest->printers[i];
       else
       {
-       send_ipp_status(con, CUPS_SEE_OTHER, NULL);
+        con->response->request.status.status_code = CUPS_SEE_OTHER;
        ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_URI,
                     "printer-uri", NULL, dest->printers[0]->uri);
         return;
@@ -6036,7 +6036,7 @@ get_ppd(cupsd_client_t  *con,             /* I - Client connection */
     {
       send_ipp_status(con, IPP_NOT_FOUND,
                       _("The PPD file \"%s\" could not be opened: %s"),
-                     uri->values[i].string.text, strerror(errno));
+                     uri->values[0].string.text, strerror(errno));
       return;
     }
 
@@ -6044,7 +6044,7 @@ get_ppd(cupsd_client_t  *con,             /* I - Client connection */
 
     con->pipe_pid = 0;
 
-    send_ipp_status(con, IPP_OK, NULL);
+    con->response->request.status.status_code = IPP_OK;
   }
   else
     send_ipp_status(con, IPP_NOT_FOUND,
@@ -6066,8 +6066,10 @@ get_ppds(cupsd_client_t *con)            /* I - Client connection */
                        *language,      /* ppd-natural-language attribute */
                        *make,          /* ppd-make attribute */
                        *model,         /* ppd-make-and-model attribute */
+                       *model_number,  /* ppd-model-number attribute */
                        *product,       /* ppd-product attribute */
                        *psversion,     /* ppd-psverion attribute */
+                       *type,          /* ppd-type attribute */
                        *requested;     /* requested-attributes attribute */
   char                 command[1024],  /* cups-driverd command */
                        options[1024],  /* Options to pass to command */
@@ -6076,10 +6078,13 @@ get_ppds(cupsd_client_t *con)           /* I - Client connection */
                                        /* Escaped ppd-natural-language string */
                        make_str[256],  /* Escaped ppd-make string */
                        model_str[256], /* Escaped ppd-make-and-model string */
+                       model_number_str[256],
+                                       /* ppd-model-number string */
                        product_str[256],
                                        /* Escaped ppd-product string */
                        psversion_str[256],
                                        /* Escaped ppd-psversion string */
+                       type_str[256],  /* Escaped ppd-type string */
                        requested_str[256];
                                        /* String for requested attributes */
 
@@ -6100,17 +6105,20 @@ get_ppds(cupsd_client_t *con)           /* I - Client connection */
   * Run cups-driverd command with the given options...
   */
 
-  limit     = ippFindAttribute(con->request, "limit", IPP_TAG_INTEGER);
-  device    = ippFindAttribute(con->request, "ppd-device-id", IPP_TAG_TEXT);
-  language  = ippFindAttribute(con->request, "ppd-natural-language",
-                               IPP_TAG_LANGUAGE);
-  make      = ippFindAttribute(con->request, "ppd-make", IPP_TAG_TEXT);
-  model     = ippFindAttribute(con->request, "ppd-make-and-model",
-                               IPP_TAG_TEXT);
-  product   = ippFindAttribute(con->request, "ppd-product", IPP_TAG_TEXT);
-  psversion = ippFindAttribute(con->request, "ppd-psversion", IPP_TAG_TEXT);
-  requested = ippFindAttribute(con->request, "requested-attributes",
-                               IPP_TAG_KEYWORD);
+  limit        = ippFindAttribute(con->request, "limit", IPP_TAG_INTEGER);
+  device       = ippFindAttribute(con->request, "ppd-device-id", IPP_TAG_TEXT);
+  language     = ippFindAttribute(con->request, "ppd-natural-language",
+                                  IPP_TAG_LANGUAGE);
+  make         = ippFindAttribute(con->request, "ppd-make", IPP_TAG_TEXT);
+  model        = ippFindAttribute(con->request, "ppd-make-and-model",
+                                  IPP_TAG_TEXT);
+  model_number = ippFindAttribute(con->request, "ppd-model-number",
+                                  IPP_TAG_INTEGER);
+  product      = ippFindAttribute(con->request, "ppd-product", IPP_TAG_TEXT);
+  psversion    = ippFindAttribute(con->request, "ppd-psversion", IPP_TAG_TEXT);
+  type         = ippFindAttribute(con->request, "ppd-type", IPP_TAG_KEYWORD);
+  requested    = ippFindAttribute(con->request, "requested-attributes",
+                                  IPP_TAG_KEYWORD);
 
   if (requested)
     url_encode_attr(requested, requested_str, sizeof(requested_str));
@@ -6137,6 +6145,12 @@ get_ppds(cupsd_client_t *con)            /* I - Client connection */
   else
     model_str[0] = '\0';
 
+  if (model_number)
+    snprintf(model_number_str, sizeof(model_number_str), "ppd-model-number=%d",
+             model_number->values[0].integer);
+  else
+    model_number_str[0] = '\0';
+
   if (product)
     url_encode_attr(product, product_str, sizeof(product_str));
   else
@@ -6147,8 +6161,14 @@ get_ppds(cupsd_client_t *con)            /* I - Client connection */
   else
     psversion_str[0] = '\0';
 
+  if (type)
+    url_encode_attr(type, type_str, sizeof(type_str));
+  else
+    type_str[0] = '\0';
+
   snprintf(command, sizeof(command), "%s/daemon/cups-driverd", ServerBin);
-  snprintf(options, sizeof(options), "list+%d+%d+%s%s%s%s%s%s%s%s%s%s%s%s%s",
+  snprintf(options, sizeof(options),
+           "list+%d+%d+%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",
            con->request->request.op.request_id,
            limit ? limit->values[0].integer : 0,
           requested_str,
@@ -6156,8 +6176,10 @@ get_ppds(cupsd_client_t *con)            /* I - Client connection */
           language ? "%20" : "", language_str,
           make ? "%20" : "", make_str,
           model ? "%20" : "", model_str,
+          model_number ? "%20" : "", model_number_str,
           product ? "%20" : "", product_str,
-          psversion ? "%20" : "", psversion_str);
+          psversion ? "%20" : "", psversion_str,
+          type ? "%20" : "", type_str);
 
   if (cupsdSendCommand(con, command, options, 0))
   {
@@ -8594,21 +8616,14 @@ send_ipp_status(cupsd_client_t *con,    /* I - Client connection */
   char         formatted[1024];        /* Formatted errror message */
 
 
-  if (message)
-  {
-    va_start(ap, message);
-    vsnprintf(formatted, sizeof(formatted),
-              _cupsLangString(con->language, message), ap);
-    va_end(ap);
+  va_start(ap, message);
+  vsnprintf(formatted, sizeof(formatted),
+            _cupsLangString(con->language, message), ap);
+  va_end(ap);
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG, "%s %s: %s",
-                   ippOpString(con->request->request.op.operation_id),
-                   ippErrorString(status), formatted);
-  }
-  else
-    cupsdLogMessage(CUPSD_LOG_DEBUG, "%s %s",
-                   ippOpString(con->request->request.op.operation_id),
-                   ippErrorString(status));
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "%s %s: %s",
+                 ippOpString(con->request->request.op.operation_id),
+                 ippErrorString(status), formatted);
 
   con->response->request.status.status_code = status;
 
@@ -8622,9 +8637,8 @@ send_ipp_status(cupsd_client_t *con,      /* I - Client connection */
     ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE,
                  "attributes-natural-language", NULL, DefaultLanguage);
 
-  if (message)
-    ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_TEXT,
-                "status-message", NULL, formatted);
+  ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_TEXT,
+               "status-message", NULL, formatted);
 }
 
 
@@ -9736,5 +9750,5 @@ validate_user(cupsd_job_t    *job,        /* I - Job */
 
 
 /*
- * End of "$Id: ipp.c 6508 2007-05-03 20:07:14Z mike $".
+ * End of "$Id: ipp.c 6541 2007-05-23 20:18:00Z mike $".
  */
index 79d70912e84dab19e5c3f2814245a913bfef5387..eb82e1ddbf29e4ced08788483f3dd8c0aa18b291 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: main.c 6493 2007-04-30 19:33:31Z mike $"
+ * "$Id: main.c 6514 2007-05-07 18:59:25Z mike $"
  *
  *   Scheduler main loop for the Common UNIX Printing System (CUPS).
  *
@@ -1364,7 +1364,6 @@ launchd_checkout(void)
     unlink(CUPS_KEEPALIVE);
   }
 }
-
 #endif /* HAVE_LAUNCHD */
 
 
@@ -1778,5 +1777,5 @@ usage(int status)                 /* O - Exit status */
 
 
 /*
- * End of "$Id: main.c 6493 2007-04-30 19:33:31Z mike $".
+ * End of "$Id: main.c 6514 2007-05-07 18:59:25Z mike $".
  */
index 411efa49522a098c065bfb90970953850365ffab..2acdd7eb44fcca098d257a4ef87eb147023581a8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: printers.c 6501 2007-04-30 21:53:15Z mike $"
+ * "$Id: printers.c 6539 2007-05-23 15:08:29Z mike $"
  *
  *   Printer routines for the Common UNIX Printing System (CUPS).
  *
 #include <cups/dir.h>
 
 
+/*
+ * Currently Bonjour printers that are shared by CUPS servers are added
+ * manually by the user on Mac OS X systems.  While these printers *are*
+ * remote queues, the current print dialog will not show them if they
+ * (correctly) have the CUPS_PRINTER_REMOTE bit set.  This may change
+ * in future releases, however the code to do this is currently disabled.
+ *
+ * Define BONJOUR_IS_REMOTE to 1 to get the correct behavior...
+ */
+
+#define BONJOUR_IS_REMOTE 0
+
+
 /*
  * Local functions...
  */
@@ -2180,6 +2193,10 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
        cupsdSetString(&p->product, ppd->product);
 #endif /* HAVE_DNSSD */
 
+#if BONJOUR_IS_REMOTE
+        ppdattr = ppdFindAttr(ppd, "APRemoteQueueID", NULL);
+#endif /* BONJOUR_IS_REMOTE */
+
        /*
         * Close the PPD and set the type...
        */
@@ -2187,6 +2204,17 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
        ppdClose(ppd);
 
         printer_type = p->type;
+
+#if BONJOUR_IS_REMOTE
+        if (ppdattr)
+       {
+        /*
+         * This is a shared Bonjour printer...
+         */
+
+         printer_type |= CUPS_PRINTER_REMOTE;
+       }
+#endif /* BONJOUR_IS_REMOTE */
       }
       else if (!access(filename, 0))
       {
@@ -2299,11 +2327,21 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
     }
   }
 
+ /*
+  * Save the local printer type value, which may have the CUPS_PRINTER_REMOTE
+  * bit set.  We use this value when sending the printer-type attribute to
+  * clients so they know whether the printer is really remote.  Doing it
+  * this way prevents the browsing code from timing out hardwired remote
+  * printers...
+  */
+
+  p->external_type = printer_type;
+
  /*
   * Copy the printer options into a browse attributes string we can re-use.
   */
 
-  if (!(p->type & CUPS_PRINTER_REMOTE))
+  if (!(printer_type & CUPS_PRINTER_REMOTE))
   {
     const char *valptr;                /* Pointer into value */
     char       *attrptr;               /* Pointer into attribute string */
@@ -3713,5 +3751,5 @@ write_irix_state(cupsd_printer_t *p)      /* I - Printer to update */
 
 
 /*
- * End of "$Id: printers.c 6501 2007-04-30 21:53:15Z mike $".
+ * End of "$Id: printers.c 6539 2007-05-23 15:08:29Z mike $".
  */
index c822ad157b91d2c35dd21ba2d18ee8132d8d85e9..64dc34f07eb129eca9f6033f4f8180f7717df5bb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: printers.h 6433 2007-04-02 21:50:50Z mike $"
+ * "$Id: printers.h 6541 2007-05-23 20:18:00Z mike $"
  *
  *   Printer definitions for the Common UNIX Printing System (CUPS) scheduler.
  *
@@ -63,7 +63,8 @@ typedef struct cupsd_printer_s
   char         *reasons[16];           /* printer-state-reasons strings */
   time_t       state_time;             /* Time at this state */
   char         *job_sheets[2];         /* Banners/job sheets */
-  cups_ptype_t type;                   /* Printer type (color, small, etc.) */
+  cups_ptype_t type,                   /* Printer type (color, small, etc.) */
+               external_type;          /* Printer type that is advertised */
   char         *browse_attrs;          /* Attributes sent with browse data */
   time_t       browse_expire;          /* Expiration time for printer */
   time_t       browse_time;            /* Last time update was sent/received */
@@ -146,6 +147,8 @@ extern void         cupsdDeleteAllPrinters(void);
 extern void            cupsdDeletePrinter(cupsd_printer_t *p, int update);
 extern cupsd_printer_t *cupsdFindDest(const char *name);
 extern cupsd_printer_t *cupsdFindPrinter(const char *name);
+extern cupsd_quota_t   *cupsdFindQuota(cupsd_printer_t *p,
+                                       const char *username);
 extern void            cupsdFreePrinterUsers(cupsd_printer_t *p);
 extern void            cupsdFreeQuotas(cupsd_printer_t *p);
 extern void            cupsdLoadAllPrinters(void);
@@ -175,5 +178,5 @@ extern void         cupsdWritePrintcap(void);
 
 
 /*
- * End of "$Id: printers.h 6433 2007-04-02 21:50:50Z mike $".
+ * End of "$Id: printers.h 6541 2007-05-23 20:18:00Z mike $".
  */
index e224ebe3a8d97cd93e4db6cec047975c18a06191..5ea8f8a267027b59e80a8faa95157b49e3de9aa7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: quotas.c 6365 2007-03-19 20:56:57Z mike $"
+ * "$Id: quotas.c 6541 2007-05-23 20:18:00Z mike $"
  *
  *   Quota routines for the Common UNIX Printing System (CUPS).
  *
  *
  * Contents:
  *
+ *   cupsdFindQuota()   - Find a quota record.
  *   cupsdFreeQuotas()  - Free quotas for a printer.
  *   cupsdUpdateQuota() - Update quota data for the specified printer and user.
  *   add_quota()        - Add a quota record for this printer and user.
  *   compare_quotas()   - Compare two quota records...
- *   find_quota()       - Find a quota record.
  */
 
 /*
 static cupsd_quota_t   *add_quota(cupsd_printer_t *p, const char *username);
 static int             compare_quotas(const cupsd_quota_t *q1,
                                       const cupsd_quota_t *q2);
-static cupsd_quota_t   *find_quota(cupsd_printer_t *p, const char *username);
+
+
+/*
+ * 'cupsdFindQuota()' - Find a quota record.
+ */
+
+cupsd_quota_t *                                /* O - Quota data */
+cupsdFindQuota(
+    cupsd_printer_t *p,                        /* I - Printer */
+    const char      *username)         /* I - User */
+{
+  cupsd_quota_t        *q,                     /* Quota data pointer */
+               match;                  /* Search data */
+
+
+  if (!p || !username)
+    return (NULL);
+
+  strlcpy(match.username, username, sizeof(match.username));
+
+  if ((q = (cupsd_quota_t *)cupsArrayFind(p->quotas, &match)) != NULL)
+    return (q);
+  else
+    return (add_quota(p, username));
+}
 
 
 /*
@@ -94,7 +118,7 @@ cupsdUpdateQuota(
   if (!p->k_limit && !p->page_limit)
     return (NULL);
 
-  if ((q = find_quota(p, username)) == NULL)
+  if ((q = cupsdFindQuota(p, username)) == NULL)
     return (NULL);
 
   cupsdLogMessage(CUPSD_LOG_DEBUG,
@@ -219,29 +243,5 @@ compare_quotas(const cupsd_quota_t *q1,    /* I - First quota record */
 
 
 /*
- * 'find_quota()' - Find a quota record.
- */
-
-static cupsd_quota_t *                 /* O - Quota data */
-find_quota(cupsd_printer_t *p,         /* I - Printer */
-           const char      *username)  /* I - User */
-{
-  cupsd_quota_t        *q,                     /* Quota data pointer */
-               match;                  /* Search data */
-
-
-  if (!p || !username)
-    return (NULL);
-
-  strlcpy(match.username, username, sizeof(match.username));
-
-  if ((q = (cupsd_quota_t *)cupsArrayFind(p->quotas, &match)) != NULL)
-    return (q);
-  else
-    return (add_quota(p, username));
-}
-
-
-/*
- * End of "$Id: quotas.c 6365 2007-03-19 20:56:57Z mike $".
+ * End of "$Id: quotas.c 6541 2007-05-23 20:18:00Z mike $".
  */
index 966c682505d9179a043163908afb54f8689da1a8..108d4d41c8035aaaea51b64840fe5d197cabf333 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: util.c 5305 2006-03-18 03:05:12Z mike $"
+ * "$Id: util.c 6535 2007-05-16 20:35:05Z mike $"
  *
  *   Mini-daemon utility functions for the Common UNIX Printing System (CUPS).
  *
@@ -194,7 +194,6 @@ cupsdSendIPPHeader(
 }
 
 
-#if 0 /* Not currently used */
 /*
  * 'cupsdSendIPPInteger()' - Send an integer attribute.
  */
@@ -210,7 +209,7 @@ cupsdSendIPPInteger(
 
  /*
   * Send IPP integer value: value tag (1 byte), name length (2 bytes),
-  * name string (without nul), and value (4 bytes)...
+  * name string (without nul), value length (2 bytes), and value (4 bytes)...
   */
 
   putchar(value_tag);
@@ -221,12 +220,14 @@ cupsdSendIPPInteger(
 
   fputs(name, stdout);
 
+  putchar(0);
+  putchar(4);
+
   putchar(value >> 24);
   putchar(value >> 16);
   putchar(value >> 8);
   putchar(value);
 }
-#endif /* 0 */
 
 
 /*
@@ -277,5 +278,5 @@ cupsdSendIPPTrailer(void)
 
 
 /*
- * End of "$Id: util.c 5305 2006-03-18 03:05:12Z mike $".
+ * End of "$Id: util.c 6535 2007-05-16 20:35:05Z mike $".
  */
index 6f013c56a503e5bf5b231483fc4e1489d56370d8..e2f203e19acae44032e59850de56d4e86715cdf8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: cupstestppd.c 6509 2007-05-03 22:58:41Z mike $"
+ * "$Id: cupstestppd.c 6533 2007-05-15 15:54:23Z mike $"
  *
  *   PPD test program for the Common UNIX Printing System (CUPS).
  *
@@ -91,15 +91,18 @@ enum
  * Local functions...
  */
 
-void   check_basics(const char *filename);
-int    check_constraints(ppd_file_t *ppd, int errors, int verbose, int warn);
-int    check_defaults(ppd_file_t *ppd, int errors, int verbose, int warn);
-int    check_filters(ppd_file_t *ppd, const char *root, int errors,
-                     int verbose, int warn);
-int    check_translations(ppd_file_t *ppd, int errors, int verbose, int warn);
-void   show_conflicts(ppd_file_t *ppd);
-void   usage(void);
-int    valid_utf8(const char *s);
+static void    check_basics(const char *filename);
+static int     check_constraints(ppd_file_t *ppd, int errors, int verbose,
+                                 int warn);
+static int     check_defaults(ppd_file_t *ppd, int errors, int verbose,
+                              int warn);
+static int     check_filters(ppd_file_t *ppd, const char *root, int errors,
+                             int verbose, int warn);
+static int     check_translations(ppd_file_t *ppd, int errors, int verbose,\
+                                  int warn);
+static void    show_conflicts(ppd_file_t *ppd);
+static void    usage(void);
+static int     valid_utf8(const char *s);
 
 
 /*
@@ -1589,7 +1592,7 @@ main(int  argc,                           /* I - Number of command-line args */
  * 'check_basics()' - Check for CR LF, mixed line endings, and blank lines.
  */
 
-void
+static void
 check_basics(const char *filename)     /* I - PPD file to check */
 {
   cups_file_t  *fp;                    /* File pointer */
@@ -1674,7 +1677,7 @@ check_basics(const char *filename)        /* I - PPD file to check */
  * 'check_constraints()' - Check UIConstraints in the PPD file.
  */
 
-int                                    /* O - Errors found */
+static int                             /* O - Errors found */
 check_constraints(ppd_file_t *ppd,     /* I - PPD file */
                   int        errors,   /* I - Errors found */
                   int        verbose,  /* I - Verbosity level */
@@ -1758,7 +1761,7 @@ check_constraints(ppd_file_t *ppd,        /* I - PPD file */
  * 'check_defaults()' - Check default option keywords in the PPD file.
  */
 
-int                                    /* O - Errors found */
+static int                             /* O - Errors found */
 check_defaults(ppd_file_t *ppd,                /* I - PPD file */
               int        errors,       /* I - Errors found */
               int        verbose,      /* I - Verbosity level */
@@ -1823,7 +1826,7 @@ check_defaults(ppd_file_t *ppd,           /* I - PPD file */
  * 'check_filters()' - Check filters in the PPD file.
  */
 
-int                                    /* O - Errors found */
+static int                             /* O - Errors found */
 check_filters(ppd_file_t *ppd,         /* I - PPD file */
               const char *root,                /* I - Root directory */
              int        errors,        /* I - Errors found */
@@ -1953,7 +1956,7 @@ check_filters(ppd_file_t *ppd,            /* I - PPD file */
  * 'check_translations()' - Check translations in the PPD file.
  */
 
-int                                    /* O - Errors found */
+static int                             /* O - Errors found */
 check_translations(ppd_file_t *ppd,    /* I - PPD file */
                    int        errors,  /* I - Errors found */
                    int        verbose, /* I - Verbosity level */
@@ -2247,7 +2250,7 @@ check_translations(ppd_file_t *ppd,       /* I - PPD file */
  * 'show_conflicts()' - Show option conflicts in a PPD file.
  */
 
-void
+static void
 show_conflicts(ppd_file_t *ppd)                /* I - PPD to check */
 {
   int          i, j;                   /* Looping variables */
@@ -2347,7 +2350,7 @@ show_conflicts(ppd_file_t *ppd)           /* I - PPD to check */
  * 'usage()' - Show program usage...
  */
 
-void
+static void
 usage(void)
 {
   _cupsLangPuts(stdout,
@@ -2373,7 +2376,7 @@ usage(void)
  * 'valid_utf8()' - Check whether a string contains valid UTF-8 text.
  */
 
-int                                    /* O - 1 if valid, 0 if not */
+static int                             /* O - 1 if valid, 0 if not */
 valid_utf8(const char *s)              /* I - String to check */
 {
   while (*s)
@@ -2446,5 +2449,5 @@ valid_utf8(const char *s)         /* I - String to check */
 
 
 /*
- * End of "$Id: cupstestppd.c 6509 2007-05-03 22:58:41Z mike $".
+ * End of "$Id: cupstestppd.c 6533 2007-05-15 15:54:23Z mike $".
  */
index 01722ab6610f84286ba0273836505dd58711d06a..b32417e73b13cf71d04fcf962c2ac7b451400ae8 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: Makefile 6440 2007-04-03 23:17:17Z mike $"
+# "$Id: Makefile 6521 2007-05-08 02:11:10Z mike $"
 #
 #   Template makefile for the Common UNIX Printing System (CUPS).
 #
@@ -31,6 +31,7 @@ include ../Makedefs
 FILES  =       \
                add-class.tmpl \
                add-printer.tmpl \
+               add-rss-subscription.tmpl \
                admin.tmpl \
                choose-device.tmpl \
                choose-make.tmpl \
@@ -90,6 +91,8 @@ FILES =       \
                search.tmpl \
                set-printer-options-header.tmpl \
                set-printer-options-trailer.tmpl \
+               subscription-added.tmpl \
+               subscription-canceled.tmpl \
                test-page.tmpl \
                trailer.tmpl \
                users.tmpl
@@ -157,5 +160,5 @@ uninstall-languages:
 
 
 #
-# End of "$Id: Makefile 6440 2007-04-03 23:17:17Z mike $".
+# End of "$Id: Makefile 6521 2007-05-08 02:11:10Z mike $".
 #
diff --git a/templates/zh_TW/add-class.tmpl b/templates/zh_TW/add-class.tmpl
new file mode 100644 (file)
index 0000000..33cda9f
--- /dev/null
@@ -0,0 +1,33 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<H2 CLASS="title">加入分類</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">名稱:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">位置:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">描述:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">成員:</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="IMAGE" SRC="/images/button-add-class.gif" ALT="加入分類"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/zh_TW/add-printer.tmpl b/templates/zh_TW/add-printer.tmpl
new file mode 100644 (file)
index 0000000..500045b
--- /dev/null
@@ -0,0 +1,28 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<H2 CLASS="title">加入新的印表機</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">名稱:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(可能包含任何除了 "/"、"#" 和 space 以外可列印的字元)</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">位置:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(容易理解的位置,像是 "實驗室一")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">描述:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(容易理解的描述,像是 "HP LaserJet with Duplexer")</SMALL></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="繼續"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/zh_TW/admin.tmpl b/templates/zh_TW/admin.tmpl
new file mode 100644 (file)
index 0000000..9ea7fd1
--- /dev/null
@@ -0,0 +1,77 @@
+<TABLE CELLPADDING="0" CELLSPACING="0" WIDTH="100%" SUMMARY="管理任務">
+<TR><TD VALIGN="TOP" NOWRAP>
+
+<H2 CLASS="title">印表機</H2>
+
+<P>
+<A HREF="/admin?op=add-printer"><IMG
+SRC="/images/button-add-printer.gif" ALT="加入印表機" CLASS="button"></A>
+<A HREF="/printers/"><IMG SRC="/images/button-manage-printers.gif"
+ALT="管理印表機" CLASS="button"></A>
+{have_samba?<A HREF="/admin/?op=export-samba"><IMG
+SRC="/images/button-export-samba.gif" ALT="匯出印表機到 Samba"
+CLASS="button"></A>:}
+</P>
+
+{#device_uri=0?:<P><B>找到新的印表機:</B></P><UL>{[device_uri]
+<LI><A HREF="/admin?op=add-printer&amp;{device_options}"><IMG
+SRC="/images/button-add-this-printer.gif" ALT="加入此印表機" CLASS="button"
+ALIGN="MIDDLE"></A>
+{device_make_and_model} ({device_info})</LI>
+}</UL>}
+
+<H2 CLASS="title">分類</H2>
+
+<P>
+<A HREF="/admin?op=add-class"><IMG SRC="/images/button-add-class.gif"
+ALT="加入分類" CLASS="button"></A>
+<A HREF="/classes/"><IMG SRC="/images/button-manage-classes.gif"
+ALT="管理分類" CLASS="button"></A>
+</P>
+
+<H2 CLASS="title">工作</H2>
+
+<P>
+<A HREF="/jobs/"><IMG SRC="/images/button-manage-jobs.gif" ALT="管理
+工作" CLASS="button"></A>
+</P>
+
+</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
+
+<H2 CLASS="title">伺服器</H2>
+
+<P>
+<A HREF="/admin?op=config-server"><IMG
+SRC="/images/button-edit-configuration-file.gif" ALT="編輯配置
+檔案" CLASS="button"></A>
+<A HREF="/admin/log/access_log" TARGET="_blank"><IMG
+SRC="/images/button-view-access-log.gif" ALT="檢視存取記錄"
+CLASS="button"></A>
+<A HREF="/admin/log/error_log" TARGET="_blank"><IMG
+SRC="/images/button-view-error-log.gif" ALT="檢視錯誤記錄"
+CLASS="button"></A>
+<A HREF="/admin/log/page_log" TARGET="_blank"><IMG
+SRC="/images/button-view-page-log.gif" ALT="檢視頁面記錄"
+CLASS="button"></A>
+</P>
+
+{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
+<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
+
+<FORM METHOD="POST" ACTION="/admin">
+
+<P><B>基本伺服器設定值:</B></P>
+
+<P><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_PRINTERS" {?remote_printers}> 顯示其他系統分享的印表機<BR>
+<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> 分享連接到此系統的公開印表機<BR>
+<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> 允許遠端管理<BR>
+<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> 允許使用者取消任何工作 (而非只有他們所擁有的)<BR>
+<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> 儲存除錯資訊以便解決問題</P>
+
+<P><INPUT TYPE="IMAGE" SRC="/images/button-change-settings.gif" ALT="變更設定值"></P>
+
+</FORM>}
+
+</TD></TR>
+</TABLE>
diff --git a/templates/zh_TW/choose-device.tmpl b/templates/zh_TW/choose-device.tmpl
new file mode 100644 (file)
index 0000000..5ad4bba
--- /dev/null
@@ -0,0 +1,26 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
+
+<H2 CLASS="title">{printer_name} 的裝置</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">裝置:</TH>
+<TD>
+<SELECT NAME="DEVICE_URI">
+{[device_uri]<OPTION VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}" {?current_device_uri={device_uri}?SELECTED:{current_device_scheme={device_uri}?SELECTED:}}>
+{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}</OPTION>
+}</SELECT>
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="繼續"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/zh_TW/choose-make.tmpl b/templates/zh_TW/choose-make.tmpl
new file mode 100644 (file)
index 0000000..8e76598
--- /dev/null
@@ -0,0 +1,42 @@
+<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
+<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}">
+
+<H2 CLASS="title">{printer_name} 的廠牌/製造商</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">廠牌:</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="IMAGE" SRC="/images/button-continue.gif" ALT="繼續"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>&nbsp;</TD>
+</TR>
+<TR>
+<TH CLASS="label">或是提供 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="IMAGE" SRC="/images/button-{op}.gif" ALT="{op=add-printer?加入印表機:修改印表機}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/zh_TW/choose-model.tmpl b/templates/zh_TW/choose-model.tmpl
new file mode 100644 (file)
index 0000000..202687c
--- /dev/null
@@ -0,0 +1,34 @@
+<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
+<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}">
+
+<H2 CLASS="title">{printer_name} 的型號/驅動程式</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">型號:</TH>
+<TD>
+<SELECT NAME="PPD_NAME" SIZE="10">
+{[ppd_name]<OPTION VALUE="{ppd_name}" {?current_make_and_model={ppd_make_and_model}?SELECTED:}>{ppd_make_and_model} ({ppd_natural_language})
+}</SELECT>
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">或是提供 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="IMAGE" SRC="/images/button-{op}.gif" ALT="{op=add-printer?加入印表機:修改印表機}"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/zh_TW/choose-serial.tmpl b/templates/zh_TW/choose-serial.tmpl
new file mode 100644 (file)
index 0000000..66fae24
--- /dev/null
@@ -0,0 +1,47 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
+
+<H2 CLASS="title">{printer_name} 的序列埠設定值</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">傳輸速率:</TH>
+<TD><SELECT NAME="BAUDRATE">
+{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">同位檢查:</TH>
+<TD><SELECT NAME="PARITY">
+<OPTION VALUE="none" {?parity=none?SELECTED:}>無
+<OPTION VALUE="even" {?parity=even?SELECTED:}>偶
+<OPTION VALUE="odd" {?parity=odd?SELECTED:}>奇
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">資料位元:</TH>
+<TD><SELECT NAME="BITS">
+<OPTION {?bits=8?SELECTED:}>8
+<OPTION {?bits=7?SELECTED:}>7
+</SELECT></TD>
+</TR>
+<TR>
+<TH CLASS="label">流程控制:</TH>
+<TD><SELECT NAME="FLOW">
+<OPTION VALUE="none" {?flow=none?SELECTED:}>無
+<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (軟體)
+<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (硬體)
+<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (硬體)
+</SELECT></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="繼續"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/zh_TW/choose-uri.tmpl b/templates/zh_TW/choose-uri.tmpl
new file mode 100644 (file)
index 0000000..64fc4ab
--- /dev/null
@@ -0,0 +1,42 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{?printer_location}">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{?printer_info}">
+<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
+
+<H2 CLASS="title">{printer_name} 的裝置 URI</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">裝置 URI:</TH>
+<TD><INPUT TYPE="TEXT" SIZE="60" MAXLENGTH="1024" NAME="DEVICE_URI" VALUE="{device_uri}"></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>範例:
+<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>參看 <A HREF="/help/network.html" TARGET="_blank">"網路
+印表機"</A> 來取得正確的 URI 以用於您的印表機。</P>
+
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="繼續"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/zh_TW/class-added.tmpl b/templates/zh_TW/class-added.tmpl
new file mode 100644 (file)
index 0000000..51ca603
--- /dev/null
@@ -0,0 +1 @@
+<P>分類 <A HREF="/classes/{printer_name}">{printer_name}</A> 已經成功加入。
diff --git a/templates/zh_TW/class-confirm.tmpl b/templates/zh_TW/class-confirm.tmpl
new file mode 100644 (file)
index 0000000..1eed0cf
--- /dev/null
@@ -0,0 +1,7 @@
+<P><B>警告:</B> 您確定要刪除分類
+{printer_name} 嗎?</P>
+
+<P ALIGN="CENTER"><A
+HREF="/admin?op=delete-class&printer_name={printer_name}&confirm=yes"><IMG
+SRC="/images/button-delete-class.gif" ALT="刪除分類"
+CLASS="button"></A></P>
diff --git a/templates/zh_TW/class-deleted.tmpl b/templates/zh_TW/class-deleted.tmpl
new file mode 100644 (file)
index 0000000..4551cf8
--- /dev/null
@@ -0,0 +1 @@
+<P>分類 {printer_name} 已經成功刪除。
diff --git a/templates/zh_TW/class-jobs-header.tmpl b/templates/zh_TW/class-jobs-header.tmpl
new file mode 100644 (file)
index 0000000..6a6be7d
--- /dev/null
@@ -0,0 +1 @@
+<H3 CLASS="title">工作</H3>
diff --git a/templates/zh_TW/class-modified.tmpl b/templates/zh_TW/class-modified.tmpl
new file mode 100644 (file)
index 0000000..99b7e04
--- /dev/null
@@ -0,0 +1,2 @@
+<P>Class <A HREF="/classes/{printer_name}">{printer_name}</A> 已經
+成功修改。
diff --git a/templates/zh_TW/classes-header.tmpl b/templates/zh_TW/classes-header.tmpl
new file mode 100644 (file)
index 0000000..eb4e41d
--- /dev/null
@@ -0,0 +1 @@
+<P ALIGN="CENTER">{total=0?沒有分類:顯示 {total} 種分類}的 {#printer_name} 。</P>
diff --git a/templates/zh_TW/classes.tmpl b/templates/zh_TW/classes.tmpl
new file mode 100644 (file)
index 0000000..784cf18
--- /dev/null
@@ -0,0 +1,54 @@
+{#printer_name=0?:
+{[printer_name]
+<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>{default_name={printer_name}? (Default Printer):}
+{?printer_state_message=?:<SPAN CLASS="message">"{printer_state_message}"</SPAN>}</H2>
+
+<TABLE WIDTH="100%" CLASS="button" CELLSPACING="0" CELLPADDING="0" SUMMARY="{printer_name}">
+<TR>
+<TD VALIGN=TOP><A HREF="{printer_uri_supported}">
+<IMG SRC="/images/classes.gif" CLASS="button" ALT=""></A></TD>
+<TD VALIGN=TOP><B>描述:</B> {printer_info}<BR>
+<B>位置:</B> {printer_location}<BR>
+<B>分類狀態:</B> {printer_state=3?閒置:{printer_state=4?處理中:已停止}},
+{printer_is_accepting_jobs=0?拒絕工作:接受工作}, {printer_is_shared=0?未:已}公開。
+{?member_uris=?:<BR>成員: {member_uris}}
+
+<P>
+<A HREF="{printer_uri_supported}?op=print-test-page">
+<IMG SRC="/images/button-print-test-page.gif" ALT="列印測試頁" CLASS="button"></A>
+{printer_state=5?
+<A HREF="{admin_uri}?op=start-class&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-start-class.gif" ALT="開始分類" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=stop-class&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-stop-class.gif" ALT="停止分類" CLASS="button"></A>
+}
+{printer_is_accepting_jobs=0?
+<A HREF="{admin_uri}?op=accept-jobs&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-accept-jobs.gif" ALT="接受工作" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=reject-jobs&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-reject-jobs.gif" ALT="拒絕工作" CLASS="button"></A>
+}
+<A HREF="{admin_uri}?op=purge-jobs&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-cancel-all-jobs.gif" ALT="取消所有工作" CLASS="button"></A>
+{printer_is_shared=0?
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=1&amp;is_class=Y">
+<IMG SRC="/images/button-publish-printer.gif" ALT="公開印表機" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=0&amp;is_class=Y">
+<IMG SRC="/images/button-unpublish-printer.gif" ALT="不公開印表機" CLASS="button"></A>
+}
+<A HREF="{admin_uri}?op=modify-class&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-modify-class.gif" ALT="修改分類" CLASS="button"></A>
+<A HREF="{admin_uri}?op=delete-class&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-delete-class.gif" ALT="刪除分類" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-as-default&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-set-as-default.gif" ALT="設為預設" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-allowed-users&amp;printer_name={%printer_name}&amp;is_class=Y">
+<IMG SRC="/images/button-set-allowed-users.gif" ALT="設定允許的使用者" CLASS="button"></A>
+</P>
+</TD>
+</TR>
+</TABLE>
+}}
diff --git a/templates/zh_TW/edit-config.tmpl.in b/templates/zh_TW/edit-config.tmpl.in
new file mode 100644 (file)
index 0000000..e2d9c60
--- /dev/null
@@ -0,0 +1,91 @@
+<SCRIPT TYPE="text/javascript">
+function reset_config()
+{
+  document.cups.CUPSDCONF.value =
+"# Log general information in error_log - change \\"info\\" to \\"debug\\" for\\n" +
+"# troubleshooting...\\n" +
+"LogLevel info\\n" +
+"\\n" +
+"\\n" +
+"# Administrator user group...\\n" +
+"SystemGroup @CUPS_SYSTEM_GROUPS@\\n" +
+"\\n" +
+"\\n" +
+"# Only listen for connections from the local machine.\\n" +
+"Listen 127.0.0.1:@DEFAULT_IPP_PORT@\\n" +
+"@CUPS_LISTEN_DOMAINSOCKET@\\n" +
+"\\n" +
+"\\n" +
+"# Show shared printers on the local network.\\n" +
+"Browsing On\\n" +
+"BrowseOrder allow,deny\\n" +
+"BrowseAllow @LOCAL\\n" +
+"\\n" +
+"\\n" +
+"# Authenticate against system accounts by default...\\n" +
+"DefaultAuthType Basic\\n" +
+"\\n" +
+"# Restrict access to the server...\\n" +
+"<Location />\\n" +
+"  Order allow,deny\\n" +
+"  Allow localhost\\n" +
+"</Location>\\n" +
+"\\n" +
+"# Restrict access to the admin pages...\\n" +
+"<Location /admin>\\n" +
+"@ENCRYPTION_REQUIRED@\\n" +
+"  Order allow,deny\\n" +
+"  Allow localhost\\n" +
+"</Location>\\n" +
+"\\n" +
+"# Restrict access to configuration files...\\n" +
+"<Location /admin/conf>\\n" +
+"  AuthType Basic\\n" +
+"  Require user @SYSTEM\\n" +
+"  Order allow,deny\\n" +
+"  Allow localhost\\n" +
+"</Location>\\n" +
+"\\n" +
+"# Set the default printer/job policies...\\n" +
+"<Policy default>\\n" +
+"  # Job-related operations must be done by the owner or an adminstrator...\\n" +
+"  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>\\n" +
+"    Require user @OWNER @SYSTEM\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"\\n" +
+"  # All administration operations require an adminstrator to authenticate...\\n" +
+"  <Limit Pause-Printer Resume-Printer Set-Printer-Attributes Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Add-Printer CUPS-Delete-Printer CUPS-Add-Class CUPS-Delete-Class CUPS-Accept-Jobs CUPS-Reject-Jobs CUPS-Set-Default>\\n" +
+"    AuthType Basic\\n" +
+"    Require user @SYSTEM\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"\\n" +
+"  # Only the owner or an administrator can cancel or authenticate a job...\\n" +
+"  <Limit Cancel-Job CUPS-Authenticate-Job>\\n" +
+"    Require user @OWNER @SYSTEM\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"\\n" +
+"  <Limit All>\\n" +
+"    Order deny,allow\\n" +
+"  </Limit>\\n" +
+"</Policy>\\n";
+}
+</SCRIPT>
+
+<H2 CLASS="title">伺服器配置檔案</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="IMAGE" SRC="/images/button-save-changes.gif"
+ALT="儲存變更"> <A
+HREF="javascript:reset_config();"><IMG
+SRC="/images/button-use-default-config.gif" CLASS="button"
+ALT="使用預設配置檔案"></A></P>
+
+</FORM>
diff --git a/templates/zh_TW/error-op.tmpl b/templates/zh_TW/error-op.tmpl
new file mode 100644 (file)
index 0000000..bc7fb8f
--- /dev/null
@@ -0,0 +1,3 @@
+<P>錯誤:</P>
+
+<BLOCKQUOTE>不明的操作 "{op}"!</BLOCKQUOTE>
diff --git a/templates/zh_TW/error.tmpl b/templates/zh_TW/error.tmpl
new file mode 100644 (file)
index 0000000..4e40162
--- /dev/null
@@ -0,0 +1,3 @@
+<P>{?message?{message}:錯誤:}</P>
+
+<BLOCKQUOTE>{error}</BLOCKQUOTE>
diff --git a/templates/zh_TW/header.tmpl.in b/templates/zh_TW/header.tmpl.in
new file mode 100644 (file)
index 0000000..7e731e3
--- /dev/null
@@ -0,0 +1,63 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
+       <!-- Prevent caching of CGI content -->
+       <META HTTP-EQUIV="Expires" CONTENT="now">
+       <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
+       {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
+       <LINK REL="SHORTCUT ICON" HREF="/favicon.ico" TYPE="image/x-icon">
+</HEAD>
+<BODY>
+<TABLE WIDTH="100%" STYLE="height: 100%;" BORDER="0" CELLSPACING="0" CELLPADDING="0" SUMMARY="{title}">
+<TR CLASS="header">
+<TD VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG SRC="/images/top-left.gif" WIDTH="15" HEIGHT="80" ALT=""></TD>
+<TD VALIGN="TOP" WIDTH="55" ROWSPAN="2"><IMG SRC="/images/top-middle.gif" WIDTH="55" HEIGHT="80" ALT=""></TD>
+<TD WIDTH="100%" HEIGHT="60"><H1>{title}</H1></TD>
+<TD ALIGN="RIGHT" VALIGN="TOP" WIDTH="15" ROWSPAN="2"><IMG
+SRC="/images/top-right.gif" WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+<TR CLASS="header"><TD WIDTH="100%" VALIGN="BOTTOM" NOWRAP>
+
+<A CLASS="unsel" HREF="/"><IMG SRC="/images/tab-left.gif"
+WIDTH="4" HEIGHT="4" ALIGN="TOP" BORDER="0"
+ALT="">&nbsp;&nbsp;首頁&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=admin?:un}sel" HREF="/admin"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;管理&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=classes?:un}sel" HREF="/classes/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;分類&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=help?:un}sel" HREF="/help/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;文件/求助&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=jobs?:un}sel" HREF="/jobs/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;工作&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+&nbsp;<A CLASS="{SECTION=printers?:un}sel" HREF="/printers/"><IMG
+SRC="/images/tab-left.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT="">&nbsp;&nbsp;印表機&nbsp;&nbsp;<IMG
+SRC="/images/tab-right.gif" WIDTH="4" HEIGHT="4" ALIGN="TOP"
+BORDER="0" ALT=""></A>
+
+</TD></TR>
+<TR CLASS="page">
+<TD WIDTH="15">&nbsp;</TD>
+<TD COLSPAN="2" WIDTH="100%" STYLE="height: 100%;" VALIGN="TOP" CLASS="page">
diff --git a/templates/zh_TW/help-header.tmpl b/templates/zh_TW/help-header.tmpl
new file mode 100644 (file)
index 0000000..52a34fa
--- /dev/null
@@ -0,0 +1,44 @@
+<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
+{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
+
+<P ALIGN="CENTER"><B>搜尋於
+{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:所有文件}}:</B> <INPUT
+TYPE="TEXT" NAME="QUERY" VALUE="{?QUERY}" SIZE="60"> <INPUT
+TYPE="IMAGE" SRC="/images/button-search.gif" ALT="搜尋">
+<A HREF="/help/{?HELPFILE}{QUERY?{TOPIC??TOPIC={TOPIC}:}:}"><IMG
+SRC="/images/button-clear.gif" ALT="清空" CLASS="button"></A></P>
+
+</FORM>
+
+<!-- Bookmarks -->
+<DIV CLASS="sidebar">
+<H3 CLASS="title">線上說明文件</H3>
+
+<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">所有文件</A></P>
+<HR>
+
+{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
+}
+</DIV>
+
+{QUERY?<P>搜尋結果於 {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:所有文件}}\:</P>
+{QTEXT?<UL>
+{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
+{QTEXT?</UL>:}
+:<P>找不到符合者。</P>}
+<HR NOSHADE>:}
+{HELPTITLE?<H1>{HELPTITLE}
+<A HREF="/help/{HELPFILE}?PRINTABLE=YES" TARGET="_blank"><IMG
+SRC="/images/button-view-printable-version.gif" ALT="檢視可列印版本"
+CLASS="button"></A></H1>:<H1>CUPS 說明頁面</H1>
+
+<P>這是 CUPS 線上說明介面。在上方輸入搜尋字詞
+或是按下任何的文件連結以顯示線上說明資訊。</P>
+
+<P>如果您剛接觸 CUPS,請參閱 "<a
+href="overview.html">CUPS 概觀</a>" 頁面。有經驗的使用者
+應該參閱 "<a href="whatsnew.html">CUPS 1.2 有何新功能</a>" 頁面。</P>
+
+<P><A HREF="http://www.cups.org/">CUPS 首頁</A> 也
+提供許多資源,包括使用者論壇、常見問題的回答,
+以及用來提交錯誤報告與功能需求的表格。</P>}
diff --git a/templates/zh_TW/help-printable.tmpl b/templates/zh_TW/help-printable.tmpl
new file mode 100644 (file)
index 0000000..305112a
--- /dev/null
@@ -0,0 +1,11 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/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="/favicon.ico" TYPE="image/x-icon">
+</HEAD>
+<BODY>
+
+<H1>{HELPTITLE}</H1>
diff --git a/templates/zh_TW/job-cancel.tmpl b/templates/zh_TW/job-cancel.tmpl
new file mode 100644 (file)
index 0000000..d60b15e
--- /dev/null
@@ -0,0 +1 @@
+<P><A HREF="{job_printer_uri}">工作 {job_id}</A> 已經取消。
diff --git a/templates/zh_TW/job-hold.tmpl b/templates/zh_TW/job-hold.tmpl
new file mode 100644 (file)
index 0000000..1a53db4
--- /dev/null
@@ -0,0 +1 @@
+<P><A HREF="{job_printer_uri}">工作 {job_id}</A> 已經延遲列印。
diff --git a/templates/zh_TW/job-move.tmpl b/templates/zh_TW/job-move.tmpl
new file mode 100644 (file)
index 0000000..67fbedc
--- /dev/null
@@ -0,0 +1,22 @@
+<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?移動工作 {job_id}:移動所有工作}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">新目的地:</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="IMAGE" SRC="/images/button-move-job{job_id?:s}.gif" ALT="移動工作"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/zh_TW/job-moved.tmpl b/templates/zh_TW/job-moved.tmpl
new file mode 100644 (file)
index 0000000..b66712c
--- /dev/null
@@ -0,0 +1,2 @@
+<P>{job_id?<A HREF="/jobs/{job_id}">工作 {job_id}</A>:所有工作} 移動至
+<A HREF="{job_printer_uri}">{job_printer_name}</A>。</P>
diff --git a/templates/zh_TW/job-release.tmpl b/templates/zh_TW/job-release.tmpl
new file mode 100644 (file)
index 0000000..8565446
--- /dev/null
@@ -0,0 +1 @@
+<P><A HREF="{job_printer_uri}">工作 {job_id}</A> 已經釋出至列印。
diff --git a/templates/zh_TW/job-restart.tmpl b/templates/zh_TW/job-restart.tmpl
new file mode 100644 (file)
index 0000000..168f533
--- /dev/null
@@ -0,0 +1 @@
+<P><A HREF="{job_printer_uri}">工作 {job_id}</A> 已經重新啟動。
diff --git a/templates/zh_TW/jobs-header.tmpl b/templates/zh_TW/jobs-header.tmpl
new file mode 100644 (file)
index 0000000..52117c4
--- /dev/null
@@ -0,0 +1,15 @@
+<P>{?which_jobs=?<A
+HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=completed"><IMG
+SRC="/images/button-show-completed.gif" CLASS="button" ALT="顯示已完成工作"></A>
+<A HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=all"><IMG
+SRC="/images/button-show-all.gif" CLASS="button" ALT="顯示所有工作">:{which_jobs=all?<A
+HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=completed"><IMG
+SRC="/images/button-show-completed.gif" CLASS="button" ALT="顯示已完成工作"></A>
+<A HREF="{?printer_name=?/jobs:{printer_uri_supported}}"><IMG
+SRC="/images/button-show-active.gif" CLASS="button" ALT="顯示進行中工作">:<A
+HREF="{?printer_name=?/jobs:{printer_uri_supported}}"><IMG
+SRC="/images/button-show-active.gif" CLASS="button" ALT="顯示進行中工作"></A>
+<A HREF="{?printer_name=?/jobs:{printer_uri_supported}}?which_jobs=all"><IMG
+SRC="/images/button-show-all.gif" CLASS="button" ALT="顯示所有工作">}}</A></P>
+
+<P ALIGN="CENTER">{total=0?No jobs:Showing {#job_id} of {total} {?which_jobs=?active:{which_jobs=all?:completed}} job{total=1?:s}}.</P>
diff --git a/templates/zh_TW/jobs.tmpl b/templates/zh_TW/jobs.tmpl
new file mode 100644 (file)
index 0000000..8b17a02
--- /dev/null
@@ -0,0 +1,42 @@
+{#job_id=0?:
+<TABLE CELLPADDING="0" CELLSPACING="0" CLASS="button" WIDTH="100%" SUMMARY="Job List">
+<TR CLASS="data">
+<TH>ID&nbsp;</TH>
+<TH>名稱&nbsp;</TH>
+<TH>使用者&nbsp;</TH>
+<TH>大小&nbsp;</TH>
+<TH>頁數&nbsp;</TH>
+<TH>狀態&nbsp;</TH>
+<TH>控制&nbsp;</TH>
+</TR>
+
+{[job_id]
+<TR CLASS="data" VALIGN="TOP">
+<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}&nbsp;</TD>
+<TD>{?job_name=?不明:{job_name}}&nbsp;</TD>
+<TD>{job_originating_user_name}&nbsp;</TD>
+<TD>{job_k_octets}k&nbsp;</TD>
+<TD>{job_media_sheets_completed=0?不明:{?job_media_sheets_completed}}&nbsp;</TD>
+<TD>{job_state=3?擱置自<BR>{time_at_creation}:{job_state=4?延遲自<BR>{time_at_creation}:
+{job_state=5?處理自<BR>{time_at_processing}:{job_state=6?停止:
+{job_state=7?取消於<BR>{time_at_completed}:{job_state=8?中斷:完成於<BR>{time_at_completed}}}}}}}&nbsp;</TD>
+<TD>
+{job_preserved>0?
+<A HREF="/jobs/?op=restart-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-restart-job.gif" ALT="重新列印工作" CLASS="button"></A>:}
+{job_state=4?
+<A HREF="/jobs/?op=release-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-release-job.gif" ALT="釋出工作" CLASS="button"></A>:}
+{job_state=3?
+<A HREF="/jobs/?op=hold-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-hold-job.gif" ALT="延遲工作" CLASS="button"></A>:}
+{job_state<7?
+<A HREF="/jobs/?op=cancel-job&amp;job_id={job_id}&amp;job_printer_uri={job_printer_uri}">
+<IMG SRC="/images/button-cancel-job.gif" ALT="取消工作" CLASS="button"></A>
+<A HREF="/jobs/?op=move-job&amp;job_id={job_id}"><IMG
+SRC="/images/button-move-job.gif" ALT="移動工作" CLASS="button"></A>:}
+&nbsp;</TD>
+</TR>
+}
+</TABLE>
+}
diff --git a/templates/zh_TW/maintenance.tmpl b/templates/zh_TW/maintenance.tmpl
new file mode 100644 (file)
index 0000000..2e7532c
--- /dev/null
@@ -0,0 +1,2 @@
+<P>送出維護命令;工作 ID 為 <A HREF="/printers/{printer_name}">
+{printer_name}-{job_id}</A>。</P>
diff --git a/templates/zh_TW/modify-class.tmpl b/templates/zh_TW/modify-class.tmpl
new file mode 100644 (file)
index 0000000..3fbaeef
--- /dev/null
@@ -0,0 +1,34 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+
+<H2 CLASS="title">修改分類 {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">名稱:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+{printer_name}</TD>
+</TR>
+<TR>
+<TH CLASS="label">位置:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">描述:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
+</TR>
+<TR>
+<TH CLASS="label">成員:</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="IMAGE" SRC="/images/button-modify-class.gif" ALT="修改分類"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/zh_TW/modify-printer.tmpl b/templates/zh_TW/modify-printer.tmpl
new file mode 100644 (file)
index 0000000..10f33f5
--- /dev/null
@@ -0,0 +1,29 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
+{?device_uri=?:<INPUT TYPE="HIDDEN" NAME="CURRENT_DEVICE_URI" VALUE="{device_uri}">}
+{?printer_make_and_model=?:<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{printer_make_and_model}">}
+
+<H2 CLASS="title">修改印表機 {printer_name}</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">名稱:</TH>
+<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
+</TR>
+<TR>
+<TH CLASS="label">位置:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(容易理解的位置,像是 "實驗室一")</SMALL></TD>
+</TR>
+<TR>
+<TH CLASS="label">描述:</TH>
+<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
+<SMALL>(容易理解的描述,像是 "HP LaserJet with Duplexer")</SMALL></TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-continue.gif" ALT="繼續"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/zh_TW/option-boolean.tmpl b/templates/zh_TW/option-boolean.tmpl
new file mode 100644 (file)
index 0000000..72c8518
--- /dev/null
@@ -0,0 +1,6 @@
+<TR>
+<TH CLASS="label"{conflicted=1? CLASS="conflict":}><A NAME="{keyword}">{keytext}</A>:</TH>
+<TD>
+{[choices]<INPUT TYPE="RADIO" NAME="{keyword}" {choices={defchoice}?CHECKED:} VALUE="{choices}">{text}}
+</TD>
+</TR>
diff --git a/templates/zh_TW/option-conflict.tmpl b/templates/zh_TW/option-conflict.tmpl
new file mode 100644 (file)
index 0000000..70c963b
--- /dev/null
@@ -0,0 +1,7 @@
+<P><B>錯誤:</B> 下列選項之間發生衝突:</P>
+
+<UL>
+{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A></LI>
+}</UL>
+
+<P>請變更一或多個選項以解決衝突。</P>
diff --git a/templates/zh_TW/option-header.tmpl b/templates/zh_TW/option-header.tmpl
new file mode 100644 (file)
index 0000000..cafc9f9
--- /dev/null
@@ -0,0 +1,3 @@
+<H2 CLASS="title">{printer_name}: {group}</H2>
+
+<TABLE>
diff --git a/templates/zh_TW/option-pickmany.tmpl b/templates/zh_TW/option-pickmany.tmpl
new file mode 100644 (file)
index 0000000..d2534af
--- /dev/null
@@ -0,0 +1,6 @@
+<TR>
+<TH CLASS="label"{conflicted=1? CLASS="conflict":}><A NAME="{keyword}">{keytext}</A>:</TH>
+<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
+{[choices]<OPTION {choices={defchoice}?SELECTED:} VALUE="{choices}">{text}}
+</SELECT></TD>
+</TR>
diff --git a/templates/zh_TW/option-pickone.tmpl b/templates/zh_TW/option-pickone.tmpl
new file mode 100644 (file)
index 0000000..08342d0
--- /dev/null
@@ -0,0 +1,6 @@
+<TR>
+<TH CLASS="label"{conflicted=1? CLASS="conflict":}><A NAME="{keyword}">{keytext}</A>:</TH>
+<TD><SELECT NAME="{keyword}">
+{[choices]<OPTION {choices={defchoice}?SELECTED:} VALUE="{choices}">{text}}
+</SELECT></TD>
+</TR>
diff --git a/templates/zh_TW/option-trailer.tmpl b/templates/zh_TW/option-trailer.tmpl
new file mode 100644 (file)
index 0000000..bee811c
--- /dev/null
@@ -0,0 +1,5 @@
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-set-printer-options.gif" ALT="設定印表機選項"></TD>
+</TR>
+</TABLE>
diff --git a/templates/zh_TW/pager.tmpl b/templates/zh_TW/pager.tmpl
new file mode 100644 (file)
index 0000000..1248fbd
--- /dev/null
@@ -0,0 +1,7 @@
+<TABLE WIDTH="100%" CLASS="pager" SUMMARY="Paging Bar">
+<TR>
+       <TD WIDTH="33%">{PREVURL?<A HREF="{PREVURL}"><IMG SRC="/images/button-show-previous.gif" ALT="顯示上一個" CLASS="button"></A>:&nbsp;}</TD>
+       <TD WIDTH="34%" ALIGN="CENTER">{ORDER=dec?<A HREF="{THISURL}&amp;ORDER=asc"><IMG SRC="/images/button-sort-ascending.gif" ALT="遞增排序" CLASS="button"></A>:<A HREF="{THISURL}&amp;ORDER=dec"><IMG SRC="/images/button-sort-descending.gif" ALT="遞減排序" CLASS="button"></A>}</TD>
+       <TD WIDTH="33%" ALIGN="RIGHT">{NEXTURL?<A HREF="{NEXTURL}"><IMG SRC="/images/button-show-next.gif" ALT="顯示下一個" CLASS="button"></A>:&nbsp;}</TD>
+</TR>
+</TABLE>
diff --git a/templates/zh_TW/printer-accept.tmpl b/templates/zh_TW/printer-accept.tmpl
new file mode 100644 (file)
index 0000000..65a73c4
--- /dev/null
@@ -0,0 +1,3 @@
+<P>{is_class?分類:印表機} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+現在準備接受工作。</P>
diff --git a/templates/zh_TW/printer-added.tmpl b/templates/zh_TW/printer-added.tmpl
new file mode 100644 (file)
index 0000000..b81b1f7
--- /dev/null
@@ -0,0 +1,2 @@
+<P>印表機 <A HREF="/printers/{printer_name}">{printer_name}</A> 已經成功
+加入。
diff --git a/templates/zh_TW/printer-configured.tmpl b/templates/zh_TW/printer-configured.tmpl
new file mode 100644 (file)
index 0000000..5a30980
--- /dev/null
@@ -0,0 +1,2 @@
+<P>印表機 <A HREF="/printers/{printer_name}">{printer_name}</A> 已經
+成功配置。
diff --git a/templates/zh_TW/printer-confirm.tmpl b/templates/zh_TW/printer-confirm.tmpl
new file mode 100644 (file)
index 0000000..e6b0a98
--- /dev/null
@@ -0,0 +1,6 @@
+<P><B>警告:</B> 您確定要刪除印表機 {printer_name} 嗎?</P>
+
+<P ALIGN="CENTER"><A
+HREF="/admin?op=delete-printer&printer_name={printer_name}&confirm=yes"><IMG
+SRC="/images/button-delete-printer.gif" ALT="刪除印表機"
+CLASS="button"></A></P>
diff --git a/templates/zh_TW/printer-default.tmpl b/templates/zh_TW/printer-default.tmpl
new file mode 100644 (file)
index 0000000..7c26e78
--- /dev/null
@@ -0,0 +1,6 @@
+<P>{is_class?分類:印表機} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+已被設為伺服器上的預設印表機。</P>
+
+<BLOCKQUOTE><B>注意:</B> 任何經由 <TT>lpoptions</TT> 命令所設定的使用者預設值,
+將會蓋過此一設定值。</BLOCKQUOTE>
diff --git a/templates/zh_TW/printer-deleted.tmpl b/templates/zh_TW/printer-deleted.tmpl
new file mode 100644 (file)
index 0000000..00ad550
--- /dev/null
@@ -0,0 +1 @@
+<P>印表機 {printer_name} 已經成功刪除。
diff --git a/templates/zh_TW/printer-jobs-header.tmpl b/templates/zh_TW/printer-jobs-header.tmpl
new file mode 100644 (file)
index 0000000..6a6be7d
--- /dev/null
@@ -0,0 +1 @@
+<H3 CLASS="title">工作</H3>
diff --git a/templates/zh_TW/printer-modified.tmpl b/templates/zh_TW/printer-modified.tmpl
new file mode 100644 (file)
index 0000000..43a72f6
--- /dev/null
@@ -0,0 +1,2 @@
+<P>印表機 <A HREF="/printers/{printer_name}">{printer_name}</A> 已經成功
+修改。
diff --git a/templates/zh_TW/printer-purge.tmpl b/templates/zh_TW/printer-purge.tmpl
new file mode 100644 (file)
index 0000000..e3d0948
--- /dev/null
@@ -0,0 +1,3 @@
+<P>{is_class?分類:印表機} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+的所有工作都已被清除。</P>
diff --git a/templates/zh_TW/printer-reject.tmpl b/templates/zh_TW/printer-reject.tmpl
new file mode 100644 (file)
index 0000000..3035a00
--- /dev/null
@@ -0,0 +1,3 @@
+<P>{is_class?分類:印表機} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+已不再接受工作。</P>
diff --git a/templates/zh_TW/printer-start.tmpl b/templates/zh_TW/printer-start.tmpl
new file mode 100644 (file)
index 0000000..d66c8c9
--- /dev/null
@@ -0,0 +1,3 @@
+<P>{is_class?分類:印表機} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+已經啟動。</P>
diff --git a/templates/zh_TW/printer-stop.tmpl b/templates/zh_TW/printer-stop.tmpl
new file mode 100644 (file)
index 0000000..6df0fa8
--- /dev/null
@@ -0,0 +1,3 @@
+<P>{is_class?Class:Printer} <A
+HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+已經停止。</P>
diff --git a/templates/zh_TW/printers-header.tmpl b/templates/zh_TW/printers-header.tmpl
new file mode 100644 (file)
index 0000000..4ec355f
--- /dev/null
@@ -0,0 +1 @@
+<P ALIGN="CENTER">{total=0?沒有任何印表機:顯示 {total} 台印表機中的 {#printer_name}}。</P>
diff --git a/templates/zh_TW/printers.tmpl b/templates/zh_TW/printers.tmpl
new file mode 100644 (file)
index 0000000..24f6ad7
--- /dev/null
@@ -0,0 +1,64 @@
+{printer_type?:}{#printer_name=0?:
+{[printer_name]
+<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>{default_name={printer_name}? (Default Printer):}
+{?printer_state_message=?:<SPAN CLASS="message">"{printer_state_message}"</SPAN>}</H2>
+
+<TABLE WIDTH="100%" CLASS="button" CELLSPACING="0" CELLPADDING="0" SUMMARY="{printer_name}">
+<TR>
+<TD VALIGN="TOP"><A HREF="{printer_uri_supported}">
+<IMG SRC="/images/printer-{printer_state=3?idle:{printer_state=4?processing:stopped}}.gif" CLASS="button" ALT=""></A>
+</TD>
+<TD VALIGN="TOP"><B>描述:</B> {printer_info}<BR>
+<B>位置:</B> {printer_location}<BR>
+<B>型號:</B> {printer_make_and_model}<BR>
+<B>狀態:</B> {printer_state=3?閒置:{printer_state=4?處理中:已停止}},
+{printer_is_accepting_jobs=0?正在拒絕工作:正在接受工作}, {printer_is_shared=0?未:} 公開。
+{?device_uri=?:<BR><B>裝置 URI:</B> {device_uri}}
+
+<P>
+<A HREF="{printer_uri_supported}?op=print-test-page">
+<IMG SRC="/images/button-print-test-page.gif" ALT="印表測試頁" CLASS="button"></A>
+{?cupscommand=1?<A HREF="{printer_uri_supported}?op=clean-print-heads">
+<IMG SRC="/images/button-clean-print-heads.gif" ALT="清理列印頭" CLASS="button"></A>
+<A HREF="{printer_uri_supported}?op=print-self-test-page">
+<IMG SRC="/images/button-print-self-test-page.gif" ALT="列印自我測試頁" CLASS="button"></A>:}
+{printer_state=5?
+<A HREF="{admin_uri}?op=start-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-start-printer.gif" ALT="啟動印表機" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=stop-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-stop-printer.gif" ALT="停止印表機" CLASS="button"></A>
+}
+{printer_is_accepting_jobs=0?
+<A HREF="{admin_uri}?op=accept-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-accept-jobs.gif" ALT="接受工作" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=reject-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-reject-jobs.gif" ALT="拒絕工作" CLASS="button"></A>
+}
+<A HREF="{printer_uri_supported}?op=move-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-move-jobs.gif" ALT="移動所有工作" CLASS="button"></A>
+<A HREF="{admin_uri}?op=purge-jobs&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-cancel-all-jobs.gif" ALT="取消所有工作" CLASS="button"></A>
+{printer_is_shared=0?
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=1">
+<IMG SRC="/images/button-publish-printer.gif" ALT="公開印表機" CLASS="button"></A>
+:
+<A HREF="{admin_uri}?op=set-sharing&amp;printer_name={%printer_name}&amp;shared=0">
+<IMG SRC="/images/button-unpublish-printer.gif" ALT="不公開印表機" CLASS="button"></A>
+}
+<A HREF="{admin_uri}?op=modify-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-modify-printer.gif" ALT="修改印表機" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-printer-options&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-set-printer-options.gif" ALT="設定印表機選項" CLASS="button"></A>
+<A HREF="{admin_uri}?op=delete-printer&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-delete-printer.gif" ALT="刪除印表機" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-as-default&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-set-as-default.gif" ALT="設為預設印表機" CLASS="button"></A>
+<A HREF="{admin_uri}?op=set-allowed-users&amp;printer_name={%printer_name}">
+<IMG SRC="/images/button-set-allowed-users.gif" ALT="設定允許的使用者" CLASS="button"></A>
+</P>
+</TD>
+</TR>
+</TABLE>
+}}
diff --git a/templates/zh_TW/restart.tmpl b/templates/zh_TW/restart.tmpl
new file mode 100644 (file)
index 0000000..06a35ab
--- /dev/null
@@ -0,0 +1 @@
+<p>請稍待,伺服器重新啟動中…</p>
diff --git a/templates/zh_TW/samba-export.tmpl b/templates/zh_TW/samba-export.tmpl
new file mode 100644 (file)
index 0000000..4e08162
--- /dev/null
@@ -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">匯出印表機至 Samba</H2>
+
+{error?<P>無法匯出印表機至 Samba\:</P>
+<BLOCKQUOTE>{error}</BLOCKQUOTE>
+<P>參閱 <A HREF="/admin/log/error_log"
+TARGET="_blank">error_log</A> 檔案以獲得更多資訊。</P>:
+<P>此頁允許您匯出印表機至 Samba,以便
+Windows 客戶端可以經由他們桌面上的 <VAR>Network
+Neighborhood</VAR> 或 <VAR>Network Places</VAR> 圖示
+來存取它們。之前您必須安裝 Windows PostScript
+印表機驅動程式,描述請見 <A HREF="/help/man-cupsaddsmb.html"
+TARGET="_blank">cupsaddsmb(8)</A> 說明頁面。</P>}
+
+<TABLE>
+<TR>
+<TH CLASS="label">印表機:</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()"> 匯出所有印表機
+</TD>
+</TR>
+<TR>
+<TH CLASS="label">Samba 使用者名稱:</TH>
+<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (必要)</TD>
+</TR>
+<TR>
+<TH CLASS="label">Samba 密碼:</TH>
+<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (必要)</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD><INPUT TYPE="IMAGE" SRC="/images/button-export-samba.gif"
+ALT="匯出印表機至 Samba"></TD>
+</TR>
+</TABLE>
+
+</FORM>
diff --git a/templates/zh_TW/samba-exported.tmpl b/templates/zh_TW/samba-exported.tmpl
new file mode 100644 (file)
index 0000000..63843c6
--- /dev/null
@@ -0,0 +1 @@
+<P>印表機成功匯出至 samba。</P>
diff --git a/templates/zh_TW/search.tmpl b/templates/zh_TW/search.tmpl
new file mode 100644 (file)
index 0000000..5389353
--- /dev/null
@@ -0,0 +1,13 @@
+<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>搜尋於
+{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?分類:{SECTION=jobs?工作:印表機}}}:</B>
+<INPUT TYPE="TEXT" NAME="QUERY" VALUE="{?QUERY}" SIZE="60"> <INPUT
+TYPE="IMAGE" SRC="/images/button-search.gif" ALT="Search">
+<A
+HREF="/{SECTION}/{?SEARCH_DEST}{WHICH_JOBS??WHICH_JOBS={WHICH_JOBS}{ORDER?&amp;ORDER={ORDER}:}:{ORDER??ORDER={ORDER}:}}"><IMG
+SRC="/images/button-clear.gif" ALT="Clear" CLASS="button"></A></P>
+
+</FORM>
diff --git a/templates/zh_TW/set-printer-options-header.tmpl b/templates/zh_TW/set-printer-options-header.tmpl
new file mode 100644 (file)
index 0000000..864f9f0
--- /dev/null
@@ -0,0 +1,3 @@
+<FORM METHOD="POST" ACTION="/admin">
+<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
+<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
diff --git a/templates/zh_TW/set-printer-options-trailer.tmpl b/templates/zh_TW/set-printer-options-trailer.tmpl
new file mode 100644 (file)
index 0000000..a3d1e1f
--- /dev/null
@@ -0,0 +1 @@
+</FORM>
diff --git a/templates/zh_TW/test-page.tmpl b/templates/zh_TW/test-page.tmpl
new file mode 100644 (file)
index 0000000..a134695
--- /dev/null
@@ -0,0 +1,2 @@
+<P>已送出測試頁;工作 ID 為 <A HREF="/{SECTION}/{printer_name}">
+{printer_name}-{job_id}</A>。</P>
diff --git a/templates/zh_TW/trailer.tmpl b/templates/zh_TW/trailer.tmpl
new file mode 100644 (file)
index 0000000..3346804
--- /dev/null
@@ -0,0 +1,21 @@
+</TD>
+<TD WIDTH="15">&nbsp;</TD>
+</TR>
+<TR CLASS="trailer">
+<TD VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-left.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+<TD COLSPAN="2" WIDTH="100%" STYLE="padding: 5;">
+
+<P><SMALL>Common UNIX Printing System、CUPS 以及 CUPS 圖標都是
+<A HREF="http://www.easysw.com">Easy Software Products</A>
+的商標財產。CUPS 是 1997-2007 由 Easy Software Products 版權所有,
+保留一切權利。</SMALL></P>
+
+</TD>
+
+<TD ALIGN="RIGHT" VALIGN="BOTTOM" WIDTH="15"><IMG SRC="/images/bottom-right.gif"
+WIDTH="15" HEIGHT="15" ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>
diff --git a/templates/zh_TW/users.tmpl b/templates/zh_TW/users.tmpl
new file mode 100644 (file)
index 0000000..51622fc
--- /dev/null
@@ -0,0 +1,26 @@
+<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">{printer_name} 所允許的使用者</H2>
+
+<TABLE>
+<TR>
+<TH CLASS="label">使用者:</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:}>允許這些使用者列印
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>拒絕這些使用者列印
+</TD>
+</TR>
+<TR>
+<TD></TD>
+<TD>
+<INPUT TYPE="IMAGE" SRC="/images/button-set-allowed-users.gif" ALT="設定允許的使用者">
+</TD>
+</TR>
+</TABLE>
+
+</FORM>
index a6f5b41afafc94f2f491d0081fdbbfd496e94f51..b31700bfe37a86e2080a4be7d9c7e210b0ed8fd5 100755 (executable)
@@ -34,7 +34,7 @@
 #
 # Usage:
 #
-#     tools/makebuttons locale buttons.txt
+#     tools/makebuttons [--font filename] locale buttons.txt
 #
 # "Locale" is the locale name, either "ll" or "ll_CC" where "ll" is the
 # 2-letter language abbreviation and "CC" is the 2-letter ISO country
 # "tools/buttons.txt" for inspiration...
 #
 
+# Bitstream Vera font...
+font="fonts/Vera.ttf"
+
+# Colors
+background="#d4d4a4"
+black="#000000"
+green="#009900"
+red="#cc0000"
+standard="#666633"
+
+
+if test "x$1" == x--font; then
+       shift
+       font="$1"
+       shift
+fi
+
 if test $# -lt 2; then
-       echo Usage: tools/makebuttons locale buttons.txt
+       echo Usage: tools/makebuttons "[--font filename]" locale buttons.txt
        exit 1
 elif test ! -d tools; then
        echo ERROR: You MUST run the makebuttons script from the main CUPS source directory!
@@ -82,17 +99,6 @@ elif test ! -r $list; then
 fi
 
 
-# Bitstream Vera font...
-font="fonts/Vera.ttf"
-
-# Colors
-background="#d4d4a4"
-black="#000000"
-green="#009900"
-red="#cc0000"
-standard="#666633"
-
-
 # 'generate_button()' - Create a button image.
 #
 # Arg 1: button filename (WITH .gif extension!)
@@ -168,7 +174,7 @@ function generate_button()
        txt_h=`identify -format "%h" $tmp_btn`
        txt_w=`identify -format "%w" $tmp_btn`
 
-       if test $txt_h -gt 32; then
+       if test $txt_h -gt 40; then
                echo "ERROR: 2 lines maximum for the button text"
                exit 1
        fi
index 92cc0306358c643c192699eb8a83309663dc449b..8f0be27101e4e200856513f39e822150d316385d 100755 (executable)
@@ -34,26 +34,36 @@ sed -e '1,$s/@CUPS_VERSION@/'$version'/g' \
        <packaging/WELCOME.rtf >$pkgdir/Resources/Welcome.rtf
 cp packaging/installer.tif $pkgdir/Resources/background.tif
 
-cat >$pkgdir/Resources/preflight <<EOF
+if test -x /bin/launchctl; then
+       cat >$pkgdir/Resources/preflight <<EOF
+#!/bin/sh
+# Tell launchd to reload cupsd...
+launchctl stop org.cups.cups-lpd || exit 0
+launchctl stop org.cups.cupsd || exit 0
+launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist || exit 0
+launchctl unload /System/Library/LaunchDaemons/org.cups.cups-lpd.plist || exit 0
+EOF
+else
+       cat >$pkgdir/Resources/preflight <<EOF
 #!/bin/sh
 # Stop any running cupsd processes...
 killall cupsd || exit 0
 EOF
+fi
+
 chmod 755 $pkgdir/Resources/preflight
 
 if test -x /bin/launchctl; then
        cat >$pkgdir/Resources/postflight <<EOF
 #!/bin/sh
 
-# Remove old startup item and xinetd config file, we use launchd now...
-rm -f /System/Library/StartupItems/PrintingServices/PrintingServices
+# Remove old xinetd config file, we use launchd now...
 rm -f /etc/xinetd.d/cups-lpd
 
 # Tell launchd to reload cupsd...
-launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist || exit 0
-launchctl unload /System/Library/LaunchDaemons/org.cups.cups-lpd.plist || exit 0
 launchctl load /System/Library/LaunchDaemons/org.cups.cupsd.plist
 launchctl load /System/Library/LaunchDaemons/org.cups.cupsd-lpd.plist || exit 0
+launchctl start org.cups.cupsd
 EOF
 else
        cat >$pkgdir/Resources/postflight <<EOF