fix: 补全 CUPS Web 汉化
This commit is contained in:
@@ -138,6 +138,7 @@ lpinfo -v | grep usb
|
|||||||
├── setup_cups.sh # 一键安装/卸载脚本
|
├── setup_cups.sh # 一键安装/卸载脚本
|
||||||
├── watchdog/ # 网络和打印服务守护脚本
|
├── watchdog/ # 网络和打印服务守护脚本
|
||||||
├── cups-templates-zh_CN/ # 中文界面模板(65个文件)
|
├── cups-templates-zh_CN/ # 中文界面模板(65个文件)
|
||||||
|
├── cups-docroot-zh_CN/ # CUPS 中文首页和前端汉化脚本
|
||||||
├── README.md # 本文档
|
├── README.md # 本文档
|
||||||
└── 刷机教程.md # Armbian 刷机教程
|
└── 刷机教程.md # Armbian 刷机教程
|
||||||
```
|
```
|
||||||
@@ -151,7 +152,7 @@ lpinfo -v | grep usb
|
|||||||
脚本已配置 `HostNameLookups Off` 解决此问题。如果仍然慢,检查网络连接。
|
脚本已配置 `HostNameLookups Off` 解决此问题。如果仍然慢,检查网络连接。
|
||||||
|
|
||||||
### 界面显示英文
|
### 界面显示英文
|
||||||
确保安装时下载了中文模板。重新运行安装脚本可以修复。
|
确保安装时下载了中文模板、中文首页和前端汉化脚本。重新运行安装脚本可以修复。
|
||||||
|
|
||||||
### 找不到 USB 打印机
|
### 找不到 USB 打印机
|
||||||
1. 确认打印机已通过 USB 连接到服务器
|
1. 确认打印机已通过 USB 连接到服务器
|
||||||
|
|||||||
421
cups-docroot-zh_CN/cups-zh-localize.js
Normal file
421
cups-docroot-zh_CN/cups-zh-localize.js
Normal file
@@ -0,0 +1,421 @@
|
|||||||
|
(function () {
|
||||||
|
var exact = {
|
||||||
|
"Administration": "管理",
|
||||||
|
"Home": "首页",
|
||||||
|
"Jobs": "任务",
|
||||||
|
"Printers": "打印机",
|
||||||
|
"Classes": "打印机类",
|
||||||
|
"Help": "帮助",
|
||||||
|
"Search": "搜索",
|
||||||
|
"Clear": "清除",
|
||||||
|
"Default": "默认",
|
||||||
|
"Printer Default": "打印机默认",
|
||||||
|
"None": "无",
|
||||||
|
"No": "否",
|
||||||
|
"Yes": "是",
|
||||||
|
"Off": "关闭",
|
||||||
|
"On": "开启",
|
||||||
|
"True": "是",
|
||||||
|
"False": "否",
|
||||||
|
"Auto": "自动",
|
||||||
|
"Automatic": "自动",
|
||||||
|
"Manual": "手动",
|
||||||
|
"Idle": "空闲",
|
||||||
|
"Processing": "处理中",
|
||||||
|
"Stopped": "已停止",
|
||||||
|
"Paused": "已暂停",
|
||||||
|
"Unknown": "未知",
|
||||||
|
"Ready": "就绪",
|
||||||
|
"Completed": "已完成",
|
||||||
|
"Current": "当前",
|
||||||
|
"General": "常规",
|
||||||
|
"Basic": "基本",
|
||||||
|
"Advanced": "高级",
|
||||||
|
"Printer Features": "打印机功能",
|
||||||
|
"Installable Options": "可安装选项",
|
||||||
|
"Job Options": "任务选项",
|
||||||
|
"Page Setup": "页面设置",
|
||||||
|
"Media": "纸张",
|
||||||
|
"Paper": "纸张",
|
||||||
|
"Finishing": "后处理",
|
||||||
|
"Output": "输出",
|
||||||
|
"Color": "彩色",
|
||||||
|
"Grayscale": "灰度",
|
||||||
|
"Monochrome": "单色",
|
||||||
|
"Black": "黑色",
|
||||||
|
"Black and White": "黑白",
|
||||||
|
"Normal": "普通",
|
||||||
|
"Draft": "草稿",
|
||||||
|
"High": "高",
|
||||||
|
"Best": "最佳",
|
||||||
|
"Fast": "快速",
|
||||||
|
"Photo": "照片",
|
||||||
|
"Text": "文本",
|
||||||
|
"Graphics": "图形",
|
||||||
|
"Line Art": "线条图",
|
||||||
|
"Portrait": "纵向",
|
||||||
|
"Landscape": "横向",
|
||||||
|
"Reverse Portrait": "反向纵向",
|
||||||
|
"Reverse Landscape": "反向横向",
|
||||||
|
"Plain": "普通",
|
||||||
|
"Plain Paper": "普通纸",
|
||||||
|
"Envelope": "信封",
|
||||||
|
"Labels": "标签纸",
|
||||||
|
"Transparency": "透明胶片",
|
||||||
|
"Recycled": "再生纸",
|
||||||
|
"Heavy": "重磅纸",
|
||||||
|
"Thick": "厚纸",
|
||||||
|
"Thin": "薄纸",
|
||||||
|
"Long Edge": "长边",
|
||||||
|
"Short Edge": "短边",
|
||||||
|
"Long-Edge Binding": "长边装订",
|
||||||
|
"Short-Edge Binding": "短边装订",
|
||||||
|
"One-Sided": "单面",
|
||||||
|
"Two-Sided": "双面",
|
||||||
|
"No Cover": "无封面",
|
||||||
|
"Classified": "机密",
|
||||||
|
"Confidential": "保密",
|
||||||
|
"Secret": "秘密",
|
||||||
|
"Standard": "标准",
|
||||||
|
"Top Secret": "绝密",
|
||||||
|
"Unclassified": "非密",
|
||||||
|
"Tray 1": "纸盒 1",
|
||||||
|
"Tray 2": "纸盒 2",
|
||||||
|
"Tray 3": "纸盒 3",
|
||||||
|
"Tray 4": "纸盒 4",
|
||||||
|
"Manual Feed": "手动进纸",
|
||||||
|
"Multi-Purpose Tray": "多功能纸盒",
|
||||||
|
"Upper": "上纸盒",
|
||||||
|
"Lower": "下纸盒",
|
||||||
|
"Middle": "中纸盒",
|
||||||
|
"Letter": "Letter 信纸",
|
||||||
|
"Legal": "Legal 法律纸",
|
||||||
|
"Executive": "Executive 行政纸",
|
||||||
|
"CUPS for Users": "用户指南",
|
||||||
|
"CUPS for Administrators": "管理员指南",
|
||||||
|
"CUPS for Developers": "开发者指南",
|
||||||
|
"Overview of CUPS": "CUPS 概述",
|
||||||
|
"Command-Line Printing and Options": "命令行打印和选项",
|
||||||
|
"Adding Printers and Classes": "添加打印机和打印机类",
|
||||||
|
"Managing Operation Policies": "管理操作策略",
|
||||||
|
"Using Network Printers": "使用网络打印机",
|
||||||
|
"Firewalls": "防火墙",
|
||||||
|
"cupsd.conf Reference": "cupsd.conf 参考",
|
||||||
|
"CUPS Programming Manual": "CUPS 编程手册",
|
||||||
|
"Filter and Backend Programming": "过滤器和后端编程",
|
||||||
|
"Getting Started": "入门",
|
||||||
|
"Man Pages": "手册页",
|
||||||
|
"Programming": "编程",
|
||||||
|
"References": "参考",
|
||||||
|
"Specifications": "规范",
|
||||||
|
"Online Help": "在线帮助",
|
||||||
|
"Online Help Documents": "在线帮助文档",
|
||||||
|
"All Documents": "所有文档",
|
||||||
|
"View Printable Version": "查看可打印版本",
|
||||||
|
"No matches found.": "未找到匹配结果。",
|
||||||
|
"Add Printer": "添加打印机",
|
||||||
|
"Find New Printers": "查找新打印机",
|
||||||
|
"Manage Printers": "管理打印机",
|
||||||
|
"Add Class": "添加打印机类",
|
||||||
|
"Manage Classes": "管理打印机类",
|
||||||
|
"Manage Jobs": "管理打印任务",
|
||||||
|
"Edit Configuration File": "编辑配置文件",
|
||||||
|
"Server Settings": "服务器设置",
|
||||||
|
"Save Settings": "保存设置",
|
||||||
|
"Share printers connected to this system": "共享连接到此系统的打印机",
|
||||||
|
"Allow printing from the Internet": "允许从互联网打印",
|
||||||
|
"Allow remote administration": "允许远程管理",
|
||||||
|
"Allow users to cancel any job": "允许用户取消任何任务",
|
||||||
|
"Preserve job history": "保留任务历史",
|
||||||
|
"Save debugging information": "保存调试信息",
|
||||||
|
"Maintenance": "维护",
|
||||||
|
"Print Test Page": "打印测试页",
|
||||||
|
"Clean Print Heads": "清洗打印头",
|
||||||
|
"Print Self-Test Page": "打印自检页",
|
||||||
|
"Start Printer": "恢复打印机",
|
||||||
|
"Stop Printer": "暂停打印机",
|
||||||
|
"Accept Jobs": "接受任务",
|
||||||
|
"Reject Jobs": "拒绝任务",
|
||||||
|
"Move All Jobs": "移动所有任务",
|
||||||
|
"Cancel All Jobs": "取消所有任务",
|
||||||
|
"Modify Printer": "修改打印机",
|
||||||
|
"Delete Printer": "删除打印机",
|
||||||
|
"Set Default Options": "设置默认选项",
|
||||||
|
"Set As Server Default": "设为服务器默认",
|
||||||
|
"Set Allowed Users": "设置允许用户",
|
||||||
|
"Description": "描述",
|
||||||
|
"Location": "位置",
|
||||||
|
"Driver": "驱动",
|
||||||
|
"Connection": "连接",
|
||||||
|
"Defaults": "默认设置",
|
||||||
|
"Shared": "已共享",
|
||||||
|
"Not Shared": "未共享",
|
||||||
|
"Server Default": "服务器默认",
|
||||||
|
"Accepting Jobs": "接受任务",
|
||||||
|
"Rejecting Jobs": "拒绝任务",
|
||||||
|
"Set Default": "设为默认",
|
||||||
|
"Delete": "删除",
|
||||||
|
"Modify": "修改",
|
||||||
|
"Continue": "继续",
|
||||||
|
"Back": "返回",
|
||||||
|
"Apply": "应用",
|
||||||
|
"Execute": "执行",
|
||||||
|
"Cancel": "取消",
|
||||||
|
"Refresh": "刷新",
|
||||||
|
"Name": "名称",
|
||||||
|
"Make": "品牌",
|
||||||
|
"Model": "型号",
|
||||||
|
"Device": "设备",
|
||||||
|
"Local Printers": "本地打印机",
|
||||||
|
"Discovered Network Printers": "已发现的网络打印机",
|
||||||
|
"Other Network Printers": "其他网络打印机",
|
||||||
|
"Current Connection": "当前连接",
|
||||||
|
"Sharing": "共享",
|
||||||
|
"Choose Driver": "选择驱动",
|
||||||
|
"Choose Device": "选择设备",
|
||||||
|
"Choose Make": "选择品牌",
|
||||||
|
"Choose Model": "选择型号",
|
||||||
|
"Current Driver": "当前驱动",
|
||||||
|
"Provide a PPD File": "提供 PPD 文件",
|
||||||
|
"Query Printer for Default Options": "从打印机查询默认选项",
|
||||||
|
"Loading": "加载中",
|
||||||
|
"Searching": "搜索中",
|
||||||
|
"Supply Levels": "耗材余量",
|
||||||
|
"Policies": "策略",
|
||||||
|
"Operation Policy": "操作策略",
|
||||||
|
"Error Policy": "错误策略",
|
||||||
|
"Job Sheets": "作业封面",
|
||||||
|
"Banner": "横幅页",
|
||||||
|
"Starting Banner": "开始横幅页",
|
||||||
|
"Ending Banner": "结束横幅页",
|
||||||
|
"Allowed Users": "允许用户",
|
||||||
|
"Denied Users": "拒绝用户",
|
||||||
|
"Hold Job": "保留任务",
|
||||||
|
"Release Job": "释放任务",
|
||||||
|
"Restart Job": "重启任务",
|
||||||
|
"Move Job": "移动任务",
|
||||||
|
"Cancel Job": "取消任务",
|
||||||
|
"Page": "页面",
|
||||||
|
"Pages": "页数",
|
||||||
|
"Status": "状态",
|
||||||
|
"User": "用户",
|
||||||
|
"Size": "大小",
|
||||||
|
"Date": "日期",
|
||||||
|
"Time": "时间",
|
||||||
|
"Priority": "优先级",
|
||||||
|
"Media Limits": "纸张限制",
|
||||||
|
"Output Order": "输出顺序",
|
||||||
|
"Reverse": "反向",
|
||||||
|
"Forward": "正向",
|
||||||
|
"Collated": "逐份",
|
||||||
|
"Uncollated": "不逐份",
|
||||||
|
"Resolution": "分辨率",
|
||||||
|
"Printer Resolution": "打印机分辨率",
|
||||||
|
"Color Mode": "色彩模式",
|
||||||
|
"Color Model": "色彩模型",
|
||||||
|
"Color Correction": "色彩校正",
|
||||||
|
"Color Management": "色彩管理",
|
||||||
|
"Media Weight": "纸张重量",
|
||||||
|
"Page Delivery": "页面输出",
|
||||||
|
"Output Resolution": "输出分辨率"
|
||||||
|
};
|
||||||
|
|
||||||
|
var phrases = [
|
||||||
|
["Media Size", "纸张尺寸"],
|
||||||
|
["Page Size", "页面尺寸"],
|
||||||
|
["Paper Size", "纸张尺寸"],
|
||||||
|
["Media Type", "纸张类型"],
|
||||||
|
["Paper Type", "纸张类型"],
|
||||||
|
["Input Slot", "进纸来源"],
|
||||||
|
["Paper Source", "纸张来源"],
|
||||||
|
["Media Source", "纸张来源"],
|
||||||
|
["Output Bin", "出纸槽"],
|
||||||
|
["Output Tray", "出纸托盘"],
|
||||||
|
["Duplex Printing", "双面打印"],
|
||||||
|
["Two-Sided Printing", "双面打印"],
|
||||||
|
["2-Sided Printing", "双面打印"],
|
||||||
|
["Double-Sided Printing", "双面打印"],
|
||||||
|
["Print Quality", "打印质量"],
|
||||||
|
["Printout Quality", "打印输出质量"],
|
||||||
|
["Printout Mode", "打印模式"],
|
||||||
|
["Output Mode", "输出模式"],
|
||||||
|
["Color Mode", "色彩模式"],
|
||||||
|
["Color Model", "色彩模型"],
|
||||||
|
["Color Correction", "色彩校正"],
|
||||||
|
["Color Management", "色彩管理"],
|
||||||
|
["Resolution", "分辨率"],
|
||||||
|
["Copies", "份数"],
|
||||||
|
["Collate", "逐份打印"],
|
||||||
|
["Orientation", "方向"],
|
||||||
|
["Scaling", "缩放"],
|
||||||
|
["Fit to Page", "适合页面"],
|
||||||
|
["Page Region", "页面区域"],
|
||||||
|
["Page Border", "页面边框"],
|
||||||
|
["Page Order", "页面顺序"],
|
||||||
|
["Mirror Print", "镜像打印"],
|
||||||
|
["Toner Save", "省粉模式"],
|
||||||
|
["Ink/Toner Save", "省墨/省粉模式"],
|
||||||
|
["Economy Mode", "经济模式"],
|
||||||
|
["Draft Mode", "草稿模式"],
|
||||||
|
["Print Density", "打印浓度"],
|
||||||
|
["Density", "浓度"],
|
||||||
|
["Darkness", "深浅"],
|
||||||
|
["Brightness", "亮度"],
|
||||||
|
["Contrast", "对比度"],
|
||||||
|
["Saturation", "饱和度"],
|
||||||
|
["Gamma", "伽马"],
|
||||||
|
["Halftoning", "半色调"],
|
||||||
|
["Image Quality", "图像质量"],
|
||||||
|
["Installed Memory", "已安装内存"],
|
||||||
|
["Optional Tray", "可选纸盒"],
|
||||||
|
["Long-Edge", "长边"],
|
||||||
|
["Short-Edge", "短边"],
|
||||||
|
["one-sided", "单面"],
|
||||||
|
["two-sided-long-edge", "双面(长边翻转)"],
|
||||||
|
["two-sided-short-edge", "双面(短边翻转)"],
|
||||||
|
["job-sheets", "作业封面"],
|
||||||
|
["media", "纸张"],
|
||||||
|
["sides", "双面设置"],
|
||||||
|
["Search Results", "搜索结果"],
|
||||||
|
["Print Settings", "打印设置"],
|
||||||
|
["Printer Options", "打印机选项"],
|
||||||
|
["Default Options", "默认选项"],
|
||||||
|
["Installable Options", "可安装选项"],
|
||||||
|
["General Options", "常规选项"],
|
||||||
|
["Finishing Options", "后处理选项"],
|
||||||
|
["Image Options", "图像选项"],
|
||||||
|
["Text Options", "文本选项"],
|
||||||
|
["Color Options", "色彩选项"],
|
||||||
|
["Advanced Options", "高级选项"],
|
||||||
|
["Maximum Clients", "最大客户端数"],
|
||||||
|
["Maximum Jobs", "最大任务数"],
|
||||||
|
["Preserve Metadata", "保留元数据"],
|
||||||
|
["Preserve Documents", "保留文档"],
|
||||||
|
["Maximum Log File Size", "最大日志文件大小"],
|
||||||
|
["Document Name", "文档名称"],
|
||||||
|
["Job ID", "任务 ID"],
|
||||||
|
["Job State", "任务状态"],
|
||||||
|
["Job Name", "任务名称"],
|
||||||
|
["Printer State", "打印机状态"],
|
||||||
|
["Make and Model", "品牌和型号"],
|
||||||
|
["Page Range", "页码范围"],
|
||||||
|
["Number-Up", "每张页数"],
|
||||||
|
["Pages Per Sheet", "每张纸页数"],
|
||||||
|
["Input Tray", "进纸托盘"],
|
||||||
|
["Staple", "装订"],
|
||||||
|
["Punch", "打孔"],
|
||||||
|
["Fold", "折叠"],
|
||||||
|
["Booklet", "小册子"],
|
||||||
|
["Borderless", "无边距"],
|
||||||
|
["Edge-to-Edge", "满版打印"]
|
||||||
|
];
|
||||||
|
|
||||||
|
function trimText(text) {
|
||||||
|
return text.replace(/^\s+|\s+$/g, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
function localizeText(text) {
|
||||||
|
var core = trimText(text);
|
||||||
|
var localized = core;
|
||||||
|
var i;
|
||||||
|
|
||||||
|
if (!core) {
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exact[core]) {
|
||||||
|
localized = exact[core];
|
||||||
|
} else {
|
||||||
|
for (i = 0; i < phrases.length; i++) {
|
||||||
|
localized = localized.split(phrases[i][0]).join(phrases[i][1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (localized === core) {
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
return text.replace(core, localized);
|
||||||
|
}
|
||||||
|
|
||||||
|
function localizeNodeText(root) {
|
||||||
|
var skip = { SCRIPT: true, STYLE: true, TEXTAREA: true, PRE: true, CODE: true };
|
||||||
|
var nodes = [];
|
||||||
|
var walker;
|
||||||
|
var node;
|
||||||
|
var i;
|
||||||
|
|
||||||
|
if (!root) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (document.createTreeWalker && window.NodeFilter) {
|
||||||
|
walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {
|
||||||
|
acceptNode: function (candidate) {
|
||||||
|
if (!candidate.nodeValue || !trimText(candidate.nodeValue)) {
|
||||||
|
return NodeFilter.FILTER_REJECT;
|
||||||
|
}
|
||||||
|
if (candidate.parentNode && skip[candidate.parentNode.nodeName]) {
|
||||||
|
return NodeFilter.FILTER_REJECT;
|
||||||
|
}
|
||||||
|
return NodeFilter.FILTER_ACCEPT;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
while ((node = walker.nextNode())) {
|
||||||
|
nodes.push(node);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
nodes = root.querySelectorAll ? root.querySelectorAll("*") : [];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < nodes.length; i++) {
|
||||||
|
if (nodes[i].nodeType === 3) {
|
||||||
|
nodes[i].nodeValue = localizeText(nodes[i].nodeValue);
|
||||||
|
} else if (nodes[i].childNodes && nodes[i].childNodes.length === 1 && nodes[i].childNodes[0].nodeType === 3 && !skip[nodes[i].nodeName]) {
|
||||||
|
nodes[i].childNodes[0].nodeValue = localizeText(nodes[i].childNodes[0].nodeValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function localizeControls(root) {
|
||||||
|
var selects = root.querySelectorAll("select");
|
||||||
|
var inputs = root.querySelectorAll("input[type=submit], input[type=button], input[type=reset], button");
|
||||||
|
var i;
|
||||||
|
var j;
|
||||||
|
var select;
|
||||||
|
|
||||||
|
for (i = 0; i < selects.length; i++) {
|
||||||
|
select = selects[i];
|
||||||
|
if ((select.id && select.id.indexOf("select-") === 0) || select.name === "OP") {
|
||||||
|
for (j = 0; j < select.options.length; j++) {
|
||||||
|
select.options[j].text = localizeText(select.options[j].text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < inputs.length; i++) {
|
||||||
|
if (inputs[i].value) {
|
||||||
|
inputs[i].value = trimText(localizeText(inputs[i].value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function localizeSafeTextBlocks(root) {
|
||||||
|
var blocks = root.querySelectorAll("h1, h2, h3, th, .title, .header a, .cups-header a, .tabs label, .sidebar a, .sidebar h3, .thirds h2, .thirds a, .body p, .cups-body p, .body li, .cups-body li, .body a, .cups-body a");
|
||||||
|
var cells = root.querySelectorAll("td");
|
||||||
|
var i;
|
||||||
|
|
||||||
|
for (i = 0; i < blocks.length; i++) {
|
||||||
|
localizeNodeText(blocks[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < cells.length; i++) {
|
||||||
|
if (/^\s*(job-sheets|media|sides)=/.test(cells[i].textContent || "")) {
|
||||||
|
localizeNodeText(cells[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
localizeSafeTextBlocks(document);
|
||||||
|
localizeControls(document);
|
||||||
|
})();
|
||||||
52
cups-docroot-zh_CN/index.html
Normal file
52
cups-docroot-zh_CN/index.html
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="/cups.css" type="text/css">
|
||||||
|
<link rel="shortcut icon" href="/apple-touch-icon.png" type="image/png">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=9">
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<title>首页 - CUPS 打印管理</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="cups-header">
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://openprinting.github.io/cups/" target="_blank">OpenPrinting CUPS</a></li>
|
||||||
|
<li><a class="active" href="/">首页</a></li>
|
||||||
|
<li><a href="/admin">管理</a></li>
|
||||||
|
<li><a href="/classes/">打印机类</a></li>
|
||||||
|
<li><a href="/help/">帮助</a></li>
|
||||||
|
<li><a href="/jobs/">任务</a></li>
|
||||||
|
<li><a href="/printers/">打印机</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="cups-body">
|
||||||
|
<div class="row">
|
||||||
|
<h1>OpenPrinting CUPS 打印系统</h1>
|
||||||
|
<p>CUPS 是面向 Linux 和其他类 Unix 系统的标准化开源打印系统。它通过 IPP Everywhere 支持本地打印机和网络打印机。</p>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="thirds">
|
||||||
|
<h2>用户指南</h2>
|
||||||
|
<p><a href="help/overview.html">CUPS 概述</a></p>
|
||||||
|
<p><a href="help/options.html">命令行打印和选项</a></p>
|
||||||
|
</div>
|
||||||
|
<div class="thirds">
|
||||||
|
<h2>管理员指南</h2>
|
||||||
|
<p><a href="help/admin.html">添加打印机和打印机类</a></p>
|
||||||
|
<p><a href="help/policies.html">管理操作策略</a></p>
|
||||||
|
<p><a href="help/network.html">使用网络打印机</a></p>
|
||||||
|
<p><a href="help/firewalls.html">防火墙</a></p>
|
||||||
|
<p><a href="help/man-cupsd.conf.html">cupsd.conf 参考</a></p>
|
||||||
|
</div>
|
||||||
|
<div class="thirds">
|
||||||
|
<h2>开发者指南</h2>
|
||||||
|
<p><a href="help/cupspm.html">CUPS 编程手册</a></p>
|
||||||
|
<p><a href="help/api-filter.html">过滤器和后端编程</a></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="cups-footer">CUPS 和 CUPS 标志是 OpenPrinting 的商标 | 中文汉化版</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -1,252 +1,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript"><!--
|
<script src="/cups-zh-localize.js" type="text/javascript"></script>
|
||||||
(function () {
|
|
||||||
var exact = {
|
|
||||||
"Administration": "管理",
|
|
||||||
"Home": "首页",
|
|
||||||
"Jobs": "任务",
|
|
||||||
"Printers": "打印机",
|
|
||||||
"Classes": "打印机类",
|
|
||||||
"Help": "帮助",
|
|
||||||
"Search": "搜索",
|
|
||||||
"Clear": "清除",
|
|
||||||
"Default": "默认",
|
|
||||||
"Printer Default": "打印机默认",
|
|
||||||
"None": "无",
|
|
||||||
"No": "否",
|
|
||||||
"Yes": "是",
|
|
||||||
"Off": "关闭",
|
|
||||||
"On": "开启",
|
|
||||||
"True": "是",
|
|
||||||
"False": "否",
|
|
||||||
"Auto": "自动",
|
|
||||||
"Automatic": "自动",
|
|
||||||
"Manual": "手动",
|
|
||||||
"Idle": "空闲",
|
|
||||||
"Processing": "处理中",
|
|
||||||
"Stopped": "已停止",
|
|
||||||
"Paused": "已暂停",
|
|
||||||
"Unknown": "未知",
|
|
||||||
"Ready": "就绪",
|
|
||||||
"Completed": "已完成",
|
|
||||||
"Current": "当前",
|
|
||||||
"General": "常规",
|
|
||||||
"Basic": "基本",
|
|
||||||
"Advanced": "高级",
|
|
||||||
"Printer Features": "打印机功能",
|
|
||||||
"Installable Options": "可安装选项",
|
|
||||||
"Job Options": "任务选项",
|
|
||||||
"Page Setup": "页面设置",
|
|
||||||
"Media": "纸张",
|
|
||||||
"Paper": "纸张",
|
|
||||||
"Finishing": "后处理",
|
|
||||||
"Output": "输出",
|
|
||||||
"Color": "彩色",
|
|
||||||
"Grayscale": "灰度",
|
|
||||||
"Monochrome": "单色",
|
|
||||||
"Black": "黑色",
|
|
||||||
"Black and White": "黑白",
|
|
||||||
"Normal": "普通",
|
|
||||||
"Draft": "草稿",
|
|
||||||
"High": "高",
|
|
||||||
"Best": "最佳",
|
|
||||||
"Fast": "快速",
|
|
||||||
"Photo": "照片",
|
|
||||||
"Text": "文本",
|
|
||||||
"Graphics": "图形",
|
|
||||||
"Line Art": "线条图",
|
|
||||||
"Portrait": "纵向",
|
|
||||||
"Landscape": "横向",
|
|
||||||
"Reverse Portrait": "反向纵向",
|
|
||||||
"Reverse Landscape": "反向横向",
|
|
||||||
"Plain": "普通",
|
|
||||||
"Plain Paper": "普通纸",
|
|
||||||
"Envelope": "信封",
|
|
||||||
"Labels": "标签纸",
|
|
||||||
"Transparency": "透明胶片",
|
|
||||||
"Recycled": "再生纸",
|
|
||||||
"Heavy": "重磅纸",
|
|
||||||
"Thick": "厚纸",
|
|
||||||
"Thin": "薄纸",
|
|
||||||
"Long Edge": "长边",
|
|
||||||
"Short Edge": "短边",
|
|
||||||
"Long-Edge Binding": "长边装订",
|
|
||||||
"Short-Edge Binding": "短边装订",
|
|
||||||
"One-Sided": "单面",
|
|
||||||
"Two-Sided": "双面",
|
|
||||||
"No Cover": "无封面",
|
|
||||||
"Classified": "机密",
|
|
||||||
"Confidential": "保密",
|
|
||||||
"Secret": "秘密",
|
|
||||||
"Standard": "标准",
|
|
||||||
"Top Secret": "绝密",
|
|
||||||
"Unclassified": "非密",
|
|
||||||
"Tray 1": "纸盒 1",
|
|
||||||
"Tray 2": "纸盒 2",
|
|
||||||
"Tray 3": "纸盒 3",
|
|
||||||
"Tray 4": "纸盒 4",
|
|
||||||
"Manual Feed": "手动进纸",
|
|
||||||
"Multi-Purpose Tray": "多功能纸盒",
|
|
||||||
"Upper": "上纸盒",
|
|
||||||
"Lower": "下纸盒",
|
|
||||||
"Middle": "中纸盒",
|
|
||||||
"Letter": "Letter 信纸",
|
|
||||||
"Legal": "Legal 法律纸",
|
|
||||||
"Executive": "Executive 行政纸"
|
|
||||||
};
|
|
||||||
|
|
||||||
var phrases = [
|
|
||||||
["Media Size", "纸张尺寸"],
|
|
||||||
["Page Size", "页面尺寸"],
|
|
||||||
["Paper Size", "纸张尺寸"],
|
|
||||||
["Media Type", "纸张类型"],
|
|
||||||
["Paper Type", "纸张类型"],
|
|
||||||
["Input Slot", "进纸来源"],
|
|
||||||
["Paper Source", "纸张来源"],
|
|
||||||
["Media Source", "纸张来源"],
|
|
||||||
["Output Bin", "出纸槽"],
|
|
||||||
["Output Tray", "出纸托盘"],
|
|
||||||
["Duplex Printing", "双面打印"],
|
|
||||||
["Two-Sided Printing", "双面打印"],
|
|
||||||
["2-Sided Printing", "双面打印"],
|
|
||||||
["Double-Sided Printing", "双面打印"],
|
|
||||||
["Print Quality", "打印质量"],
|
|
||||||
["Printout Mode", "打印模式"],
|
|
||||||
["Output Mode", "输出模式"],
|
|
||||||
["Color Mode", "色彩模式"],
|
|
||||||
["Color Model", "色彩模型"],
|
|
||||||
["Color Correction", "色彩校正"],
|
|
||||||
["Color Management", "色彩管理"],
|
|
||||||
["Resolution", "分辨率"],
|
|
||||||
["Copies", "份数"],
|
|
||||||
["Collate", "逐份打印"],
|
|
||||||
["Orientation", "方向"],
|
|
||||||
["Scaling", "缩放"],
|
|
||||||
["Fit to Page", "适合页面"],
|
|
||||||
["Page Region", "页面区域"],
|
|
||||||
["Page Border", "页面边框"],
|
|
||||||
["Page Order", "页面顺序"],
|
|
||||||
["Mirror Print", "镜像打印"],
|
|
||||||
["Toner Save", "省粉模式"],
|
|
||||||
["Ink/Toner Save", "省墨/省粉模式"],
|
|
||||||
["Economy Mode", "经济模式"],
|
|
||||||
["Draft Mode", "草稿模式"],
|
|
||||||
["Print Density", "打印浓度"],
|
|
||||||
["Density", "浓度"],
|
|
||||||
["Darkness", "深浅"],
|
|
||||||
["Brightness", "亮度"],
|
|
||||||
["Contrast", "对比度"],
|
|
||||||
["Saturation", "饱和度"],
|
|
||||||
["Gamma", "伽马"],
|
|
||||||
["Halftoning", "半色调"],
|
|
||||||
["Image Quality", "图像质量"],
|
|
||||||
["Installed Memory", "已安装内存"],
|
|
||||||
["Optional Tray", "可选纸盒"],
|
|
||||||
["Long-Edge", "长边"],
|
|
||||||
["Short-Edge", "短边"],
|
|
||||||
["one-sided", "单面"],
|
|
||||||
["two-sided-long-edge", "双面(长边翻转)"],
|
|
||||||
["two-sided-short-edge", "双面(短边翻转)"],
|
|
||||||
["job-sheets", "作业封面"],
|
|
||||||
["media", "纸张"],
|
|
||||||
["sides", "双面设置"]
|
|
||||||
];
|
|
||||||
|
|
||||||
function trimText(text) {
|
|
||||||
return text.replace(/^\s+|\s+$/g, "");
|
|
||||||
}
|
|
||||||
|
|
||||||
function localizeText(text) {
|
|
||||||
var core = trimText(text);
|
|
||||||
var localized = core;
|
|
||||||
var i;
|
|
||||||
|
|
||||||
if (!core) {
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (exact[core]) {
|
|
||||||
localized = exact[core];
|
|
||||||
} else {
|
|
||||||
for (i = 0; i < phrases.length; i++) {
|
|
||||||
localized = localized.split(phrases[i][0]).join(phrases[i][1]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (localized === core) {
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
return text.replace(core, localized);
|
|
||||||
}
|
|
||||||
|
|
||||||
function localizeNodeText(root) {
|
|
||||||
var skip = {SCRIPT: true, STYLE: true, TEXTAREA: true, PRE: true, CODE: true};
|
|
||||||
var walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, {
|
|
||||||
acceptNode: function (node) {
|
|
||||||
if (!node.nodeValue || !trimText(node.nodeValue)) {
|
|
||||||
return NodeFilter.FILTER_REJECT;
|
|
||||||
}
|
|
||||||
if (node.parentNode && skip[node.parentNode.nodeName]) {
|
|
||||||
return NodeFilter.FILTER_REJECT;
|
|
||||||
}
|
|
||||||
return NodeFilter.FILTER_ACCEPT;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
var nodes = [];
|
|
||||||
var node;
|
|
||||||
while ((node = walker.nextNode())) {
|
|
||||||
nodes.push(node);
|
|
||||||
}
|
|
||||||
for (var i = 0; i < nodes.length; i++) {
|
|
||||||
nodes[i].nodeValue = localizeText(nodes[i].nodeValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function localizeControls(root) {
|
|
||||||
var selects = root.querySelectorAll("select");
|
|
||||||
var inputs = root.querySelectorAll("input[type=submit], input[type=button], input[type=reset], button");
|
|
||||||
var i;
|
|
||||||
var j;
|
|
||||||
var select;
|
|
||||||
|
|
||||||
for (i = 0; i < selects.length; i++) {
|
|
||||||
select = selects[i];
|
|
||||||
if ((select.id && select.id.indexOf("select-") === 0) || select.name === "OP") {
|
|
||||||
for (j = 0; j < select.options.length; j++) {
|
|
||||||
select.options[j].text = localizeText(select.options[j].text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < inputs.length; i++) {
|
|
||||||
if (inputs[i].value) {
|
|
||||||
inputs[i].value = trimText(localizeText(inputs[i].value));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function localizeSafeTextBlocks(root) {
|
|
||||||
var blocks = root.querySelectorAll("h1, h2, h3, th, .title, .header a, .tabs label");
|
|
||||||
var cells = root.querySelectorAll("td");
|
|
||||||
var i;
|
|
||||||
|
|
||||||
for (i = 0; i < blocks.length; i++) {
|
|
||||||
localizeNodeText(blocks[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < cells.length; i++) {
|
|
||||||
if (/^\s*(job-sheets|media|sides)=/.test(cells[i].textContent || "")) {
|
|
||||||
localizeNodeText(cells[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
localizeSafeTextBlocks(document);
|
|
||||||
localizeControls(document);
|
|
||||||
})();
|
|
||||||
//--></script>
|
|
||||||
<div class="footer">CUPS 和 CUPS 标志是 <a href="http://www.apple.com">Apple Inc.</a> 的商标 | 中文汉化版</div>
|
<div class="footer">CUPS 和 CUPS 标志是 <a href="http://www.apple.com">Apple Inc.</a> 的商标 | 中文汉化版</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -930,6 +930,38 @@ install_drivers() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 安装中文首页
|
||||||
|
install_chinese_docroot() {
|
||||||
|
local source_dir="$1"
|
||||||
|
local docroot_dir="/usr/share/cups/doc-root"
|
||||||
|
|
||||||
|
if [ ! -d "$source_dir" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$docroot_dir" ]; then
|
||||||
|
warn "未找到 CUPS 静态页面目录,跳过中文首页安装"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$docroot_dir/index.html" ] && [ ! -f "$docroot_dir/index.html.en-backup" ]; then
|
||||||
|
cp -f "$docroot_dir/index.html" "$docroot_dir/index.html.en-backup"
|
||||||
|
info "已备份原英文首页到 index.html.en-backup"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local copied=0
|
||||||
|
local f
|
||||||
|
for f in "$source_dir"/*.html "$source_dir"/*.js; do
|
||||||
|
[ -f "$f" ] || continue
|
||||||
|
cp -f "$f" "$docroot_dir/"
|
||||||
|
copied=$((copied + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$copied" -gt 0 ]; then
|
||||||
|
success "CUPS 中文首页和前端汉化脚本已安装"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# 安装中文界面模板
|
# 安装中文界面模板
|
||||||
install_chinese_templates() {
|
install_chinese_templates() {
|
||||||
info "安装 CUPS 中文界面模板..."
|
info "安装 CUPS 中文界面模板..."
|
||||||
@@ -944,6 +976,7 @@ install_chinese_templates() {
|
|||||||
info "从本地复制中文模板..."
|
info "从本地复制中文模板..."
|
||||||
mkdir -p "$templates_dir"
|
mkdir -p "$templates_dir"
|
||||||
cp -f "$SCRIPT_DIR/cups-templates-zh_CN/"*.tmpl "$templates_dir/"
|
cp -f "$SCRIPT_DIR/cups-templates-zh_CN/"*.tmpl "$templates_dir/"
|
||||||
|
install_chinese_docroot "$SCRIPT_DIR/cups-docroot-zh_CN"
|
||||||
success "中文界面模板安装完成(本地)"
|
success "中文界面模板安装完成(本地)"
|
||||||
else
|
else
|
||||||
# 从当前仓库下载模板(使用 zip 包方式,更可靠)
|
# 从当前仓库下载模板(使用 zip 包方式,更可靠)
|
||||||
@@ -965,6 +998,10 @@ install_chinese_templates() {
|
|||||||
mkdir -p "$templates_dir"
|
mkdir -p "$templates_dir"
|
||||||
cp -f "$extracted_dir"/*.tmpl "$templates_dir/"
|
cp -f "$extracted_dir"/*.tmpl "$templates_dir/"
|
||||||
local count=$(ls "$templates_dir"/*.tmpl 2>/dev/null | wc -l)
|
local count=$(ls "$templates_dir"/*.tmpl 2>/dev/null | wc -l)
|
||||||
|
local extracted_docroot=$(find . -type d -name "cups-docroot-zh_CN" 2>/dev/null | head -1)
|
||||||
|
if [ -n "$extracted_docroot" ] && [ -d "$extracted_docroot" ]; then
|
||||||
|
install_chinese_docroot "$extracted_docroot"
|
||||||
|
fi
|
||||||
success "中文界面模板安装完成(已安装 $count 个文件)"
|
success "中文界面模板安装完成(已安装 $count 个文件)"
|
||||||
else
|
else
|
||||||
warn "解压后未找到模板目录"
|
warn "解压后未找到模板目录"
|
||||||
@@ -1670,6 +1707,8 @@ uninstall() {
|
|||||||
rm -rf /usr/share/cups/templates-zh_CN
|
rm -rf /usr/share/cups/templates-zh_CN
|
||||||
rm -rf /usr/share/cups/templates-zh
|
rm -rf /usr/share/cups/templates-zh
|
||||||
rm -rf /usr/share/cups/templates-en-backup
|
rm -rf /usr/share/cups/templates-en-backup
|
||||||
|
rm -f /usr/share/cups/doc-root/index.html.en-backup
|
||||||
|
rm -f /usr/share/cups/doc-root/cups-zh-localize.js
|
||||||
rm -rf /opt/cups-driver-manager
|
rm -rf /opt/cups-driver-manager
|
||||||
rm -rf /opt/cups-watchdog
|
rm -rf /opt/cups-watchdog
|
||||||
rm -rf /etc/cups-watchdog
|
rm -rf /etc/cups-watchdog
|
||||||
|
|||||||
Reference in New Issue
Block a user