1#!/usr/bin/perl
2#
3#   This program is free software: you can redistribute it and/or modify
4#   it under the terms of the GNU General Public License as published by
5#   the Free Software Foundation, either version 3 of the License, or
6#   (at your option) any later version.
7#
8#   This program is distributed in the hope that it will be useful,
9#   but WITHOUT ANY WARRANTY; without even the implied warranty of
10#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11#   GNU General Public License for more details.
12#
13#   You should have received a copy of the GNU General Public License
14#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
15#
16
17use utf8;
18
19# --------------------------------
20
21$Lang{Start_Archive} = "开始备档";
22$Lang{Stop_Dequeue_Archive} = "中止/取消备档";
23$Lang{Start_Full_Backup} = "开始完全备份";
24$Lang{Start_Incr_Backup} = "开始增量备份";
25$Lang{Stop_Dequeue_Backup} = "中止/取消备份";
26$Lang{Restore} = "恢复";
27
28$Lang{Type_full} = "完全";
29$Lang{Type_incr} = "增量";
30
31# -----
32
33$Lang{Only_privileged_users_can_view_admin_options} = "只有特权用户可以查看管理选项。";
34$Lang{H_Admin_Options} = "BackupPC 服务器:管理选项";
35$Lang{Admin_Options} = "管理选项";
36$Lang{Admin_Options_Page} = <<EOF;
37\${h1(qq{$Lang{Admin_Options}})}
38<br>
39\${h2("服务器控制")}
40<form name="ReloadForm" action="\$MyURL" method="get">
41<input type="hidden" name="action" value="">
42<table class="tableStnd">
43  <tr><td>更新服务器配置:<td><input type="button" value="更新配置"
44     onClick="document.ReloadForm.action.value='Reload';
45              document.ReloadForm.submit();">
46</table>
47</form>
48<!--
49\${h2("服务器配置")}
50<ul>
51  <li><i>其它选项,如:</i>
52  <li>更改服务器配置
53</ul>
54-->
55EOF
56
57$Lang{Unable_to_connect_to_BackupPC_server} = "无法连接到 BackupPC 服务器";
58$Lang{Unable_to_connect_to_BackupPC_server_error_message} = <<EOF;
59CGI 脚本程序 (\$MyURL) 无法连接到 BackupPC 服务器 \$Conf{ServerHost} 端口 \$Conf{ServerPort}。错误信息:\$err。
60可能 BackupPC 服务器没有运行,或者服务器配置不正确。请通知网络系统管理员。
61EOF
62
63$Lang{Admin_Start_Server} = <<EOF;
64\${h1(qq{$Lang{Unable_to_connect_to_BackupPC_server}})}
65<form action="\$MyURL" method="get">
66BackupPC 服务器 <tt>\$Conf{ServerHost}</tt> 端口 <tt>\$Conf{ServerPort}</tt>
67此刻没有运行(可能刚被停止,或者还没被启动)。<br>
68你想现在启动它吗?
69<input type="hidden" name="action" value="startServer">
70<input type="submit" value="启动服务器" name="ignore">
71</form>
72EOF
73
74# -----
75
76$Lang{H_BackupPC_Server_Status} = "BackupPC 服务器状态";
77
78$Lang{BackupPC_Server_Status_General_Info}= <<EOF;
79\${h2(\"服务器总体信息\")}
80
81<ul>
82<li> 服务器进程号是 \$Info{pid},运行在主机 \$Conf{ServerHost} 上,
83     版本号 \$Info{Version},开始运行于 \$serverStartTime。
84<li> 此状态报告生成于 \$now。
85<li> 服务器配置最近一次加载于 \$configLoadTime。
86<li> 服务器任务队列下次启动时间是 \$nextWakeupTime。
87<li> 其它信息:
88    <ul>
89        <li>\$numBgQueue 个自上次遗留备份请求,
90        <li>\$numUserQueue 个待处理用户备份请求,
91        <li>\$numCmdQueue 个待处理命令请求,
92        \$poolInfo
93        <li>备份池文件系统磁盘空间占用率是 \$Info{DUlastValue}%
94            (统计于 \$DUlastTime),今天的最大占用率是 \$Info{DUDailyMax}%(统计于 \$DUmaxTime),
95            昨天的最大占用率是 \$Info{DUDailyMaxPrev}%。
96        <li>Inode 备份池文件系统磁盘空间占用率是 \$Info{DUInodelastValue}%
97            (统计于 \$DUlastTime),今天的最大占用率是 \$Info{DUInodeDailyMax}%(统计于 \$DUInodemaxTime),
98            昨天的最大占用率是 \$Info{DUInodeDailyMaxPrev}%。
99    </ul>
100</ul>
101EOF
102
103$Lang{BackupPC_Server_Status} = <<EOF;
104\${h1(qq{$Lang{H_BackupPC_Server_Status}})}
105
106<p>
107\${h2("正在运行的任务")}
108<p>
109<table class="tableStnd sortable" border cellspacing="1" cellpadding="3">
110<tr class="tableheader"><td> 客户机 </td>
111    <td> 类型 </td>
112    <td> 用户 </td>
113    <td> 开始时间 </td>
114    <td> 命令 </td>
115    <td align="center"> 进程号 </td>
116    <td align="center"> 传输进程号 </td>
117    <td align="center"> Status </td>
118    <td align="center"> Count </td>
119    </tr>
120\$jobStr
121</table>
122
123<p>
124\$generalInfo
125
126\${h2("需要关注的错误")}
127<p>
128<table class="tableStnd sortable" border cellspacing="1" cellpadding="3">
129<tr class="tableheader"><td align="center"> 客户机 </td>
130    <td align="center"> 类型 </td>
131    <td align="center"> 用户 </td>
132    <td align="center"> 最后一次尝试 </td>
133    <td align="center"> 详情 </td>
134    <td align="center"> 错误时间 </td>
135    <td> 最后一次错误( PING 失败除外) </td></tr>
136\$statusStr
137</table>
138EOF
139
140# --------------------------------
141$Lang{BackupPC__Server_Summary} = "BackupPC: 客户机报告";
142$Lang{BackupPC__Archive} = "BackupPC: 备档";
143$Lang{BackupPC_Summary} = <<EOF;
144
145\${h1(qq{$Lang{BackupPC__Server_Summary}})}
146<p>
147<ul>
148<li>此状态报告生成于 \$now。
149<li>备份池文件系统磁盘空间占用率是 \$Info{DUlastValue}%
150    (统计于 \$DUlastTime),今天的最大占用率是 \$Info{DUDailyMax}%(统计于 \$DUmaxTime),
151    昨天的最大占用率是 \$Info{DUDailyMaxPrev}%。
152<li>Inode 备份池文件系统磁盘空间占用率是 \$Info{DUInodelastValue}%
153    (统计于 \$DUlastTime),今天的最大占用率是 \$Info{DUInodeDailyMax}%(统计于 \$DUInodemaxTime),
154    昨天的最大占用率是 \$Info{DUInodeDailyMaxPrev}%。
155</ul>
156</p>
157
158\${h2("已成功完成备份的客户机")}
159<p>
160有 \$hostCntGood 台客户机已完成备份,总数是:
161<ul>
162<li> \$fullTot 个完全备份,总大小是 \${fullSizeTot}GiB
163     (被压缩前值),
164<li> \$incrTot 个增量备份,总大小是 \${incrSizeTot}GiB
165     (被压缩前值)。
166</ul>
167</p>
168<table class="sortable" id="host_summary_backups" border cellpadding="3" cellspacing="1">
169<tr class="tableheader"><td> 客户机 </td>
170    <td align="center"> 用户 </td>
171    <td align="center"> 评论 </td>
172    <td align="center"> 完全备份个数 </td>
173    <td align="center"> 最后一次完全备份 (天前) </td>
174    <td align="center"> 完全备份大小 (GiB) </td>
175    <td align="center"> 完全备份速度 (MB/s) </td>
176    <td align="center"> 增量备份个数 </td>
177    <td align="center"> 最后一次增量备份 (天前) </td>
178    <td align="center"> 最后一次备份 (天前) </td>
179    <td align="center"> 当前状态 </td>
180    <td align="center"> 传输错误数目 </td>
181    <td align="center"> 最后一次备份结果 </td></tr>
182\$strGood
183</table>
184\${h2("未备份过的客户机")}
185<p>
186有 \$hostCntNone 台客户机从未被备份过。
187<p>
188<table class="sortable" id="host_summary_nobackups" border cellpadding="3" cellspacing="1">
189<tr class="tableheader"><td> 客户机 </td>
190    <td align="center"> 用户 </td>
191    <td align="center"> 评论 </td>
192    <td align="center"> 完全备份个数 </td>
193    <td align="center"> 最后一次完全备份 (天前) </td>
194    <td align="center"> 完全备份大小 (GiB) </td>
195    <td align="center"> 完全备份速度 (MB/s) </td>
196    <td align="center"> 增量备份个数 </td>
197    <td align="center"> 最后一次增量备份 (天前) </td>
198    <td align="center"> 最后一次备份 (天前) </td>
199    <td align="center"> 当前状态 </td>
200    <td align="center"> 传输错误数目 </td>
201    <td align="center"> 最后一次备份结果 </td></tr>
202\$strNone
203</table>
204EOF
205
206$Lang{BackupPC_Archive} = <<EOF;
207\${h1(qq{$Lang{BackupPC__Archive}})}
208<script language="javascript" type="text/javascript">
209<!--
210
211    function checkAll(location)
212    {
213      for (var i=0;i<document.form1.elements.length;i++)
214      {
215        var e = document.form1.elements[i];
216        if ((e.checked || !e.checked) && e.name != \'all\') {
217            if (eval("document.form1."+location+".checked")) {
218                e.checked = true;
219            } else {
220                e.checked = false;
221            }
222        }
223      }
224    }
225
226    function toggleThis(checkbox)
227    {
228       var cb = eval("document.form1."+checkbox);
229       cb.checked = !cb.checked;
230    }
231
232//-->
233</script>
234
235一共有 \$hostCntGood 台客户机已经被备份,总备份大小为 \${fullSizeTot}GiB
236<p>
237<form name="form1" method="post" action="\$MyURL">
238<input type="hidden" name="fcbMax" value="\$checkBoxCnt">
239<input type="hidden" name="type" value="1">
240<input type="hidden" name="host" value="\${EscHTML(\$archHost)}">
241<input type="hidden" name="action" value="Archive">
242<table class="tableStnd" border cellpadding="3" cellspacing="1">
243<tr class="tableheader"><td align=center> 客户机 </td>
244    <td align="center"> 用户 </td>
245    <td align="center"> 备份大小 </td>
246\$strGood
247\$checkAllHosts
248</table>
249</form>
250<p>
251
252EOF
253
254$Lang{BackupPC_Archive2} = <<EOF;
255\${h1(qq{$Lang{BackupPC__Archive}})}
256即将为下列客户机备档
257<ul>
258\$HostListStr
259</ul>
260<form action="\$MyURL" method="post">
261\$hiddenStr
262<input type="hidden" name="action" value="Archive">
263<input type="hidden" name="host" value="\${EscHTML(\$archHost)}">
264<input type="hidden" name="type" value="2">
265<input type="hidden" value="0" name="archive_type">
266<table class="tableStnd" border cellspacing="1" cellpadding="3">
267\$paramStr
268<tr>
269    <td colspan=2><input type="submit" value="开始备档" name="ignore"></td>
270</tr>
271</form>
272</table>
273EOF
274
275$Lang{BackupPC_Archive2_location} = <<EOF;
276<tr>
277    <td>备档目的地/外设</td>
278    <td><input type="text" value="\$ArchiveDest" name="archive_device"></td>
279</tr>
280EOF
281
282$Lang{BackupPC_Archive2_compression} = <<EOF;
283<tr>
284    <td>压缩</td>
285    <td>
286    <input type="radio" value="0" name="compression" \$ArchiveCompNone>无<br>
287    <input type="radio" value="1" name="compression" \$ArchiveCompGzip>gzip<br>
288    <input type="radio" value="2" name="compression" \$ArchiveCompBzip2>bzip2
289    </td>
290</tr>
291EOF
292
293$Lang{BackupPC_Archive2_parity} = <<EOF;
294<tr>
295    <td>奇偶校验数据比例 (0 = 不启用,5 = 典型设置)</td>
296    <td><input type="numeric" value="\$ArchivePar" name="par"></td>
297</tr>
298EOF
299
300$Lang{BackupPC_Archive2_split} = <<EOF;
301<tr>
302    <td>将输出分开为</td>
303    <td><input type="numeric" value="\$ArchiveSplit" name="splitsize">兆字节</td>
304</tr>
305EOF
306
307# -----------------------------------
308$Lang{Pool_Stat} = <<EOF;
309        <li>备份服务器文件池大小是 \${poolSize}GiB 包含 \$info->{"\${name}FileCnt"} 个文件
310            和 \$info->{"\${name}DirCnt"} 个文件夹/目录(截至 \$poolTime)。文件池大小基本就是所有备份数据占用的实际磁盘空间。
311        <li>服务器文件池散列操作(Hashing)发现 \$info->{"\${name}FileCntRep"}
312            个文件具有重复散列值,其中 \$info->{"\${name}FileRepMax"} 个文件具有相同散列值。相同散列值并不意味着相同文件。散列操作被用来节省相同文件所占用的磁盘空间。
313        <li>每日例行清理过期数据操作删除了 \$info->{"\${name}FileCntRm"} 个文件共
314             \${poolRmSize}GiB (操作于 \$poolTime )。
315EOF
316
317# --------------------------------
318$Lang{BackupPC__Backup_Requested_on__host} = "BackupPC: 客户机 \$host 有备份请求";
319$Lang{BackupPC__Delete_Requested_for_a_backup_of__host} = "BackupPC: Delete Requested for a backup of \$host";
320# --------------------------------
321$Lang{REPLY_FROM_SERVER} = <<EOF;
322\${h1(\$str)}
323<p>
324服务器答复是:\$reply
325<p>
326返回 <a href="\$MyURL?host=\$host">\$host 主页</a>。
327EOF
328# --------------------------------
329$Lang{BackupPC__Start_Backup_Confirm_on__host} = "BackupPC: 客户机 \$host 开始备份确认";
330# --------------------------------
331$Lang{Are_you_sure_start} = <<EOF;
332\${h1("确定?")}
333<p>
334你即将在客户机 \$host 上开始 \$type 备份。
335
336<form name="Confirm" action="\$MyURL" method="get">
337<input type="hidden" name="host" value="\$host">
338<input type="hidden" name="hostIP" value="\$ipAddr">
339<input type="hidden" name="doit" value="1">
340<input type="hidden" name="action" value="">
341你能确定吗?
342<input type="button" value="\$buttonText"
343  onClick="document.Confirm.action.value='\$In{action}';
344           document.Confirm.submit();">
345<input type="submit" value="取消" name="ignore">
346</form>
347EOF
348# --------------------------------
349$Lang{BackupPC__Stop_Backup_Confirm_on__host} = "BackupPC: 客户机 \$host 停止备份确认";
350# --------------------------------
351$Lang{Are_you_sure_stop} = <<EOF;
352
353\${h1("确定?")}
354
355<p>
356你即将在客户机 \$host 上停止/取消备份操作;
357
358<form name="Confirm" action="\$MyURL" method="get">
359<input type="hidden" name="host"   value="\$host">
360<input type="hidden" name="doit"   value="1">
361<input type="hidden" name="action" value="">
362如果确定取消备份操作,请从现在起
363<input type="text" name="backoff" size="10" value="\$backoff"> 小时内不要再启动另一备份操作。
364<p>
365你能确定吗?
366<input type="button" value="\$buttonText"
367  onClick="document.Confirm.action.value='\$In{action}';
368           document.Confirm.submit();">
369<input type="submit" value="不" name="ignore">
370</form>
371
372EOF
373# --------------------------------
374$Lang{Only_privileged_users_can_view_queues_} = "只有特权用户可以查看任务请求队列。";
375# --------------------------------
376$Lang{Only_privileged_users_can_archive} = "只有特权用户可以执行备档操作。";
377# --------------------------------
378$Lang{BackupPC__Queue_Summary} = "BackupPC: 队列报告";
379# --------------------------------
380$Lang{Backup_Queue_Summary} = <<EOF;
381\${h1("备份请求队列报告")}
382\${h2("用户队列报告")}
383<p>
384下列用户请求排在队列中:
385</p>
386<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
387<tr class="tableheader"><td> 客户机 </td>
388    <td> Action </td>
389    <td> 请求时间 </td>
390    <td> 用户 </td></tr>
391\$strUser
392</table>
393
394\${h2("后台请求队列报告")}
395<p>
396下列后台请求排在队列中:
397</p>
398<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
399<tr class="tableheader"><td> 客户机 </td>
400    <td> Action </td>
401    <td> 请求时间 </td>
402    <td> 用户 </td></tr>
403\$strBg
404</table>
405\${h2("命令队列报告")}
406<p>
407下列命令请求排在队列中:
408</p>
409<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
410<tr class="tableheader"><td> 客户机 </td>
411    <td> Action </td>
412    <td> 请求时间 </td>
413    <td> 用户 </td>
414    <td> 命令 </td></tr>
415\$strCmd
416</table>
417EOF
418
419# --------------------------------
420$Lang{Backup_PC__Log_File__file} = "BackupPC: 日志文件 \$file";
421$Lang{Log_File__file__comment} = <<EOF;
422\${h1("日志文件 \$file \$comment")}
423<p>
424EOF
425# --------------------------------
426$Lang{Contents_of_log_file} = <<EOF;
427日志文件 <tt>\$file</tt>, 修改时间 \$mtimeStr \$comment
428EOF
429
430# --------------------------------
431$Lang{skipped__skipped_lines} = "[ 略过 \$skipped 行 ]\n";
432# --------------------------------
433$Lang{_pre___Can_t_open_log_file__file} = "<pre>\n无法打开日志文件 \$file\n";
434
435# --------------------------------
436$Lang{BackupPC__Log_File_History} = "BackupPC: 日志文件历史";
437$Lang{Log_File_History__hdr} = <<EOF;
438\${h1("日志文件历史 \$hdr")}
439<p>
440<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
441<tr class="tableheader"><td align="center"> 文件 </td>
442    <td align="center"> 大小 </td>
443    <td align="center"> 修改时间 </td></tr>
444\$str
445</table>
446EOF
447
448# -------------------------------
449$Lang{Recent_Email_Summary} = <<EOF;
450\${h1("最近电子邮件报告(最新排前)")}
451<p>
452<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
453<tr class="tableheader"><td align="center"> 收信人 </td>
454    <td align="center"> 客户机 </td>
455    <td align="center"> 时间 </td>
456    <td align="center"> 标题 </td></tr>
457\$str
458</table>
459EOF
460
461
462# ------------------------------
463$Lang{Browse_backup__num_for__host} = "BackupPC: 浏览客户机 \$host 备份序列号 \$num";
464
465# ------------------------------
466$Lang{Restore_Options_for__host} = "BackupPC: 客户机 \$host 恢复选项";
467$Lang{Restore_Options_for__host2} = <<EOF;
468\${h1("客户机 \$host 恢复选项")}
469<p>
470你从备份序列 #\$num,卷 \$share 中选择了以下文件/目录:
471<ul>
472\$fileListStr
473</ul>
474</p><p>
475你有三种选择来恢复这些文件/目录。
476请从下列三种方法中选择其一。
477</p>
478\${h2("方法 1:直接恢复")}
479<p>
480EOF
481
482$Lang{Restore_Options_for__host_Option1} = <<EOF;
483你可以将这些文件直接恢复到客户机 <b>\$directHost</b> 上。
484</p><p>
485<b>警告:</b> 客户机上现存的文件,如果和被恢复的文件具有相同文件名并且位于相同路径,其内容将会被替换!
486</p>
487<form action="\$MyURL" method="post" name="direct">
488<input type="hidden" name="host" value="\${EscHTML(\$host)}">
489<input type="hidden" name="num" value="\$num">
490<input type="hidden" name="type" value="3">
491\$hiddenStr
492<input type="hidden" value="\$In{action}" name="action">
493<table class="tableStnd" border="0">
494<tr>
495    <td>恢复到客户机</td>
496    <td><!--<input type="text" size="40" value="\${EscHTML(\$host)}"
497	 name="hostDest">-->
498	 <select name="hostDest" onChange="document.direct.shareDest.value=''">
499	 \$hostDestSel
500	 </select>
501	 <script language="Javascript">
502	 function myOpen(URL) {
503		window.open(URL,'','width=500,height=400');
504	 }
505	 </script>
506	 <!--<a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">搜寻可供使用的文件卷(此功能还未被实现)</a>--></td>
507</tr><tr>
508    <td>恢复到卷</td>
509    <td><input type="text" size="40" value="\${EscHTML(\$share)}"
510	 name="shareDest"></td>
511</tr><tr>
512    <td>恢复到此目录中<br>(位于上述卷下)</td>
513    <td valign="top"><input type="text" size="40" maxlength="256"
514	value="\${EscHTML(\$pathHdr)}" name="pathHdr"></td>
515</tr><tr>
516    <td><input type="submit" value="开始恢复" name="ignore"></td>
517</table>
518</form>
519EOF
520
521$Lang{Restore_Options_for__host_Option1_disabled} = <<EOF;
522直接恢复到客户机 \${EscHTML(\$hostDest) 的功能被关闭。
523请选择其它恢复方法。
524EOF
525
526# ------------------------------
527$Lang{Option_2__Download_Zip_archive} = <<EOF;
528<p>
529\${h2("方法 2:下载 Zip 备档")}
530<p>
531你可以将所有你选择的文件和目录下载进一个 Zip 备档。然后再用一个本地应用,
532例如 WinZip,来浏览或提取其中的任何文件。
533</p><p>
534<b>警告:</b> 取决于你选择的文件/目录,此备档可能会占用很大存储空间。
535可能需要若干分钟或更长时间来生成和传输此备档,并且还需要足够大的本地磁盘空间。
536</p>
537<form action="\$MyURL" method="post">
538<input type="hidden" name="host" value="\${EscHTML(\$host)}">
539<input type="hidden" name="num" value="\$num">
540<input type="hidden" name="type" value="2">
541\$hiddenStr
542<input type="hidden" value="\$In{action}" name="action">
543<input type="checkbox" value="1" name="relative" checked> 备档中所有文件具有相对路径,在 \${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)} 目录内
544(否则备档中文件具有完整路径)。
545<br>
546<table class="tableStnd" border="0">
547<tr>
548    <td>选择压缩比(0=不压缩,1=最低但速度快,...,9=最高但速度慢)</td>
549    <td><input type="text" size="6" value="5" name="compressLevel"></td>
550</tr><tr>
551    <td>Code page (e.g. cp866)</td>
552    <td><input type="text" size="6" value="utf8" name="codePage"></td>
553</tr>
554</table>
555<br>
556<input type="submit" value="下载 Zip 文件" name="ignore">
557</form>
558EOF
559
560# ------------------------------
561
562$Lang{Option_2__Download_Zip_archive2} = <<EOF;
563<p>
564\${h2("方法 2:下载 Zip 备档")}
565<p>
566因服务器没有安装 Perl 组件 Archive::Zip,Zip 备档无法被生成。
567请联系系统管理员安装 Archive::Zip,下载地址
568<a href="http://www.cpan.org">www.cpan.org</a>。
569</p>
570EOF
571
572
573# ------------------------------
574$Lang{Option_3__Download_Zip_archive} = <<EOF;
575\${h2("方法 3:下载 Tar 备档")}
576<p>
577你可以将所有你选择的文件和目录下载进一个 Tar 备档。然后再用一个本地应用,
578例如 tar 或 WinZip,来浏览或提取其中的任何文件。
579</p><p>
580<b>警告:</b> 取决于你选择的文件/目录,此备档可能会占用很大存储空间。
581可能需要若干分钟或更长时间来生成和传输此备档,并且还需要足够大的本地磁盘空间。
582</p>
583<form action="\$MyURL" method="post">
584<input type="hidden" name="host" value="\${EscHTML(\$host)}">
585<input type="hidden" name="num" value="\$num">
586<input type="hidden" name="type" value="1">
587\$hiddenStr
588<input type="hidden" value="\$In{action}" name="action">
589<input type="checkbox" value="1" name="relative" checked> 备档中所有文件具有相对路径,在 \${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)} 目录内
590(否则备档中文件具有完整路径)。
591<br>
592<input type="submit" value="下载 Tar 文件" name="ignore">
593</form>
594EOF
595
596
597# ------------------------------
598$Lang{Restore_Confirm_on__host} = "BackupPC: 客户机 \$host 开始恢复确认";
599
600$Lang{Are_you_sure} = <<EOF;
601\${h1("确定?")}
602<p>
603你即将开始恢复数据直接到客户机 \$In{hostDest} 上。
604储存在备份号 \$num 中的下列文件将被恢复到卷 \$In{shareDest} 内:
605<p>
606<table class="tableStnd" border>
607<tr class="tableheader"><td>原始文件/目录</td><td>将被恢复到</td></tr>
608\$fileListStr
609</table>
610
611<form name="RestoreForm" action="\$MyURL" method="post">
612<input type="hidden" name="host" value="\${EscHTML(\$host)}">
613<input type="hidden" name="hostDest" value="\${EscHTML(\$In{hostDest})}">
614<input type="hidden" name="shareDest" value="\${EscHTML(\$In{shareDest})}">
615<input type="hidden" name="pathHdr" value="\${EscHTML(\$In{pathHdr})}">
616<input type="hidden" name="num" value="\$num">
617<input type="hidden" name="type" value="4">
618<input type="hidden" name="action" value="">
619\$hiddenStr
620你确定吗?
621<input type="button" value="\$Lang->{Restore}"
622 onClick="document.RestoreForm.action.value='Restore';
623          document.RestoreForm.submit();">
624<input type="submit" value="不" name="ignore">
625</form>
626EOF
627
628
629# --------------------------
630$Lang{Restore_Requested_on__hostDest} = "BackupPC: 客户机 \$hostDest 有恢复请求";
631$Lang{Reply_from_server_was___reply} = <<EOF;
632\${h1(\$str)}
633<p>
634服务器答复是:\$reply
635<p>
636返回 <a href="\$MyURL?host=\$hostDest">\$hostDest 主页</a>。
637EOF
638
639$Lang{BackupPC_Archive_Reply_from_server} = <<EOF;
640\${h1(\$str)}
641<p>
642服务器答复是:\$reply
643EOF
644
645
646# --------------------------------
647$Lang{BackupPC__Delete_Backup_Confirm__num_of__host} = "BackupPC: Delete Backup Confirm #\$num of \$host";
648# --------------------------------
649$Lang{A_filled} = "a filled";
650$Lang{An_unfilled} = "an unfilled";
651$Lang{Are_you_sure_delete} = <<EOF;
652\${h1("Are you sure?")}
653<p>
654You are about to delete \$filled \$type backup #\$num of \$host.
655
656<form name="Confirm" action="\$MyURL" method="get">
657
658<input type="hidden" name="host" value="\${EscHTML(\$host)}">
659<input type="hidden" name="num" value="\$num">
660
661<input type="hidden" name="doit" value="1">
662<input type="hidden" name="action" value="">
663
664Do you really want to do this?
665
666<input type="button" value="\${EscHTML(\$Lang->{CfgEdit_Button_Delete})}"
667 onClick="document.Confirm.action.value='deleteBackup';
668          document.Confirm.submit();">
669
670<input type="submit" value="No" name="ignore">
671</form>
672EOF
673
674# -------------------------
675$Lang{Host__host_Backup_Summary} = "BackupPC: 客户机 \$host 备份报告";
676
677$Lang{Host__host_Backup_Summary2} = <<EOF;
678\${h1("客户机 \$host 备份报告")}
679<p>
680\$warnStr
681<ul>
682\$statusStr
683</ul>
684</p>
685\${h2("用户操作")}
686<p>
687<form name="StartStopForm" action="\$MyURL" method="get">
688<input type="hidden" name="host"   value="\$host">
689<input type="hidden" name="action" value="">
690\$startIncrStr
691<input type="button" value="\$Lang->{Start_Full_Backup}"
692 onClick="document.StartStopForm.action.value='Start_Full_Backup';
693          document.StartStopForm.submit();">
694<input type="button" value="\$Lang->{Stop_Dequeue_Backup}"
695 onClick="document.StartStopForm.action.value='Stop_Dequeue_Backup';
696          document.StartStopForm.submit();">
697</form>
698</p>
699\${h2("备份报告")}
700<p>
701点击备份序列号浏览和恢复文件。
702</p>
703<table class="tableStnd sortable" border cellspacing="1" cellpadding="3">
704<tr class="tableheader"><td align="center"> 备份序列号# </td>
705    <td align="center"> 类型 </td>
706    <td align="center"> 完整 </td>
707    <td align="center"> 备份级别 </td>
708    <td align="center"> 开始时间 </td>
709    <td align="center"> 耗时(分钟)</td>
710    <td align="center"> 距离现在(天前)</td>
711    \$deleteHdrStr
712    <td align="center"> 服务器上备份路径 </td>
713</tr>
714\$str
715</table>
716<p>
717
718\$restoreStr
719</p>
720\${h2("传输错误报告")}
721<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
722<tr class="tableheader"><td align="center"> 备份序列号# </td>
723    <td align="center"> 类型 </td>
724    <td align="center"> 查看 </td>
725    <td align="center"> 传输错误数目 </td>
726    <td align="center"> 损坏文件数目 </td>
727    <td align="center"> 损坏文件系统卷数目 </td>
728    <td align="center"> 损坏 Tar 文件数目 </td>
729</tr>
730\$errStr
731</table>
732
733\${h2("文件大小/数目统计")}
734<p>
735"原有文件"是指原先已存在备份池中的文件;"新增文件"是指备份新写入池中的文件。
736空文件不被统计在内。
737</p>
738<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
739<tr class="tableheader"><td colspan="2" bgcolor="#ffffff"></td>
740    <td align="center" colspan="3"> 合计 </td>
741    <td align="center" colspan="2"> 原有文件 </td>
742    <td align="center" colspan="2"> 新增文件 </td>
743</tr>
744<tr class="tableheader sortheader">
745    <td align="center"> 备份序列号# </td>
746    <td align="center"> 类型 </td>
747    <td align="center"> 文件数目 </td>
748    <td align="center"> 大小(MB) </td>
749    <td align="center"> 备份速度(MB/sec) </td>
750    <td align="center"> 文件数目 </td>
751    <td align="center"> 大小(MB) </td>
752    <td align="center"> 文件数目 </td>
753    <td align="center"> 大小(MB) </td>
754</tr>
755\$sizeStr
756</table>
757
758\${h2("压缩报告")}
759<p>
760备份池中原有文件和新增文件的压缩性能报告。
761</p>
762<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
763<tr class="tableheader"><td colspan="3" bgcolor="#ffffff"></td>
764    <td align="center" colspan="3"> 原有文件 </td>
765    <td align="center" colspan="3"> 新增文件 </td>
766</tr>
767<tr class="tableheader sortheader"><td align="center"> 备份序列号# </td>
768    <td align="center"> 类型 </td>
769    <td align="center"> 压缩级别 </td>
770    <td align="center"> 压缩前(MB) </td>
771    <td align="center"> 压缩后(MB) </td>
772    <td align="center"> 压缩比 </td>
773    <td align="center"> 压缩前(MB) </td>
774    <td align="center"> 压缩后(MB) </td>
775    <td align="center"> 压缩比 </td>
776</tr>
777\$compStr
778</table>
779EOF
780
781$Lang{Host__host_Archive_Summary} = "BackupPC: 客户机 \$host 备档报告";
782$Lang{Host__host_Archive_Summary2} = <<EOF;
783\${h1("客户机 \$host 备档报告")}
784<p>
785\$warnStr
786<ul>
787\$statusStr
788</ul>
789
790\${h2("用户操作")}
791<p>
792<form name="StartStopForm" action="\$MyURL" method="get">
793<input type="hidden" name="archivehost" value="\$host">
794<input type="hidden" name="host" value="\$host">
795<input type="hidden" name="action" value="">
796<input type="button" value="\$Lang->{Start_Archive}"
797 onClick="document.StartStopForm.action.value='Start_Archive';
798          document.StartStopForm.submit();">
799<input type="button" value="\$Lang->{Stop_Dequeue_Archive}"
800 onClick="document.StartStopForm.action.value='Stop_Dequeue_Archive';
801          document.StartStopForm.submit();">
802</form>
803
804\$ArchiveStr
805
806EOF
807
808# -------------------------
809$Lang{Error} = "BackupPC: 错误";
810$Lang{Error____head} = <<EOF;
811\${h1("错误:\$head")}
812<p>\$mesg</p>
813EOF
814
815# -------------------------
816$Lang{NavSectionTitle_} = "服务器";
817
818# -------------------------
819$Lang{Backup_browse_for__host} = <<EOF;
820\${h1("客户机 \$host 备份浏览")}
821
822<script language="javascript" type="text/javascript">
823<!--
824
825    function checkAll(location)
826    {
827      for (var i=0;i<document.form1.elements.length;i++)
828      {
829        var e = document.form1.elements[i];
830        if ((e.checked || !e.checked) && e.name != \'all\') {
831            if (eval("document.form1."+location+".checked")) {
832            	e.checked = true;
833            } else {
834            	e.checked = false;
835            }
836        }
837      }
838    }
839
840    function toggleThis(checkbox)
841    {
842       var cb = eval("document.form1."+checkbox);
843       cb.checked = !cb.checked;
844    }
845
846//-->
847</script>
848
849<form name="form0" method="post" action="\$MyURL">
850<input type="hidden" name="num" value="\$num">
851<input type="hidden" name="host" value="\$host">
852<input type="hidden" name="share" value="\${EscHTML(\$share)}">
853<input type="hidden" name="action" value="browse">
854<ul>
855<li> 你正在浏览备份 #\$num,该备份开始于 \$backupTime
856       (\$backupAge 天前)。
857\$filledBackup
858<li> 进入目录:<input type="text" name="dir" size="50" maxlength="4096" value="\${EscHTML(\$dir)}"> <input type="submit" value="\$Lang->{Go}" name="Submit">
859<li> 点击目录名进入相应目录。
860<li> 点击文件名恢复相应文件。
861<li> 查看当前目录的备份<a href="\$MyURL?action=dirHistory&host=\${EscURI(\$host)}&share=\$shareURI&dir=\$pathURI">历史</a>。
862</ul>
863</form>
864
865\${h2("\$dirDisplay 的内容")}
866<form name="form1" method="post" action="\$MyURL">
867<input type="hidden" name="num" value="\$num">
868<input type="hidden" name="host" value="\$host">
869<input type="hidden" name="share" value="\${EscHTML(\$share)}">
870<input type="hidden" name="fcbMax" value="\$checkBoxCnt">
871<input type="hidden" name="action" value="Restore">
872<br>
873<table width="100%">
874<tr><td valign="top" width="30%">
875    <table align="left" border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
876    \$dirStr
877    </table>
878</td><td width="3%">
879</td><td valign="top">
880    <br>
881        <table border width="100%" align="left" cellpadding="3" cellspacing="1">
882        \$fileHeader
883        \$topCheckAll
884        \$fileStr
885        \$checkAll
886        </table>
887    </td></tr></table>
888<br>
889<!--
890This is now in the checkAll row
891<input type="submit" name="Submit" value="恢复被选择的文件">
892-->
893</form>
894EOF
895
896# ------------------------------
897$Lang{DirHistory_backup_for__host} = "BackupPC: 客户机 \$host 目录备份历史";
898
899#
900# These two strings are used to build the links for directories and
901# file versions.  Files are appended with a version number.
902#
903$Lang{DirHistory_dirLink}  = "目录";
904$Lang{DirHistory_fileLink} = "v";
905
906$Lang{DirHistory_for__host} = <<EOF;
907\${h1("客户机 \$host 目录备份历史")}
908<p>
909本页显示文件在所有备份中的不同版本:
910<ul>
911<li> 点击备份序列号返回相应备份浏览主页,
912<li> 点击目录链接标记 (\$Lang->{DirHistory_dirLink}) 进入相应目录,
913<li> 点击文件版本链接标记 (\$Lang->{DirHistory_fileLink}0,
914     \$Lang->{DirHistory_fileLink}1, ...) 下载相应文件,
915<li> 如果一个文件的内容在多个备份中相同,文件在多个备份中具有相同版本号,(PleaseTranslateThis: except between v3 and v4 backups)
916<li> 如果一个文件或目录在某个备份中不存在,下表中用空白表示,
917<li> 具有相同版本号的文件可能在不同备份中有不同的文件属性。可以点击备份序列号来查看文件在相应备份中的属性。
918</ul>
919
920\${h2("\$dirDisplay 的历史")}
921
922<br>
923<table border cellspacing="2" cellpadding="3">
924<tr class="fviewheader"><td>备份序列号</td>\$backupNumStr</tr>
925<tr class="fviewheader"><td>备份时间</td>\$backupTimeStr</tr>
926\$fileStr
927</table>
928EOF
929
930# ------------------------------
931$Lang{Restore___num_details_for__host} = "BackupPC: 客户机 \$host 恢复 #\$num 详情";
932
933$Lang{Restore___num_details_for__host2} = <<EOF;
934\${h1("客户机 \$host 恢复 #\$num 详情")}
935<p>
936<table class="tableStnd" border cellspacing="1" cellpadding="3" width="90%">
937<tr><td class="tableheader"> 恢复序列号 </td><td class="border"> \$Restores[\$i]{num} </td></tr>
938<tr><td class="tableheader"> 请求方 </td><td class="border"> \$RestoreReq{user} </td></tr>
939<tr><td class="tableheader"> 请求时间 </td><td class="border"> \$reqTime </td></tr>
940<tr><td class="tableheader"> 结果 </td><td class="border"> \$Restores[\$i]{result} </td></tr>
941<tr><td class="tableheader"> 错误信息 </td><td class="border"> \$Restores[\$i]{errorMsg} </td></tr>
942<tr><td class="tableheader"> 源客户机 </td><td class="border"> \$RestoreReq{hostSrc} </td></tr>
943<tr><td class="tableheader"> 源备份序列号 </td><td class="border"> \$RestoreReq{num} </td></tr>
944<tr><td class="tableheader"> 源文件卷 </td><td class="border"> \$RestoreReq{shareSrc} </td></tr>
945<tr><td class="tableheader"> 目的客户机 </td><td class="border"> \$RestoreReq{hostDest} </td></tr>
946<tr><td class="tableheader"> 目的文件卷 </td><td class="border"> \$RestoreReq{shareDest} </td></tr>
947<tr><td class="tableheader"> 恢复开始时间 </td><td class="border"> \$startTime </td></tr>
948<tr><td class="tableheader"> 耗时 </td><td class="border"> \$duration 分钟 </td></tr>
949<tr><td class="tableheader"> 文件个数 </td><td class="border"> \$Restores[\$i]{nFiles} </td></tr>
950<tr><td class="tableheader"> 文件总大小 </td><td class="border"> \${MB} MB </td></tr>
951<tr><td class="tableheader"> 传输速率 </td><td class="border"> \$MBperSec MB/sec </td></tr>
952<tr><td class="tableheader"> Tar 生成过程错误个数 </td><td class="border"> \$Restores[\$i]{tarCreateErrs} </td></tr>
953<tr><td class="tableheader"> 传输过程错误个数 </td><td class="border"> \$Restores[\$i]{xferErrs} </td></tr>
954<tr><td class="tableheader"> 传输日志文件 </td><td class="border">
955<a href="\$MyURL?action=view&type=RestoreLOG&num=\$Restores[\$i]{num}&host=\$host">查看日志</a>,
956<a href="\$MyURL?action=view&type=RestoreErr&num=\$Restores[\$i]{num}&host=\$host">查看错误</a>
957</tr></tr>
958</table>
959</p>
960\${h1("文件/目录列表")}
961<p>
962<table class="tableStnd" border cellspacing="1" cellpadding="3" width="100%">
963<tr class="tableheader"><td>原始文件/目录</td><td>恢复至</td></tr>
964\$fileListStr
965</table>
966EOF
967
968# ------------------------------
969$Lang{Archive___num_details_for__host} = "BackupPC: 客户机 \$host 备档 #\$num 详情";
970
971$Lang{Archive___num_details_for__host2} = <<EOF;
972\${h1("客户机 \$host 备档 #\$num 详情")}
973<p>
974<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
975<tr><td class="tableheader"> 备档序列号 </td><td class="border"> \$Archives[\$i]{num} </td></tr>
976<tr><td class="tableheader"> 请求方 </td><td class="border"> \$ArchiveReq{user} </td></tr>
977<tr><td class="tableheader"> 请求方 </td><td class="border"> \$reqTime </td></tr>
978<tr><td class="tableheader"> 结果 </td><td class="border"> \$Archives[\$i]{result} </td></tr>
979<tr><td class="tableheader"> 错误信息 </td><td class="border"> \$Archives[\$i]{errorMsg} </td></tr>
980<tr><td class="tableheader"> 开始时间 </td><td class="border"> \$startTime </td></tr>
981<tr><td class="tableheader"> 耗时 </td><td class="border"> \$duration 分钟 </td></tr>
982<tr><td class="tableheader"> 传输日志文件 </td><td class="border">
983<a href="\$MyURL?action=view&type=ArchiveLOG&num=\$Archives[\$i]{num}&host=\$host">查看日志</a>,
984<a href="\$MyURL?action=view&type=ArchiveErr&num=\$Archives[\$i]{num}&host=\$host">查看错误</a>
985</tr></tr>
986</table>
987<p>
988\${h1("客户机列表")}
989<p>
990<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
991<tr class="tableheader"><td>客户机</td><td>备份序列号</td></tr>
992\$HostListStr
993</table>
994EOF
995
996# -----------------------------------
997$Lang{Email_Summary} = "BackupPC: 电子邮件报告";
998
999# -----------------------------------
1000#  !! ERROR messages !!
1001# -----------------------------------
1002$Lang{BackupPC__Lib__new_failed__check_apache_error_log} = "BackupPC::Lib->new 步骤失败:请检查 Apache 服务器日志\n";
1003$Lang{Wrong_user__my_userid_is___} =
1004              "错误用户:我的用户 ID 是 \$>, 不是 \$uid"
1005            . "(\$Conf{BackupPCUser})\n";
1006# $Lang{Only_privileged_users_can_view_PC_summaries} = "Only privileged users can view PC summaries.";
1007$Lang{Only_privileged_users_can_stop_or_start_backups} =
1008                  "只有特权用户可以执行备份的开始或停止操作于客户机"
1009		. " \${EscHTML(\$host)}.";
1010$Lang{Invalid_number__num} = "无效数字 \${EscHTML(\$In{num})}";
1011$Lang{Unable_to_open__file__configuration_problem} = "无法打开文件 \$file:配置有误?";
1012$Lang{Only_privileged_users_can_view_log_or_config_files} = "只有特权用户可以查看日志或配置文件。";
1013$Lang{Only_privileged_users_can_view_log_files} = "只有特权用户可以查看日志文件。";
1014$Lang{Only_privileged_users_can_view_email_summaries} = "只有特权用户可以查看电子邮件报告。";
1015$Lang{Only_privileged_users_can_browse_backup_files} = "只有特权用户可以浏览"
1016                . "客户机 \${EscHTML(\$In{host})} 的备份文件。";
1017$Lang{Only_privileged_users_can_delete_backups} = "Only privileged users can delete backups"
1018                . " of host \${EscHTML(\$host)}.";
1019$Lang{Empty_host_name} = "空客户机名。";
1020$Lang{Directory___EscHTML} = "目录 \${EscHTML(\"\$TopDir/pc/\$host/\$num\")}"
1021		    . " 为空";
1022$Lang{Can_t_browse_bad_directory_name2} = "无法浏览非法目录名"
1023	            . " \${EscHTML(\$relDir)}";
1024$Lang{Only_privileged_users_can_restore_backup_files} = "只有特权用户可以恢复"
1025                . "客户机 \${EscHTML(\$In{host})} 的备份文件。";
1026$Lang{Bad_host_name} = "错误客户机名 \${EscHTML(\$host)}";
1027$Lang{You_haven_t_selected_any_files__please_go_Back_to} = "你还没有选择任何文件;请返回上一页"
1028                . "选择文件。";
1029$Lang{You_haven_t_selected_any_hosts} = "你还没有选择任何客户机;请返回上一页"
1030                . "选择客户机。";
1031$Lang{Nice_try__but_you_can_t_put} = "对不起,文件名内不能包含 \'..\'";
1032$Lang{Host__doesn_t_exist} = "客户机 \${EscHTML(\$In{hostDest})} 不存在";
1033$Lang{You_don_t_have_permission_to_restore_onto_host} = "你没有权限恢复客户机"
1034		    . " \${EscHTML(\$In{hostDest})}";
1035$Lang{Can_t_open_create__openPath} = "无法打开/创建 "
1036		. "\${EscHTML(\"\$openPath\")}";
1037$Lang{Only_privileged_users_can_restore_backup_files2} = "只有特权用户可以恢复"
1038                . "客户机 \${EscHTML(\$host)} 的备份文件。";
1039$Lang{Empty_host_name} = "空客户机名";
1040$Lang{Unknown_host_or_user} = "未知客户机或用户 \${EscHTML(\$host)}";
1041$Lang{Only_privileged_users_can_view_information_about} = "只有特权用户可以查看"
1042                . "客户机 \${EscHTML(\$host)} 的信息。" ;
1043$Lang{Only_privileged_users_can_view_archive_information} = "只有特权用户可以查看备档信息。";
1044$Lang{Only_privileged_users_can_view_restore_information} = "只有特权用户可以查看恢复信息。";
1045$Lang{Restore_number__num_for_host__does_not_exist} = "客户机 \${EscHTML(\$host)} 恢复序列号 \$num "
1046	        . "不存在。";
1047$Lang{Archive_number__num_for_host__does_not_exist} = "客户机 \${EscHTML(\$host)} 备档序列号 \$num "
1048	        . "不存在。";
1049$Lang{Can_t_find_IP_address_for} = "客户机 \${EscHTML(\$host)} 的 IP 地址无法找到";
1050$Lang{host_is_a_DHCP_host} = <<EOF;
1051客户机 \$host 的网络设置是使用动态 IP 地址(DHCP),现在它的 IP 地址未知。已经检查过 \$ENV{REMOTE_ADDR}\$tryIP 的 NETBIOS 名,但那台机器不是 \$host。
1052<p>
1053除非获得客户机 \$host 的动态 IP 地址,否则只能从客户主机上发出此任务请求。
1054EOF
1055
1056# ------------------------------------
1057# !! Server Mesg !!
1058# ------------------------------------
1059
1060$Lang{Backup_requested_on_DHCP__host} = "用户 \$User 从 \$ENV{REMOTE_ADDR} 发起请求备份使用动态 IP 的客户机 \$host (\$In{hostIP})";
1061$Lang{Backup_requested_on__host_by__User} = "用户 \$User 发起请求备份客户机 \$host";
1062$Lang{Backup_stopped_dequeued_on__host_by__User} = "用户 \$User 停止/取消了对客户机 \$host 的备份";
1063$Lang{Restore_requested_to_host__hostDest__backup___num} = "用户 \$User 从 \$ENV{REMOTE_ADDR} 发起请求恢复客户机 \$hostDest,使用备份序列号 #\$num";
1064$Lang{Delete_requested_for_backup_of__host_by__User} = "Delete requested for backup #\$num of \$host"
1065             . " by \$User from \$ENV{REMOTE_ADDR}";
1066$Lang{Archive_requested} = "用户 \$User 从 \$ENV{REMOTE_ADDR} 发起备档请求";
1067
1068# -------------------------------------------------
1069# ------- Stuff that was forgotten ----------------
1070# -------------------------------------------------
1071
1072$Lang{Status} = "状态";
1073$Lang{PC_Summary} = "客户机报告";
1074$Lang{LOG_file} = "日志文件";
1075$Lang{LOG_files} = "日志文件列表";
1076$Lang{Old_LOGs} = "旧日志";
1077$Lang{Email_summary} = "电子邮件报告";
1078$Lang{Config_file} = "配置文件";
1079# $Lang{Hosts_file} = "Hosts file";
1080$Lang{Current_queues} = "当前队列";
1081$Lang{Documentation} = "文档资料";
1082
1083#$Lang{Host_or_User_name} = "<small>Host or User name:</small>";
1084$Lang{Go} = "确定";
1085$Lang{Hosts} = "客户机";
1086$Lang{Select_a_host} = "选择客户机名...";
1087
1088$Lang{There_have_been_no_archives} = "<h2> 这台机器还从来没有执行过备档操作!</h2>\n";
1089$Lang{This_PC_has_never_been_backed_up} = "<h2> 这台机器还从来没有被备份过!!</h2>\n";
1090$Lang{This_PC_is_used_by} = "<li>这台机器的用户包括 \${UserLink(\$user)}";
1091
1092$Lang{Extracting_only_Errors} = "(只提取错误信息)";
1093$Lang{XferLOG} = "传输日志";
1094$Lang{Errors}  = "错误";
1095
1096# ------------
1097$Lang{Last_email_sent_to__was_at___subject} = <<EOF;
1098<li>给用户 \${UserLink(\$user)} 的最近一封邮件送出于 \$mailTime,标题是"\$subj"。
1099EOF
1100# ------------
1101$Lang{The_command_cmd_is_currently_running_for_started} = <<EOF;
1102<li>命令 \$cmd 正在为客户机 \$host 运行,开始于 \$startTime。
1103EOF
1104
1105# -----------
1106$Lang{Host_host_is_queued_on_the_background_queue_will_be_backed_up_soon} = <<EOF;
1107<li>客户机 \$host 已在后台队列中等待(即将被备份)。
1108EOF
1109
1110# ----------
1111$Lang{Host_host_is_queued_on_the_user_queue__will_be_backed_up_soon} = <<EOF;
1112<li>客户机 \$host 已在用户队列中等待(即将被备份)。
1113EOF
1114
1115# ---------
1116$Lang{A_command_for_host_is_on_the_command_queue_will_run_soon} = <<EOF;
1117<li>针对客户机 \$host 的一条命令已在命令队列中等待(即将被执行)。
1118EOF
1119
1120# --------
1121$Lang{Last_status_is_state_StatusHost_state_reason_as_of_startTime} = <<EOF;
1122<li>最后状态是 \"\$Lang->{\$StatusHost{state}}\"\$reason,当时时间 \$startTime。
1123EOF
1124
1125# --------
1126$Lang{Last_error_is____EscHTML_StatusHost_error} = <<EOF;
1127<li>最后错误信息是 \"\${EscHTML(\$StatusHost{error})}\"。
1128EOF
1129
1130# ------
1131$Lang{Pings_to_host_have_failed_StatusHost_deadCnt__consecutive_times} = <<EOF;
1132<li>试图与客户机 \$host 联系(Ping 操作)已连续失败 \$StatusHost{deadCnt} 次。
1133EOF
1134
1135# -----
1136$Lang{Prior_to_that__pings} = "先前,Ping";
1137
1138# -----
1139$Lang{priorStr_to_host_have_succeeded_StatusHostaliveCnt_consecutive_times} = <<EOF;
1140<li>\$priorStr 客户机 \$host 已连续成功 \$StatusHost{aliveCnt} 次。
1141EOF
1142
1143$Lang{Because__host_has_been_on_the_network_at_least__Conf_BlackoutGoodCnt_consecutive_times___} = <<EOF;
1144<li>因为客户机 \$host 已经在网络上至少连续 \$Conf{BlackoutGoodCnt} 次,
1145在下列时段 \$blackoutStr,它将不进行备份操作。
1146EOF
1147
1148$Lang{__time0_to__time1_on__days} = "\$t0 to \$t1 在 \$days";
1149
1150$Lang{Backups_are_deferred_for_hours_hours_change_this_number} = <<EOF;
1151<li>备份被推迟 \$hours 小时
1152(<a href=\"\$MyURL?action=Stop_Dequeue_Backup&host=\$host\">改变时间</a>)。
1153EOF
1154
1155$Lang{tryIP} = " 和 \$StatusHost{dhcpHostIP}";
1156
1157# $Lang{Host_Inhost} = "Host \$In{host}";
1158
1159$Lang{checkAll} = <<EOF;
1160<tr><td class="fviewborder">
1161<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');">&nbsp;全选
1162</td><td colspan="5" align="center" class="fviewborder">
1163<input type="submit" name="Submit" value="恢复被选择的文件">
1164</td></tr>
1165EOF
1166
1167$Lang{checkAllHosts} = <<EOF;
1168<tr><td class="fviewborder">
1169<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');">&nbsp;全选
1170</td><td colspan="2" align="center" class="fviewborder">
1171<input type="submit" name="Submit" value="备档被选择的客户机">
1172</td></tr>
1173EOF
1174
1175$Lang{fileHeader} = <<EOF;
1176    <tr class="fviewheader"><td align=center> 文件/目录名</td>
1177       <td align="center"> 类型</td>
1178       <td align="center"> 读写权限</td>
1179       <td align="center"> 备份序列号</td>
1180       <td align="center"> 大小</td>
1181       <td align="center"> 修改日期</td>
1182    </tr>
1183EOF
1184
1185$Lang{Home} = "主页";
1186$Lang{Browse} = "浏览备份";
1187$Lang{Last_bad_XferLOG} = "最近出错传输日志";
1188$Lang{Last_bad_XferLOG_errors_only} = "最近出错传输日志(只含错误)";
1189
1190$Lang{This_display_is_merged_with_backup} = <<EOF;
1191<li> 本页显示的是与备份序列 #\$numF 合成的结果。
1192EOF
1193
1194$Lang{Visit_this_directory_in_backup} = <<EOF;
1195<li> 选择你想查看的备份:<select onChange="window.location=this.value">\$otherDirs </select>
1196EOF
1197
1198$Lang{Restore_Summary} = <<EOF;
1199\${h2("恢复报告")}
1200<p>
1201点击恢复序列号获取详情。
1202<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
1203<tr class="tableheader"><td align="center"> 恢复序列号 </td>
1204    <td align="center"> 结果 </td>
1205    <td align="right"> 开始时间 </td>
1206    <td align="right"> 耗时(分钟)</td>
1207    <td align="right"> 文件个数 </td>
1208    <td align="right"> 大小(MB) </td>
1209    <td align="right"> Tar 错误个数 </td>
1210    <td align="right"> 传输错误个数 </td>
1211</tr>
1212\$restoreStr
1213</table>
1214<p>
1215EOF
1216
1217$Lang{Archive_Summary} = <<EOF;
1218\${h2("备档报告")}
1219<p>
1220点击备档序列号获取详情。
1221<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
1222<tr class="tableheader"><td align="center"> 备档序列号 </td>
1223    <td align="center"> 结果 </td>
1224    <td align="right"> 开始时间 </td>
1225    <td align="right"> 耗时(分钟)</td>
1226</tr>
1227\$ArchiveStr
1228</table>
1229<p>
1230EOF
1231
1232$Lang{BackupPC__Documentation} = "BackupPC: 文档资料";
1233
1234$Lang{No} = "否";
1235$Lang{Yes} = "是";
1236
1237$Lang{The_directory_is_empty} = <<EOF;
1238<tr><td bgcolor="#ffffff">目录 \$dirDisplay 是空目录
1239</td></tr>
1240EOF
1241
1242#$Lang{on} = "开";
1243$Lang{off} = "关";
1244
1245$Lang{backupType_full}    = "完全";
1246$Lang{backupType_incr}    = "增量";
1247$Lang{backupType_active}  = "active";
1248$Lang{backupType_partial} = "部分";
1249
1250$Lang{failed} = "失败";
1251$Lang{success} = "成功";
1252$Lang{and} = "和";
1253
1254# ------
1255# Hosts states and reasons
1256$Lang{Status_idle} = "空闲";
1257$Lang{Status_backup_starting} = "备份已开始";
1258$Lang{Status_backup_in_progress} = "备份进行中";
1259$Lang{Status_restore_starting} = "恢复已开始";
1260$Lang{Status_restore_in_progress} = "恢复进行中";
1261$Lang{Status_admin_pending} = "文件链接待建立";
1262$Lang{Status_admin_running} = "文件链接建立中";
1263
1264$Lang{Reason_backup_done}    = "完成";
1265$Lang{Reason_restore_done}   = "恢复完成";
1266$Lang{Reason_archive_done}   = "备档完成";
1267$Lang{Reason_nothing_to_do}  = "空闲";
1268$Lang{Reason_backup_failed}  = "备份失败";
1269$Lang{Reason_restore_failed} = "恢复失败";
1270$Lang{Reason_archive_failed} = "备档失败";
1271$Lang{Reason_no_ping}        = "网络连接中断(no ping)";
1272$Lang{Reason_backup_canceled_by_user}  = "备份被用户取消";
1273$Lang{Reason_restore_canceled_by_user} = "恢复被用户取消";
1274$Lang{Reason_archive_canceled_by_user} = "备档被用户取消";
1275$Lang{Disabled_OnlyManualBackups}  = "自动备份被关闭";
1276$Lang{Disabled_AllBackupsDisabled} = "关闭";
1277
1278
1279# ---------
1280# Email messages
1281
1282# No backup ever
1283$Lang{EMailNoBackupEverSubj} = "BackupPC: 客户机 \$host 从未被成功备份过";
1284$Lang{EMailNoBackupEverMesg} = <<'EOF';
1285To: $user$domain
1286cc:
1287Subject: $subj
1288$headers
1289尊敬的用户 $userName,
1290
1291您的电脑 ($host) 还从来没有被我们的备份系统成功备份过。
1292正常情况下,当您的电脑与网络连接时电脑备份会自动进行。
1293如果您属于下面两种情况,请与系统管理员联系:
1294
1295  - 您的电脑经常是连在网络上的。这意味着可能是某些配置
1296     方面的问题导致备份无法进行。
1297
1298  - 您不希望您的电脑被备份,并且不愿再收到这些电子邮件。
1299
1300如果不是以上这些情况,请确认您的电脑是被连接在网络上的。
1301
1302此致敬礼,
1303
1304BackupPC Genie
1305https://backuppc.github.io/backuppc
1306EOF
1307
1308# No recent backup
1309$Lang{EMailNoBackupRecentSubj} = "BackupPC: 客户机 \$host 最近未被备份过";
1310$Lang{EMailNoBackupRecentMesg} = <<'EOF';
1311To: $user$domain
1312cc:
1313Subject: $subj
1314$headers
1315尊敬的用户 $userName,
1316
1317您的电脑 ($host) 已经有 $days 天没有被成功备份过了。您的电脑
1318第一次被备份是在 $firstTime 天前,直至 $days 天前已经被备份过 $numBackups 次。
1319正常情况下,当您的电脑与网络连接时电脑备份会自动进行。
1320
1321在最近 $days 天内,如果您的电脑已经与网络连接了若干小时,
1322请与系统管理员联系以判断为什么备份没有进行。
1323
1324除此之外,如果您不在办公室,您只能手动拷贝重要文件到其它存储介质上。
1325应该提醒您的是,如果您的电脑磁盘损坏,您在最近 $days 天内创建或修改
1326的文件,包括新收到的电子邮件和附件,将无法被恢复。
1327
1328此致敬礼,
1329
1330BackupPC Genie
1331https://backuppc.github.io/backuppc
1332EOF
1333
1334# Old Outlook files
1335$Lang{EMailOutlookBackupSubj} = "BackupPC: 客户机 \$host 上的微软 Outlook 文件需要备份";
1336$Lang{EMailOutlookBackupMesg} = <<'EOF';
1337To: $user$domain
1338cc:
1339Subject: $subj
1340$headers
1341尊敬的用户 $userName,
1342
1343您的电脑上的 Outlook 文件 $howLong。
1344
1345这些文件包括所有您的电子邮件,附件,通讯录及日程表信息。
1346您的电脑第一次被备份是在 $firstTime 天前,直至 $lastTime 天前已经被
1347备份过 $numBackups 次。但是,Outlook 在运行时锁住所有所属文件,
1348导致这些文件无法被备份。
1349
1350建议您依以下方式备份 Outlook 文件:
1351
13521。首先确认电脑是连接在网路上;
13532。退出 Outlook 及所有其它应用;
13543。使用网页浏览器访问此链接:
1355
1356    $CgiURL?host=$host
1357
1358选择 “开始增量备份”,启动增量备份操作;然后选择 “返回 $host 主页”
1359并用浏览器的 “刷新” 功能来检查该备份操作的状态。
1360
1361此致敬礼,
1362
1363BackupPC Genie
1364https://backuppc.github.io/backuppc
1365EOF
1366
1367$Lang{howLong_not_been_backed_up} = "还从未被成功备份过";
1368$Lang{howLong_not_been_backed_up_for_days_days} = "已经有 \$days 天未被备份过";
1369
1370#######################################################################
1371# RSS strings
1372#######################################################################
1373$Lang{RSS_Doc_Title}       = "BackupPC 服务器";
1374$Lang{RSS_Doc_Description} = "RSS feed for BackupPC";
1375$Lang{RSS_Host_Summary}    = <<EOF;
1376完全备份个数:\$fullCnt;
1377最后一次完全备份 (天前):\$fullAge;
1378完全备份大小 (GiB):\$fullSize;
1379完全备份速度 (MB/sec):\$fullRate;
1380增量备份个数:\$incrCnt;
1381最后一次增量备份 (天前):\$incrAge;
1382当前状态:\$host_state;
1383残: \$host_disabled;
1384最后一次备份结果:\$host_last_attempt;
1385EOF
1386
1387#######################################################################
1388# Configuration editor strings
1389#######################################################################
1390
1391$Lang{Only_privileged_users_can_edit_config_files} = "只有特权用户可以编辑服务器配置。";
1392$Lang{CfgEdit_Edit_Config} = "修改服务器配置";
1393$Lang{CfgEdit_Edit_Hosts}  = "增删客户机";
1394
1395$Lang{CfgEdit_Title_Server} = "服务器";
1396$Lang{CfgEdit_Title_General_Parameters} = "总体参数";
1397$Lang{CfgEdit_Title_Wakeup_Schedule} = "唤醒调度";
1398$Lang{CfgEdit_Title_Concurrent_Jobs} = "并行任务";
1399$Lang{CfgEdit_Title_Pool_Filesystem_Limits} = "备份池文件系统资源限制";
1400$Lang{CfgEdit_Title_Other_Parameters} = "其它参数";
1401$Lang{CfgEdit_Title_Remote_Apache_Settings} = "远程 Apache 服务器设置";
1402$Lang{CfgEdit_Title_Program_Paths} = "程序路径";
1403$Lang{CfgEdit_Title_Install_Paths} = "安装路径";
1404$Lang{CfgEdit_Title_Email} = "电子邮件";
1405$Lang{CfgEdit_Title_Email_settings} = "电子邮件设置";
1406$Lang{CfgEdit_Title_Email_User_Messages} = "用户邮件内容设置";
1407$Lang{CfgEdit_Title_CGI} = "CGI";
1408$Lang{CfgEdit_Title_Admin_Privileges} = "管理特权";
1409$Lang{CfgEdit_Title_Page_Rendering} = "网页外观";
1410$Lang{CfgEdit_Title_Paths} = "路径";
1411$Lang{CfgEdit_Title_User_URLs} = "用户 URLs";
1412$Lang{CfgEdit_Title_User_Config_Editing} = "用户配置编辑";
1413$Lang{CfgEdit_Title_Xfer} = "传输";
1414$Lang{CfgEdit_Title_Xfer_Settings} = "传输设置";
1415$Lang{CfgEdit_Title_Ftp_Settings} = "FTP 设置";
1416$Lang{CfgEdit_Title_Smb_Settings} = "Smb 设置";
1417$Lang{CfgEdit_Title_Tar_Settings} = "Tar 设置";
1418$Lang{CfgEdit_Title_Rsync_Settings} = "Rsync 设置";
1419$Lang{CfgEdit_Title_Rsyncd_Settings} = "Rsyncd 设置";
1420$Lang{CfgEdit_Title_Archive_Settings} = "备档设置";
1421$Lang{CfgEdit_Title_Include_Exclude} = "包含/排除";
1422$Lang{CfgEdit_Title_Smb_Paths_Commands} = "Smb 路径/命令";
1423$Lang{CfgEdit_Title_Tar_Paths_Commands} = "Tar 路径/命令";
1424$Lang{CfgEdit_Title_Rsync_Paths_Commands_Args} = "Rsync 路径/命令/参数";
1425$Lang{CfgEdit_Title_Rsyncd_Port_Args} = "Rsyncd 端口/参数";
1426$Lang{CfgEdit_Title_Archive_Paths_Commands} = "备档路径/命令";
1427$Lang{CfgEdit_Title_Schedule} = "调度";
1428$Lang{CfgEdit_Title_Full_Backups} = "完全备份";
1429$Lang{CfgEdit_Title_Incremental_Backups} = "增量备份";
1430$Lang{CfgEdit_Title_Blackouts} = "备份暂停期";
1431$Lang{CfgEdit_Title_Other} = "其它";
1432$Lang{CfgEdit_Title_Backup_Settings} = "备份设置";
1433$Lang{CfgEdit_Title_Client_Lookup} = "客户机查找";
1434$Lang{CfgEdit_Title_User_Commands} = "用户命令";
1435$Lang{CfgEdit_Title_Hosts} = "客户机";
1436
1437$Lang{CfgEdit_Hosts_Comment} = <<EOF;
1438要增加一台新的备份客户机,请点击"添加",然后在 "host" 列输入其主机名。
1439关于 "dhcp" 列的选择:只要该客户机的 IP 地址能被 nslookup 或 nmblookup 命令
1440获得,就不选择此标志位。"user" 列中填入该客户机的一个拥有者或使用者的用户名,
1441此用户拥有开始/中止/浏览/恢复该客户机备份的权限;同时此用户将被传送电子邮件,
1442所以此用户名必须是一个合法电子邮件用户名。"moreUsers" 列中可填入该客户机的
1443其他使用者的用户名,他们也拥有开始/中止/浏览/恢复该客户机备份的权限,
1444多个用户名间用逗号分隔且不能含空格。与 "user" 列不同的是,"moreUsers" 列
1445中用户不被传送电子邮件,所以他们不必是合法电子邮件用户名,只要能被
1446Apache Web 服务器认证登录即可。 如果想在一台现有客户机的管理配置的基础上
1447配置一台新机,该新机主机名可在 "host" 列以这种方式输入 "NEWHOST=COPYHOST" ,
1448这里 NEWHOST 是新机主机名,COPYHOST 是现有客户机主机名。也可以以这种方式
1449修改一个现有客户机的配置。要删除一台现有备份客户机,请点击其所在行的"删除"。
1450所有上述修改只有在点击"保存“后才能生效。被删除的备份客户机,其备份数据
1451并没有被删除。所以如果不慎"删除"一台备份客户机,只需重新"添加"即可。要想
1452完全删除一台备份客户机的备份数据,你需要手动删除备份服务器目录
1453 \$topDir/pc/HOST 下的所有文件,这里 HOST 是该客户机主机名。
1454EOF
1455
1456$Lang{CfgEdit_Header_Main} = <<EOF;
1457\${h1("总体配置编辑")}
1458EOF
1459
1460$Lang{CfgEdit_Header_Host} = <<EOF;
1461\${h1("客户机 \$host 配置编辑")}
1462<p>
1463注意:适用于所有客户机的全局性默认配置,其相应 “替换” 旁的方框是不被选择的。如果要修改本客户机的某项设置,请点击 “替换” 旁的方框。如果该设置已经处于被修改状态,则修改后不需点击 “替换” 旁的方框。如果要将其还原使用默认配置,则需点击 “替换” 旁的方框,使其处于未被修改状态。
1464<p>
1465EOF
1466
1467$Lang{CfgEdit_Button_Save}     = "保存";
1468$Lang{CfgEdit_Button_Insert}   = "插入";
1469$Lang{CfgEdit_Button_Delete}   = "删除";
1470$Lang{CfgEdit_Button_Add}      = "添加";
1471$Lang{CfgEdit_Button_Override} = "替换";
1472$Lang{CfgEdit_Button_New_Key}  = "文件卷名(Windows Share)";
1473$Lang{CfgEdit_Button_New_Share} = "New ShareName or '*'";
1474
1475$Lang{CfgEdit_Error_No_Save}
1476            = "错误:有误,无法保存";
1477$Lang{CfgEdit_Error__must_be_an_integer}
1478            = "错误:\$var 必须是整数";
1479$Lang{CfgEdit_Error__must_be_real_valued_number}
1480            = "错误:\$var 必须是实数,不能是浮点数";
1481$Lang{CfgEdit_Error__entry__must_be_an_integer}
1482            = "错误:\$var 内容 \$k 必须是整数";
1483$Lang{CfgEdit_Error__entry__must_be_real_valued_number}
1484            = "错误:\$var 内容 \$k 必须是实数,不能是浮点数";
1485$Lang{CfgEdit_Error__must_be_executable_program}
1486            = "错误:\$var 必须是可执行程序";
1487$Lang{CfgEdit_Error__must_be_valid_option}
1488            = "错误:\$var 必须是合法选项";
1489$Lang{CfgEdit_Error_Copy_host_does_not_exist}
1490            = "客户机 \$copyHost 不存在;生成全计算机名 \$fullHost。如果此客户机不是你想要的,请将它删除。";
1491
1492$Lang{CfgEdit_Log_Copy_host_config}
1493            = "用户 \$User 拷贝了客户机 \$fromHost 的配置到客户机 \$host\n";
1494$Lang{CfgEdit_Log_Delete_param}
1495            = "用户 \$User 从配置 \$conf 中删除了 \$p\n";
1496$Lang{CfgEdit_Log_Add_param_value}
1497            = "用户 \$User 添加了 \$p 到配置 \$conf 中,值设为 \$value\n";
1498$Lang{CfgEdit_Log_Change_param_value}
1499            = "用户 \$User 将配置 \$conf 中的 \$p 从 \$valueOld 更改为 \$valueNew\n";
1500$Lang{CfgEdit_Log_Host_Delete}
1501            = "用户 \$User 删除了客户机 \$host\n";
1502$Lang{CfgEdit_Log_Host_Change}
1503            = "用户 \$User 将客户机 \$host 上的 \$key 从 \$valueOld 更改为 \$valueNew\n";
1504$Lang{CfgEdit_Log_Host_Add}
1505            = "用户 \$User 添加了客户机 \$host: \$value\n";
1506
1507#end of lang_zh_CN.pm
1508