1#!/usr/bin/perl
2
3# By Serhiy Yakimchuck yakim@yakim.org.ua 02 sept 2012 vor version 3.2.1
4#
5#   This program is free software: you can redistribute it and/or modify
6#   it under the terms of the GNU General Public License as published by
7#   the Free Software Foundation, either version 3 of the License, or
8#   (at your option) any later version.
9#
10#   This program is distributed in the hope that it will be useful,
11#   but WITHOUT ANY WARRANTY; without even the implied warranty of
12#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13#   GNU General Public License for more details.
14#
15#   You should have received a copy of the GNU General Public License
16#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17#
18
19use utf8;
20# --------------------------------
21
22$Lang{Start_Archive} = "Запустити архівування";
23$Lang{Stop_Dequeue_Archive} = "Припинити/видалити з черги";
24$Lang{Start_Full_Backup} = " Зробити повний архів";
25$Lang{Start_Incr_Backup} = "Зробити інкрементальний архів";
26$Lang{Stop_Dequeue_Backup} = "Припилити/видалити з черги";
27$Lang{Restore} = "Відновити";
28
29$Lang{Type_full} = "повний";
30$Lang{Type_incr} = "інкрементальний";
31
32# -----
33
34$Lang{Only_privileged_users_can_view_admin_options} = "Тільки привілейовані користувачі можуть бачити адмінські налаштування.";
35$Lang{H_Admin_Options} = "BackupPC Сервер: Адмінські налаштування";
36$Lang{Admin_Options} = "Адмінські налаштування";
37$Lang{Admin_Options_Page} = <<EOF;
38\${h1(qq{$Lang{Admin_Options}})}
39<br>
40\${h2("Керування сервером")}
41<form name="ReloadForm" action="\$MyURL" method="get">
42<input type="hidden" name="action" value="">
43<table class="tableStnd">
44  <tr><td>Перечитати налаштування сервера:<td><input type="button" value="Перечитати"
45     onClick="document.ReloadForm.action.value='Reload';
46              document.ReloadForm.submit();">
47</table>
48</form>
49<!--
50\${h2("Керування сервером")}
51<ul>
52  <li><i>Other options can go here... e.g.,</i>
53  <li>Edit server configuration
54</ul>
55-->
56EOF
57
58$Lang{Unable_to_connect_to_BackupPC_server} = "Неможливо зв'язатися з сервером BackupPC";
59$Lang{Unable_to_connect_to_BackupPC_server_error_message} = <<EOF;
60This CGI script (\$MyURL) is unable to connect to the BackupPC
61server on \$Conf{ServerHost} port \$Conf{ServerPort}.<br>
62The error was: \$err.<br>
63Perhaps the BackupPC server is not running or there is a configuration error.
64Please report this to your Sys Admin.
65EOF
66
67$Lang{Admin_Start_Server} = <<EOF;
68\${h1(qq{$Lang{Unable_to_connect_to_BackupPC_server}})}
69<form action="\$MyURL" method="get">
70The BackupPC server at <tt>\$Conf{ServerHost}</tt> port <tt>\$Conf{ServerPort}</tt>
71is not currently running (maybe you just stopped it, or haven't yet started it).<br>
72Do you want to start it?
73<input type="hidden" name="action" value="startServer">
74<input type="submit" value="Start Server" name="ignore">
75</form>
76EOF
77
78# -----
79
80$Lang{H_BackupPC_Server_Status} = "Статус сервера BackupPC";
81
82$Lang{BackupPC_Server_Status_General_Info}= <<EOF;
83\${h2(\"Загальна інформація про сервер\")}
84
85<ul>
86<li> PID сервера - \$Info{pid},  на комп'ютері \$Conf{ServerHost},
87     версія \$Info{Version}, запущений \$serverStartTime.
88<li> Цей статус був згенерований \$now.
89<li> Конфігурація останній раз була завантажена \$configLoadTime.
90<li> Наступного разу комп\'ютери будуть поставлені до черги \$nextWakeupTime.
91<li> Інша інформація:
92    <ul>
93        <li>\$numBgQueue запитів в черзі на резервне копіювання з часу останнього запуску планувальника,
94        <li>\$numUserQueue запитів в черзі користувачів на резервне копіювання,
95        <li>\$numCmdQueue запитів в черзі на виконання команд,
96        \$poolInfo
97        <li>Файлова система пула зайнята на \$Info{DUlastValue}%
98            (\$DUlastTime), сьогодняшній максимум \$Info{DUDailyMax}% (\$DUmaxTime)
99            вчорашній максимум \$Info{DUDailyMaxPrev}%.
100        <li>Inode Файлова система пула зайнята на \$Info{DUInodelastValue}%
101            (\$DUlastTime), сьогодняшній максимум \$Info{DUInodeDailyMax}% (\$DUInodemaxTime)
102            вчорашній максимум \$Info{DUInodeDailyMaxPrev}%.
103    </ul>
104</ul>
105EOF
106
107$Lang{BackupPC_Server_Status} = <<EOF;
108\${h1(qq{$Lang{H_BackupPC_Server_Status}})}
109
110<p>
111\${h2("Запущені зараз завдання")}
112<p>
113<table class="tableStnd sortable" border cellspacing="1" cellpadding="3">
114<tr class="tableheader"><td> Хост </td>
115    <td> Тип </td>
116    <td> Користувач </td>
117    <td> час запуску </td>
118    <td> Команда </td>
119    <td align="center"> PID </td>
120    <td align="center"> Xfer PID </td>
121    <td align="center"> Status </td>
122    <td align="center"> Count </td>
123    </tr>
124\$jobStr
125</table>
126
127<p>
128\$generalInfo
129
130\${h2("Помилки, що потребують уваги")}
131<p>
132<table class="tableStnd sortable" border cellspacing="1" cellpadding="3">
133<tr class="tableheader"><td align="center"> Хост </td>
134    <td align="center"> Тип </td>
135    <td align="center"> Користувач </td>
136    <td align="center"> Остання спроба </td>
137    <td align="center"> Деталі </td>
138    <td align="center"> Час помилки </td>
139    <td> Остання помилка (крім відсутності пінга) </td></tr>
140\$statusStr
141</table>
142EOF
143
144# --------------------------------
145$Lang{BackupPC__Server_Summary} = "BackupPC: Зведена інформація по хостах";
146$Lang{BackupPC__Archive} = "BackupPC: Архів";
147$Lang{BackupPC_Summary} = <<EOF;
148
149\${h1(qq{$Lang{BackupPC__Server_Summary}})}
150<p>
151<ul>
152<li>Цей статус було згенеровано \$now.
153<li>Файлова система пула зайнята на \$Info{DUlastValue}%
154    (\$DUlastTime), сьогодняшній максимум \$Info{DUDailyMax}% (\$DUmaxTime)
155        вчорашній максимум \$Info{DUDailyMaxPrev}%.
156<li>Inode Файлова система пула зайнята на \$Info{DUInodelastValue}%
157    (\$DUlastTime), сьогодняшній максимум \$Info{DUInodeDailyMax}% (\$DUInodemaxTime)
158    вчорашній максимум \$Info{DUInodeDailyMaxPrev}%.
159</ul>
160</p>
161
162\${h2("Хости, що мають резервні копії")}
163<p>
164Загалом \$hostCntGood хостів, що містять:
165<ul>
166<li> \$fullTot загальний розмір повних резервних копій \${fullSizeTot}GiB
167     (до об\'єднання та стискання),
168<li> \$incrTot загальний розмір інкрементальних резервних копій \${incrSizeTot}GiB
169     (до об\'єднання та стискання).
170</ul>
171</p>
172<table class="sortable" id="host_summary_backups" border cellpadding="3" cellspacing="1">
173<tr class="tableheader"><td> Хост </td>
174    <td align="center"> Користувач </td>
175    <td align="center"> Коментар </td>
176    <td align="center"> #Кіль-ть повн. копій </td>
177    <td align="center"> Вік повн. копій (дні) </td>
178    <td align="center"> Повний розмір (GiB) </td>
179    <td align="center"> Швидкість (MB/s) </td>
180    <td align="center"> #Кіль-ть інкр. копій </td>
181    <td align="center"> Вік інкр. копій (дні) </td>
182    <td align="center"> Остання копія (days) </td>
183    <td align="center"> Стан </td>
184    <td align="center"> #Xfer помилки </td>
185    <td align="center"> Остання дія </td></tr>
186\$strGood
187</table>
188\${h2("Хости без резервних копій")}
189<p>
190Загалом \$hostCntNone хостів без резервних копій.
191<p>
192<table class="sortable" id="host_summary_nobackups" border cellpadding="3" cellspacing="1">
193<tr class="tableheader"><td> Хост </td>
194    <td align="center"> Користувач </td>
195    <td align="center"> Коментар </td>
196    <td align="center"> #Кіль-ть повн. копій </td>
197    <td align="center"> Вік повн. копій (дні) </td>
198    <td align="center"> Повний розмір (GiB) </td>
199    <td align="center"> Швидкість (MB/s) </td>
200    <td align="center"> #Кіль-ть інкр. копій </td>
201    <td align="center"> Вік інкр. копій (дні) </td>
202    <td align="center"> Остання копія (days) </td>
203    <td align="center"> Стан </td>
204    <td align="center"> #Xfer помилки </td>
205    <td align="center"> Остання дія </td></tr>
206\$strNone
207</table>
208EOF
209
210$Lang{BackupPC_Archive} = <<EOF;
211\${h1(qq{$Lang{BackupPC__Archive}})}
212<script language="javascript" type="text/javascript">
213<!--
214
215    function checkAll(location)
216    {
217      for (var i=0;i<document.form1.elements.length;i++)
218      {
219        var e = document.form1.elements[i];
220        if ((e.checked || !e.checked) && e.name != \'all\') {
221            if (eval("document.form1."+location+".checked")) {
222                e.checked = true;
223            } else {
224                e.checked = false;
225            }
226        }
227      }
228    }
229
230    function toggleThis(checkbox)
231    {
232       var cb = eval("document.form1."+checkbox);
233       cb.checked = !cb.checked;
234    }
235
236//-->
237</script>
238
239Всього \$hostCntGood хостів, що мають повну резервну копію загальним розміром \${fullSizeTot}GiB
240<p>
241<form name="form1" method="post" action="\$MyURL">
242<input type="hidden" name="fcbMax" value="\$checkBoxCnt">
243<input type="hidden" name="type" value="1">
244<input type="hidden" name="host" value="\${EscHTML(\$archHost)}">
245<input type="hidden" name="action" value="Archive">
246<table class="tableStnd" border cellpadding="3" cellspacing="1">
247<tr class="tableheader"><td align=center> Host</td>
248    <td align="center"> Користувач </td>
249    <td align="center"> Розмір копії </td>
250\$strGood
251\$checkAllHosts
252</table>
253</form>
254<p>
255
256EOF
257
258$Lang{BackupPC_Archive2} = <<EOF;
259\${h1(qq{$Lang{BackupPC__Archive}})}
260Архівування наступлих хостів
261<ul>
262\$HostListStr
263</ul>
264<form action="\$MyURL" method="post">
265\$hiddenStr
266<input type="hidden" name="action" value="Archive">
267<input type="hidden" name="host" value="\${EscHTML(\$archHost)}">
268<input type="hidden" name="type" value="2">
269<input type="hidden" value="0" name="archive_type">
270<table class="tableStnd" border cellspacing="1" cellpadding="3">
271\$paramStr
272<tr>
273    <td colspan=2><input type="submit" value="Почати архівування" name="ignore"></td>
274</tr>
275</form>
276</table>
277EOF
278
279$Lang{BackupPC_Archive2_location} = <<EOF;
280<tr>
281    <td>Місцезнаходження/Пристрій архіву</td>
282    <td><input type="text" value="\$ArchiveDest" name="archive_device"></td>
283</tr>
284EOF
285
286$Lang{BackupPC_Archive2_compression} = <<EOF;
287<tr>
288    <td>Стискання</td>
289    <td>
290    <input type="radio" value="0" name="compression" \$ArchiveCompNone>None<br>
291    <input type="radio" value="1" name="compression" \$ArchiveCompGzip>gzip<br>
292    <input type="radio" value="2" name="compression" \$ArchiveCompBzip2>bzip2
293    </td>
294</tr>
295EOF
296
297$Lang{BackupPC_Archive2_parity} = <<EOF;
298<tr>
299    <td>Відсоток даних парності (0 = disable, 5 = typical)</td>
300    <td><input type="numeric" value="\$ArchivePar" name="par"></td>
301</tr>
302EOF
303
304$Lang{BackupPC_Archive2_split} = <<EOF;
305<tr>
306    <td>Розділити на частини</td>
307    <td><input type="numeric" value="\$ArchiveSplit" name="splitsize">Megabytes</td>
308</tr>
309EOF
310
311# -----------------------------------
312$Lang{Pool_Stat} = <<EOF;
313        <li>Пул займає \${poolSize}GiB в тому числі \$info->{"\${name}FileCnt"} файлів
314            та \$info->{"\${name}DirCnt"} тек (на \$poolTime),
315        <li>Під час хешування пулу виявлено \$info->{"\${name}FileCntRep"} файлів що
316            повторюються з найбільшою кількістю повторень \$info->{"\${name}FileRepMax"},
317        <li>Під час нічного очищення видалено \$info->{"\${name}FileCntRm"} файлів
318            загальним розміром \${poolRmSize}GiB (близько \$poolTime),
319EOF
320
321# --------------------------------
322$Lang{BackupPC__Backup_Requested_on__host} = "BackupPC: Запит на резервне копіювання з \$host";
323$Lang{BackupPC__Delete_Requested_for_a_backup_of__host} = "BackupPC: Delete Requested for a backup of \$host";
324# --------------------------------
325$Lang{REPLY_FROM_SERVER} = <<EOF;
326\${h1(\$str)}
327<p>
328Відповідь з сервера: \$reply
329<p>
330Повернутися на сторінку хоста <a href="\$MyURL?host=\$host">\$host </a>.
331EOF
332# --------------------------------
333$Lang{BackupPC__Start_Backup_Confirm_on__host} = "BackupPC: Start Backup Confirm on \$host";
334# --------------------------------
335$Lang{Are_you_sure_start} = <<EOF;
336\${h1("Ви впевнені?")}
337<p>
338Резервне \$type копіювання на \$host.
339
340<form name="Confirm" action="\$MyURL" method="get">
341<input type="hidden" name="host" value="\$host">
342<input type="hidden" name="hostIP" value="\$ipAddr">
343<input type="hidden" name="doit" value="1">
344<input type="hidden" name="action" value="">
345Ви дійсно хочете це зробити?
346<input type="button" value="\$buttonText"
347  onClick="document.Confirm.action.value='\$In{action}';
348           document.Confirm.submit();">
349<input type="submit" value="No" name="ignore">
350</form>
351EOF
352# --------------------------------
353$Lang{BackupPC__Stop_Backup_Confirm_on__host} = "BackupPC: Stop Backup Confirm on \$host";
354# --------------------------------
355$Lang{Are_you_sure_stop} = <<EOF;
356
357\${h1("Ви впевнені?")}
358
359<p>
360Ви зупиняєте/видаляєте з черги резервне копіювання на \$host;
361
362<form name="Confirm" action="\$MyURL" method="get">
363<input type="hidden" name="host"   value="\$host">
364<input type="hidden" name="doit"   value="1">
365<input type="hidden" name="action" value="">
366Also, please don\'t start another backup for
367<input type="text" name="backoff" size="10" value="\$backoff"> hours.
368<p>
369Ви дійсно хочете це зробити?
370<input type="button" value="\$buttonText"
371  onClick="document.Confirm.action.value='\$In{action}';
372           document.Confirm.submit();">
373<input type="submit" value="No" name="ignore">
374</form>
375
376EOF
377# --------------------------------
378$Lang{Only_privileged_users_can_view_queues_} = "Тільки привілейовані користувачі можуть переглядати черги.";
379# --------------------------------
380$Lang{Only_privileged_users_can_archive} = "Тільки привілейовані користувачі можуть створювати резервну копію.";
381# --------------------------------
382$Lang{BackupPC__Queue_Summary} = "BackupPC: Зведена інформація по чергам завдань";
383# --------------------------------
384$Lang{Backup_Queue_Summary} = <<EOF;
385\${h1("Зведена інформація по чергам завдань")}
386\${h2("Черга завдань користувачів")}
387<p>
388Наступні запити користувачів поставлені до черги:
389</p>
390<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
391<tr class="tableheader"><td> Хост </td>
392    <td> Action </td>
393    <td> Час запиту </td>
394    <td> Користувач </td></tr>
395\$strUser
396</table>
397
398\${h2("Зведена інформація по фоновій черзі")}
399<p>
400Наступні фонові запити були поставлені до черги:
401</p>
402<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
403<tr class="tableheader"><td> Хост </td>
404    <td> Action </td>
405    <td> Час запиту </td>
406    <td> Користувач </td></tr>
407\$strBg
408</table>
409\${h2("Зведена інформація по черзі команд")}
410<p>
411Наступні команди були поставлені до черги:
412</p>
413<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
414<tr class="tableheader"><td> Хост </td>
415    <td> Action </td>
416    <td> Час запиту </td>
417    <td> Користувач </td>
418    <td> Команда </td></tr>
419\$strCmd
420</table>
421EOF
422
423# --------------------------------
424$Lang{Backup_PC__Log_File__file} = "BackupPC: Файли \$file";
425$Lang{Log_File__file__comment} = <<EOF;
426\${h1("Файл \$file \$comment")}
427<p>
428EOF
429# --------------------------------
430$Lang{Contents_of_log_file} = <<EOF;
431Вміст файлу <tt>\$file</tt>, було змінено \$mtimeStr \$comment
432EOF
433
434# --------------------------------
435$Lang{skipped__skipped_lines} = "[ пропущено \$skipped рядків ]\n";
436# --------------------------------
437$Lang{_pre___Can_t_open_log_file__file} = "<pre>\nНе вдається відкрити файл логу \$file\n";
438
439# --------------------------------
440$Lang{BackupPC__Log_File_History} = "BackupPC: Історія лог-файлу";
441$Lang{Log_File_History__hdr} = <<EOF;
442\${h1("Історія лог-файлу \$hdr")}
443<p>
444<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
445<tr class="tableheader"><td align="center"> Файл </td>
446    <td align="center"> Розмір </td>
447    <td align="center"> Час зміни </td></tr>
448\$str
449</table>
450EOF
451
452# -------------------------------
453$Lang{Recent_Email_Summary} = <<EOF;
454\${h1("Останні поштові відправлення (В зворотньому порядку)")}
455<p>
456<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
457<tr class="tableheader"><td align="center"> Отримувач </td>
458    <td align="center"> Хост </td>
459    <td align="center"> Час </td>
460    <td align="center"> Тема </td></tr>
461\$str
462</table>
463EOF
464
465
466# ------------------------------
467$Lang{Browse_backup__num_for__host} = "BackupPC: Продивитися резервну копію \$num для \$host";
468
469# ------------------------------
470$Lang{Restore_Options_for__host} = "BackupPC: Налаштування відновлення для \$host";
471$Lang{Restore_Options_for__host2} = <<EOF;
472\${h1("Restore Options for \$host")}
473<p>
474You have selected the following files/directories from
475Ви позначили ластупні файли/теки з
476ресурсу \$share, номер резервної копіїr #\$num:
477<ul>
478\$fileListStr
479</ul>
480</p><p>
481У Вас є три варіанта відновлення обраних файлів/тек.
482Виберіть, будь ласка, один з них:
483</p>
484\${h2("Варіант 1: Пряме відновлення")}
485<p>
486EOF
487
488$Lang{Restore_Options_for__host_Option1} = <<EOF;
489Ви можете запустити відновлення файла прямо на
490<b>\$directHost</b>.
491</p><p>
492<b>Увага!:</b> Всі існуючі файли будуть перезаписані!
493</p>
494<form action="\$MyURL" method="post" name="direct">
495<input type="hidden" name="host" value="\${EscHTML(\$host)}">
496<input type="hidden" name="num" value="\$num">
497<input type="hidden" name="type" value="3">
498\$hiddenStr
499<input type="hidden" value="\$In{action}" name="action">
500<table class="tableStnd" border="0">
501<tr>
502    <td>Restore the files to host</td>
503    <td><!--<input type="text" size="40" value="\${EscHTML(\$host)}"
504	 name="hostDest">-->
505	 <select name="hostDest" onChange="document.direct.shareDest.value=''">
506	 \$hostDestSel
507	 </select>
508	 <script language="Javascript">
509	 function myOpen(URL) {
510		window.open(URL,'','width=500,height=400');
511	 }
512	 </script>
513	 <!--<a href="javascript:myOpen('\$MyURL?action=findShares&host='+document.direct.hostDest.options.value)">Search for available shares (NOT IMPLEMENTED)</a>--></td>
514</tr><tr>
515    <td>Restore the files to share</td>
516    <td><input type="text" size="40" value="\${EscHTML(\$share)}"
517	 name="shareDest"></td>
518</tr><tr>
519    <td>Restore the files below dir<br>(relative to share)</td>
520    <td valign="top"><input type="text" size="40" maxlength="256"
521	value="\${EscHTML(\$pathHdr)}" name="pathHdr"></td>
522</tr><tr>
523    <td><input type="submit" value="Start Restore" name="ignore"></td>
524</table>
525</form>
526EOF
527
528$Lang{Restore_Options_for__host_Option1_disabled} = <<EOF;
529Пряме відновлення заборонене для хоста \${EscHTML(\$hostDest)}.
530Будб ласка оберіть інший варіант відновлення.
531EOF
532
533# ------------------------------
534$Lang{Option_2__Download_Zip_archive} = <<EOF;
535<p>
536\${h2("Варіант 2: Звантажити Zip архів")}
537<p>
538Ви можете звантажити zip-архів, що буде містити всі обрані файли/теки.
539Ви можете використати локальну програму, наприклад WinZip, для того
540щоб продивитися або відновити будь-які файли.
541</p><p>
542<b>Увага:</b> в залежності від того, які файли/теки Ви позначили залежить розмір архіву.
543Процес його створення та звантаження може зайняти деякий час. Ви маєте бути впевнені,
544що Вам вистачить місця на локальному диску для його збереження.
545</p>
546<form action="\$MyURL" method="post">
547<input type="hidden" name="host" value="\${EscHTML(\$host)}">
548<input type="hidden" name="num" value="\$num">
549<input type="hidden" name="type" value="2">
550\$hiddenStr
551<input type="hidden" value="\$In{action}" name="action">
552<input type="checkbox" value="1" name="relative" checked> Створити архів відносно
553 \${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)}
554(інакше архів буде містити повні шляхи).
555<br>
556<table class="tableStnd" border="0">
557<tr>
558    <td>Compression (0=off, 1=fast,...,9=best)</td>
559    <td><input type="text" size="6" value="5" name="compressLevel"></td>
560</tr><tr>
561    <td>Code page (e.g. cp866)</td>
562    <td><input type="text" size="6" value="utf8" name="codePage"></td>
563</tr>
564</table>
565<br>
566<input type="submit" value="Download Zip File" name="ignore">
567</form>
568EOF
569
570# ------------------------------
571
572$Lang{Option_2__Download_Zip_archive2} = <<EOF;
573<p>
574\${h2("Option 2: Download Zip archive")}
575<p>
576Archive::Zip не встановлено тому Ви не можете звантажити
577zip-архів.
578Попросіть системного адміністратора встановити Archive::Zip з
579<a href="http://www.cpan.org">www.cpan.org</a>.
580</p>
581EOF
582
583
584# ------------------------------
585$Lang{Option_3__Download_Zip_archive} = <<EOF;
586\${h2("Option 3: Звантажити Tar архів")}
587<p>
588Ви можете звантажити tar-архів, що буде містити всі обрані файли/теки.
589Ви можете використати локальну програму, наприклад WinZip або tar, для того
590щоб продивитися або відновити будь-які файли.
591</p><p>
592<b>Увага:</b> в залежності від того, які файли/теки Ви позначили залежить розмір архіву.
593Процес його створення та звантаження може зайняти деякий час. Ви маєте бути впевнені,
594що Вам вистачить місця на локальному диску для його збереження.
595</p>
596<form action="\$MyURL" method="post">
597<input type="hidden" name="host" value="\${EscHTML(\$host)}">
598<input type="hidden" name="num" value="\$num">
599<input type="hidden" name="type" value="1">
600\$hiddenStr
601<input type="hidden" value="\$In{action}" name="action">
602<input type="checkbox" value="1" name="relative" checked> Створити архів відносно
603 \${EscHTML(\$pathHdr eq "" ? "/" : \$pathHdr)}
604(інакше архів буде містити повні шляхи).
605<br>
606<input type="submit" value="Download Tar File" name="ignore">
607</form>
608EOF
609
610
611# ------------------------------
612$Lang{Restore_Confirm_on__host} = "BackupPC: Підтвердження відновлення на \$host";
613
614$Lang{Are_you_sure} = <<EOF;
615\${h1("Ви впевнені?")}
616<p>
617Ви починаєте пряме відновлення на комп\'ютер \$In{hostDest}.
618Наступні файли будуть відновлені до ресурсу \$In{shareDest}, з
619архівної копії номер \$num:
620<p>
621<table class="tableStnd" border>
622<tr class="tableheader"><td>Original file/dir</td><td>Will be restored to</td></tr>
623\$fileListStr
624</table>
625
626<form name="RestoreForm" action="\$MyURL" method="post">
627<input type="hidden" name="host" value="\${EscHTML(\$host)}">
628<input type="hidden" name="hostDest" value="\${EscHTML(\$In{hostDest})}">
629<input type="hidden" name="shareDest" value="\${EscHTML(\$In{shareDest})}">
630<input type="hidden" name="pathHdr" value="\${EscHTML(\$In{pathHdr})}">
631<input type="hidden" name="num" value="\$num">
632<input type="hidden" name="type" value="4">
633<input type="hidden" name="action" value="">
634\$hiddenStr
635Ви дійсно хочете це зробити?
636<input type="button" value="\$Lang->{Restore}"
637 onClick="document.RestoreForm.action.value='Restore';
638          document.RestoreForm.submit();">
639<input type="submit" value="No" name="ignore">
640</form>
641EOF
642
643
644# --------------------------
645$Lang{Restore_Requested_on__hostDest} = "BackupPC: Запит на відновлення до \$hostDest";
646$Lang{Reply_from_server_was___reply} = <<EOF;
647\${h1(\$str)}
648<p>
649Відповідь сервера була: \$reply
650<p>
651Поверніться до <a href="\$MyURL?host=\$hostDest">\$hostDest home page</a>.
652EOF
653
654$Lang{BackupPC_Archive_Reply_from_server} = <<EOF;
655\${h1(\$str)}
656<p>
657Відповідь сервера була: \$reply
658EOF
659
660
661# --------------------------------
662$Lang{BackupPC__Delete_Backup_Confirm__num_of__host} = "BackupPC: Delete Backup Confirm #\$num of \$host";
663# --------------------------------
664$Lang{A_filled} = "a filled";
665$Lang{An_unfilled} = "an unfilled";
666$Lang{Are_you_sure_delete} = <<EOF;
667\${h1("Are you sure?")}
668<p>
669You are about to delete \$filled \$type backup #\$num of \$host.
670
671<form name="Confirm" action="\$MyURL" method="get">
672
673<input type="hidden" name="host" value="\${EscHTML(\$host)}">
674<input type="hidden" name="num" value="\$num">
675
676<input type="hidden" name="doit" value="1">
677<input type="hidden" name="action" value="">
678
679Do you really want to do this?
680
681<input type="button" value="\${EscHTML(\$Lang->{CfgEdit_Button_Delete})}"
682 onClick="document.Confirm.action.value='deleteBackup';
683          document.Confirm.submit();">
684
685<input type="submit" value="No" name="ignore">
686</form>
687EOF
688
689# -------------------------
690$Lang{Host__host_Backup_Summary} = "BackupPC: Зведена інформація по резервному копіюванню хоста \$host ";
691
692$Lang{Host__host_Backup_Summary2} = <<EOF;
693\${h1("Зведена інформація по резервному копіюванню хоста \$host")}
694<p>
695\$warnStr
696<ul>
697\$statusStr
698</ul>
699</p>
700\${h2("Дії користувача")}
701<p>
702<form name="StartStopForm" action="\$MyURL" method="get">
703<input type="hidden" name="host"   value="\$host">
704<input type="hidden" name="action" value="">
705\$startIncrStr
706<input type="button" value="\$Lang->{Start_Full_Backup}"
707 onClick="document.StartStopForm.action.value='Start_Full_Backup';
708          document.StartStopForm.submit();">
709<input type="button" value="\$Lang->{Stop_Dequeue_Backup}"
710 onClick="document.StartStopForm.action.value='Stop_Dequeue_Backup';
711          document.StartStopForm.submit();">
712</form>
713</p>
714\${h2("Інформація про резервні копії")}
715<p>
716Натисніть на номер резервної копії для огляду та відновлення файлів з неї.
717</p>
718<table class="tableStnd sortable" border cellspacing="1" cellpadding="3">
719<tr class="tableheader"><td align="center"> Рез. Копія# </td>
720    <td align="center"> тип </td>
721    <td align="center"> Повний </td>
722    <td align="center"> Рівень </td>
723    <td align="center"> Дата початку </td>
724    <td align="center"> Тривалість/хв </td>
725    <td align="center"> Вік/днів </td>
726    \$deleteHdrStr
727    <td align="center"> Серверний шлях копії </td>
728</tr>
729\$str
730</table>
731<p>
732
733\$restoreStr
734</p>
735\${h2("Зведена інформація про помилки Xfer")}
736<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
737<tr class="tableheader"><td align="center"> Backup# </td>
738    <td align="center"> Тип </td>
739    <td align="center"> Журнал </td>
740    <td align="center"> #Xfer помилок </td>
741    <td align="center"> #паганих файлів </td>
742    <td align="center"> #паганих ресурсів </td>
743    <td align="center"> #tar помилок </td>
744</tr>
745\$errStr
746</table>
747
748\${h2("Зведена інформація по файлах")}
749<p>
750Існуючі файли, це ті, які вже були в пулі; нові файли це ті,
751що тільки-но додаються до пулу.
752Пусті файли та SMB-помилки не враховуються
753</p>
754<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
755<tr class="tableheader"><td colspan="2" bgcolor="#ffffff"></td>
756    <td align="center" colspan="3"> Totals </td>
757    <td align="center" colspan="2"> Existing Files </td>
758    <td align="center" colspan="2"> New Files </td>
759</tr>
760<tr class="tableheader sortheader">
761    <td align="center"> Рез. копія# </td>
762    <td align="center"> Тип </td>
763    <td align="center"> #Файли </td>
764    <td align="center"> Розмір/MB </td>
765    <td align="center"> MB/с </td>
766    <td align="center"> #Файли </td>
767    <td align="center"> Розмір/MB </td>
768    <td align="center"> #Файли </td>
769    <td align="center"> Розмір/MB </td>
770</tr>
771\$sizeStr
772</table>
773
774\${h2("Зведена інформація про стискання")}
775<p>
776Рівень стискання нових та існуючих файлів.
777</p>
778<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
779<tr class="tableheader"><td colspan="3" bgcolor="#ffffff"></td>
780    <td align="center" colspan="3"> Існуючі файли </td>
781    <td align="center" colspan="3"> Нові файли </td>
782</tr>
783<tr class="tableheader sortheader"><td align="center"> Рез. копія# </td>
784    <td align="center"> Тип </td>
785    <td align="center"> Рівень стиск. </td>
786    <td align="center"> Розмір/MB </td>
787    <td align="center"> Стиск./MB </td>
788    <td align="center"> Стиск </td>
789    <td align="center"> Розмір/MB </td>
790    <td align="center"> Стиск/MB </td>
791    <td align="center"> Стиск </td>
792</tr>
793\$compStr
794</table>
795EOF
796
797$Lang{Host__host_Archive_Summary} = "BackupPC: Host \$host Archive Summary";
798$Lang{Host__host_Archive_Summary2} = <<EOF;
799\${h1("Host \$host Archive Summary")}
800<p>
801\$warnStr
802<ul>
803\$statusStr
804</ul>
805
806\${h2("Дії користувачів")}
807<p>
808<form name="StartStopForm" action="\$MyURL" method="get">
809<input type="hidden" name="archivehost" value="\$host">
810<input type="hidden" name="host" value="\$host">
811<input type="hidden" name="action" value="">
812<input type="button" value="\$Lang->{Start_Archive}"
813 onClick="document.StartStopForm.action.value='Start_Archive';
814          document.StartStopForm.submit();">
815<input type="button" value="\$Lang->{Stop_Dequeue_Archive}"
816 onClick="document.StartStopForm.action.value='Stop_Dequeue_Archive';
817          document.StartStopForm.submit();">
818</form>
819
820\$ArchiveStr
821
822EOF
823
824# -------------------------
825$Lang{Error} = "BackupPC: Помилки";
826$Lang{Error____head} = <<EOF;
827\${h1("Помилка: \$head")}
828<p>\$mesg</p>
829EOF
830
831# -------------------------
832$Lang{NavSectionTitle_} = "Сервер";
833
834# -------------------------
835$Lang{Backup_browse_for__host} = <<EOF;
836\${h1("Продивитися резервні копії для \$host")}
837
838<script language="javascript" type="text/javascript">
839<!--
840
841    function checkAll(location)
842    {
843      for (var i=0;i<document.form1.elements.length;i++)
844      {
845        var e = document.form1.elements[i];
846        if ((e.checked || !e.checked) && e.name != \'all\') {
847            if (eval("document.form1."+location+".checked")) {
848            	e.checked = true;
849            } else {
850            	e.checked = false;
851            }
852        }
853      }
854    }
855
856    function toggleThis(checkbox)
857    {
858       var cb = eval("document.form1."+checkbox);
859       cb.checked = !cb.checked;
860    }
861
862//-->
863</script>
864
865<form name="form0" method="post" action="\$MyURL">
866<input type="hidden" name="num" value="\$num">
867<input type="hidden" name="host" value="\$host">
868<input type="hidden" name="share" value="\${EscHTML(\$share)}">
869<input type="hidden" name="action" value="browse">
870<ul>
871<li> You are browsing backup #\$num, which started around \$backupTime
872        (\$backupAge days ago),
873\$filledBackup
874<li> Увійти в текуy: <input type="text" name="dir" size="50" maxlength="4096" value="\${EscHTML(\$dir)}"> <input type="submit" value="\$Lang->{Go}" name="Submit">
875<li> Натисніть на теку нижче для входу в неї,
876<li> Натисніть на файл нижче для його відновлення,
877<li> Ви можете переглянути резервну копію <a href="\$MyURL?action=dirHistory&host=\${EscURI(\$host)}&share=\$shareURI&dir=\$pathURI">history</a> of the current directory.
878</ul>
879</form>
880
881\${h2("Contents of \$dirDisplay")}
882<form name="form1" method="post" action="\$MyURL">
883<input type="hidden" name="num" value="\$num">
884<input type="hidden" name="host" value="\$host">
885<input type="hidden" name="share" value="\${EscHTML(\$share)}">
886<input type="hidden" name="fcbMax" value="\$checkBoxCnt">
887<input type="hidden" name="action" value="Restore">
888<br>
889<table width="100%">
890<tr><td valign="top" width="30%">
891    <table align="left" border="0" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
892    \$dirStr
893    </table>
894</td><td width="3%">
895</td><td valign="top">
896    <br>
897        <table border width="100%" align="left" cellpadding="3" cellspacing="1">
898        \$fileHeader
899        \$topCheckAll
900        \$fileStr
901        \$checkAll
902        </table>
903    </td></tr></table>
904<br>
905<!--
906This is now in the checkAll row
907<input type="submit" name="Submit" value="Restore selected files">
908-->
909</form>
910EOF
911
912# ------------------------------
913$Lang{DirHistory_backup_for__host} = "BackupPC: Історія резервних копій тек для \$host";
914
915#
916# These two strings are used to build the links for directories and
917# file versions.  Files are appended with a version number.
918#
919$Lang{DirHistory_dirLink}  = "dir";
920$Lang{DirHistory_fileLink} = "v";
921
922$Lang{DirHistory_for__host} = <<EOF;
923\${h1("Історія резервних копій тек для \$host")}
924<p>
925Тут відображені всі унікальні версії файлів в усіх
926Резервних копіях:
927<ul>
928<li> Натисніть на номер резервної копії для повернення до перегляду рез. копій,
929<li> Натисніть на посилання на теку (\$Lang->{DirHistory_dirLink}) для переходу
930     в цю теку,
931<li> Натисніть на посилання на версію файла (\$Lang->{DirHistory_fileLink}0,
932     \$Lang->{DirHistory_fileLink}1, ...) для його звантаженняe,
933<li> Фали з однаковим вмістом мають однакову версію в усіх
934      резервних копіях (PleaseTranslateThis: except between v3 and v4 backups),
935<li> Файли та теки, що відсутні в поточній резервній копії позначені
936     порожнім прямокутником.
937<li> Файли однієї версії можуть відрізнятися атрибутами файлової системи.
938     Виберіть номмер резервної копії для перегляду атрибутів.
939</ul>
940
941\${h2("Історія \$dirDisplay")}
942
943<br>
944<table border cellspacing="2" cellpadding="3">
945<tr class="fviewheader"><td>Backup number</td>\$backupNumStr</tr>
946<tr class="fviewheader"><td>Backup time</td>\$backupTimeStr</tr>
947\$fileStr
948</table>
949EOF
950
951# ------------------------------
952$Lang{Restore___num_details_for__host} = "BackupPC: Подробиці відновлення  #\$num для \$host";
953
954$Lang{Restore___num_details_for__host2} = <<EOF;
955\${h1("Подробиці відновлення #\$num для \$host")}
956<p>
957<table class="tableStnd" border cellspacing="1" cellpadding="3" width="90%">
958<tr><td class="tableheader"> Номер </td><td class="border"> \$Restores[\$i]{num} </td></tr>
959<tr><td class="tableheader"> Запит від </td><td class="border"> \$RestoreReq{user} </td></tr>
960<tr><td class="tableheader"> Час запиту </td><td class="border"> \$reqTime </td></tr>
961<tr><td class="tableheader"> Результат </td><td class="border"> \$Restores[\$i]{result} </td></tr>
962<tr><td class="tableheader"> Повідомлення про помилки </td><td class="border"> \$Restores[\$i]{errorMsg} </td></tr>
963<tr><td class="tableheader"> Хост джерело </td><td class="border"> \$RestoreReq{hostSrc} </td></tr>
964<tr><td class="tableheader"> Номер вихідн. рез. копії </td><td class="border"> \$RestoreReq{num} </td></tr>
965<tr><td class="tableheader"> Вихідний ресурс </td><td class="border"> \$RestoreReq{shareSrc} </td></tr>
966<tr><td class="tableheader"> Хост призначення </td><td class="border"> \$RestoreReq{hostDest} </td></tr>
967<tr><td class="tableheader"> Ресурс призначення </td><td class="border"> \$RestoreReq{shareDest} </td></tr>
968<tr><td class="tableheader"> Час початку </td><td class="border"> \$startTime </td></tr>
969<tr><td class="tableheader"> Тривалість </td><td class="border"> \$duration min </td></tr>
970<tr><td class="tableheader"> Кільк. файлів </td><td class="border"> \$Restores[\$i]{nFiles} </td></tr>
971<tr><td class="tableheader"> Загальний розмір </td><td class="border"> \${MB} MB </td></tr>
972<tr><td class="tableheader"> Швидкість передачі </td><td class="border"> \$MBperSec MB/sec </td></tr>
973<tr><td class="tableheader"> TarCreate помилки </td><td class="border"> \$Restores[\$i]{tarCreateErrs} </td></tr>
974<tr><td class="tableheader"> Xfer помилки </td><td class="border"> \$Restores[\$i]{xferErrs} </td></tr>
975<tr><td class="tableheader"> Xfer log file </td><td class="border">
976<a href="\$MyURL?action=view&type=RestoreLOG&num=\$Restores[\$i]{num}&host=\$host">View</a>,
977<a href="\$MyURL?action=view&type=RestoreErr&num=\$Restores[\$i]{num}&host=\$host">Errors</a>
978</tr></tr>
979</table>
980</p>
981\${h1("Файл/Список тек")}
982<p>
983<table class="tableStnd" border cellspacing="1" cellpadding="3" width="100%">
984<tr class="tableheader"><td>Original file/dir</td><td>Restored to</td></tr>
985\$fileListStr
986</table>
987EOF
988
989# ------------------------------
990$Lang{Archive___num_details_for__host} = "BackupPC: Деталі архіву #\$num для \$host";
991
992$Lang{Archive___num_details_for__host2} = <<EOF;
993\${h1("Archive #\$num Details for \$host")}
994<p>
995<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
996<tr><td class="tableheader"> Номер </td><td class="border"> \$Archives[\$i]{num} </td></tr>
997<tr><td class="tableheader"> Запит від </td><td class="border"> \$ArchiveReq{user} </td></tr>
998<tr><td class="tableheader"> Час запиту </td><td class="border"> \$reqTime </td></tr>
999<tr><td class="tableheader"> Результат </td><td class="border"> \$Archives[\$i]{result} </td></tr>
1000<tr><td class="tableheader"> Помилки </td><td class="border"> \$Archives[\$i]{errorMsg} </td></tr>
1001<tr><td class="tableheader"> Час початку </td><td class="border"> \$startTime </td></tr>
1002<tr><td class="tableheader"> Тривалість </td><td class="border"> \$duration min </td></tr>
1003<tr><td class="tableheader"> Xfer log файл </td><td class="border">
1004<a href="\$MyURL?action=view&type=ArchiveLOG&num=\$Archives[\$i]{num}&host=\$host">View</a>,
1005<a href="\$MyURL?action=view&type=ArchiveErr&num=\$Archives[\$i]{num}&host=\$host">Errors</a>
1006</tr></tr>
1007</table>
1008<p>
1009\${h1("Host list")}
1010<p>
1011<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
1012<tr class="tableheader"><td>Хост</td><td>Номер резерв. копії</td></tr>
1013\$HostListStr
1014</table>
1015EOF
1016
1017# -----------------------------------
1018$Lang{Email_Summary} = "BackupPC: Зведена інформація по Email";
1019
1020# -----------------------------------
1021#  !! ERROR messages !!
1022# -----------------------------------
1023$Lang{BackupPC__Lib__new_failed__check_apache_error_log} = "BackupPC::Lib->new failed: check apache error_log\n";
1024$Lang{Wrong_user__my_userid_is___} =
1025              "Неправильний користувач: мій userid  \$>, а не \$uid"
1026            . "(\$Conf{BackupPCUser})\n";
1027# $Lang{Only_privileged_users_can_view_PC_summaries} = "Only privileged users can view PC summaries.";
1028$Lang{Only_privileged_users_can_stop_or_start_backups} =
1029                  "Тільки привілейований користувач може запустити резевне копіювання на"
1030		. " \${EscHTML(\$host)}.";
1031$Lang{Invalid_number__num} = "Неправильнмй номер \${EscHTML(\$In{num})}";
1032$Lang{Unable_to_open__file__configuration_problem} = "Неможливо відкрити \$file: проблеми з конфігурацією?";
1033$Lang{Only_privileged_users_can_view_log_or_config_files} = "Тільки привілейований користувач може переглядати log чи файл конфігурації.";
1034$Lang{Only_privileged_users_can_view_log_files} = "Тільки привілейований користувач може переглядати log файли.";
1035$Lang{Only_privileged_users_can_view_email_summaries} = "Тільки привілейований користувач може переглядати інформацію про email.";
1036$Lang{Only_privileged_users_can_browse_backup_files} = "Тільки привілейований користувач може переглядати файли резервних копій"
1037                . " для хосту \${EscHTML(\$In{host})}.";
1038$Lang{Only_privileged_users_can_delete_backups} = "Only privileged users can delete backups"
1039                . " of host \${EscHTML(\$host)}.";
1040$Lang{Empty_host_name} = "Порожнє ім\'я хоста.";
1041$Lang{Directory___EscHTML} = "Тека \${EscHTML(\"\$TopDir/pc/\$host/\$num\")}"
1042		    . " порожня";
1043$Lang{Can_t_browse_bad_directory_name2} = "Не вдається відкрити неправильну назву теки"
1044	            . " \${EscHTML(\$relDir)}";
1045$Lang{Only_privileged_users_can_restore_backup_files} = "Тільки привілейований користувач може відновлювати файли з резервних копій"
1046                . " для хоста \${EscHTML(\$In{host})}.";
1047$Lang{Bad_host_name} = "Неправильне ім\'я хоста \${EscHTML(\$host)}";
1048$Lang{You_haven_t_selected_any_files__please_go_Back_to} = "Ви не обрали жодного файла; Будь ласка поверніться назад"
1049                . " та оберіть якийсь файл.";
1050$Lang{You_haven_t_selected_any_hosts} = "Ви не обрали жодного хоста; будь ласка поверніться назад"
1051                . " та оберіть якийсь хост.";
1052$Lang{Nice_try__but_you_can_t_put} = "Добра спроба, але ви не можете вставити \'..\' у будь яке ім\'я файлу";
1053$Lang{Host__doesn_t_exist} = "Хост \${EscHTML(\$In{hostDest})} не існує";
1054$Lang{You_don_t_have_permission_to_restore_onto_host} = "У Вас немає прав відновлення на хост"
1055		    . " \${EscHTML(\$In{hostDest})}";
1056$Lang{Can_t_open_create__openPath} = "не можливо відкрити/створити "
1057		. "\${EscHTML(\"\$openPath\")}";
1058$Lang{Only_privileged_users_can_restore_backup_files2} = "Тільки привілейований користувач може відновити резервну копію"
1059                . " для хоста \${EscHTML(\$host)}.";
1060$Lang{Empty_host_name} = "Порожнє ім\'я хоста";
1061$Lang{Unknown_host_or_user} = "Невідомий хост або користувач \${EscHTML(\$host)}";
1062$Lang{Only_privileged_users_can_view_information_about} = "Тільки привілейований користувач може переглядати інформацію про"
1063                . " хост \${EscHTML(\$host)}." ;
1064$Lang{Only_privileged_users_can_view_archive_information} = "Тільки привілейований користувач може переглядати інформацію про архівування.";
1065$Lang{Only_privileged_users_can_view_restore_information} = "Тільки привілейований користувач може переглядати інформацію про відновлення.";
1066$Lang{Restore_number__num_for_host__does_not_exist} = "Номер відновлення \$num для хосту \${EscHTML(\$host)} не"
1067	        . " існує.";
1068$Lang{Archive_number__num_for_host__does_not_exist} = "Номер архіву \$num для хосту \${EscHTML(\$host)} не"
1069                . " існує.";
1070$Lang{Can_t_find_IP_address_for} = "Неможливо знайти IP адресу для \${EscHTML(\$host)}";
1071$Lang{host_is_a_DHCP_host} = <<EOF;
1072\$host отримує адресу по DHCP і я не знаю його IP адреси.  Я перевірив
1073netbios ім\'я \$ENV{REMOTE_ADDR}\$tryIP, та виявим, що цей комп\'ютер не є
1074 \$host.
1075<p>
1076Наскільки я бачу \$host має приватну DHCP адресу, Ви маєте можливість
1077запустити запит з клієнтського комп\'ютера самостійно.
1078EOF
1079
1080# ------------------------------------
1081# !! Server Mesg !!
1082# ------------------------------------
1083
1084$Lang{Backup_requested_on_DHCP__host} = "Запит на резерв. копіювання на DHCP \$host (\$In{hostIP}) від"
1085		                      . " \$User з \$ENV{REMOTE_ADDR}";
1086$Lang{Backup_requested_on__host_by__User} = "Запит на резерв. копіювання з \$host від \$User";
1087$Lang{Backup_stopped_dequeued_on__host_by__User} = "Резерв. копіювання зупинено/виключено з черги на \$host від \$User";
1088$Lang{Restore_requested_to_host__hostDest__backup___num} = "Запит на відновлення на \$hostDest, резерв. копія #\$num,"
1089	     . " від \$User на \$ENV{REMOTE_ADDR}";
1090$Lang{Delete_requested_for_backup_of__host_by__User} = "Delete requested for backup #\$num of \$host"
1091             . " by \$User from \$ENV{REMOTE_ADDR}";
1092$Lang{Archive_requested} = "Запит на архів від \$User на \$ENV{REMOTE_ADDR}";
1093
1094# -------------------------------------------------
1095# ------- Stuff that was forgotten ----------------
1096# -------------------------------------------------
1097
1098$Lang{Status} = "Статус";
1099$Lang{PC_Summary} = "Зведена інформація по хостам";
1100$Lang{LOG_file} = "LOG файл";
1101$Lang{LOG_files} = "LOG файли";
1102$Lang{Old_LOGs} = "Старі LOGи";
1103$Lang{Email_summary} = "Поштові налаштування";
1104$Lang{Config_file} = "Файл конфігурації";
1105# $Lang{Hosts_file} = "Hosts file";
1106$Lang{Current_queues} = "Поточні черги";
1107$Lang{Documentation} = "Документація (англ)";
1108
1109#$Lang{Host_or_User_name} = "<small>Host or User name:</small>";
1110$Lang{Go} = "Перейти";
1111$Lang{Hosts} = "Хости";
1112$Lang{Select_a_host} = "Виберіть хост...";
1113
1114$Lang{There_have_been_no_archives} = "<h2> Немає жодної резервної копії </h2>\n";
1115$Lang{This_PC_has_never_been_backed_up} = "<h2> З цього PC ніколи не створювалась резервна копія!! </h2>\n";
1116$Lang{This_PC_is_used_by} = "<li>Цей PC використовується \${UserLink(\$user)}";
1117
1118$Lang{Extracting_only_Errors} = "(Показати лише помилки)";
1119$Lang{XferLOG} = "XferLOG";
1120$Lang{Errors}  = "Помилки";
1121
1122# ------------
1123$Lang{Last_email_sent_to__was_at___subject} = <<EOF;
1124<li>Останній email було відіслано доo \${UserLink(\$user)} час \$mailTime, тема "\$subj".
1125EOF
1126# ------------
1127$Lang{The_command_cmd_is_currently_running_for_started} = <<EOF;
1128<li>Команда \$cmd зараз виконується для хоста \$host, started \$startTime.
1129EOF
1130
1131# -----------
1132$Lang{Host_host_is_queued_on_the_background_queue_will_be_backed_up_soon} = <<EOF;
1133<li>Хост \$host поставлений у фонову чергу (повернеться за першої можливості).
1134EOF
1135
1136# ----------
1137$Lang{Host_host_is_queued_on_the_user_queue__will_be_backed_up_soon} = <<EOF;
1138<li>Хост \$host поставлений у чергу користувача (повернеться за першої можливості).
1139EOF
1140
1141# ---------
1142$Lang{A_command_for_host_is_on_the_command_queue_will_run_soon} = <<EOF;
1143<li>Команда для \$host поставлена в чергу команд (скоро буде запущена).
1144EOF
1145
1146# --------
1147$Lang{Last_status_is_state_StatusHost_state_reason_as_of_startTime} = <<EOF;
1148<li>Last status is state \"\$Lang->{\$StatusHost{state}}\"\$reason as of \$startTime.
1149EOF
1150
1151# --------
1152$Lang{Last_error_is____EscHTML_StatusHost_error} = <<EOF;
1153<li>Остання помилка \"\${EscHTML(\$StatusHost{error})}\".
1154EOF
1155
1156# ------
1157$Lang{Pings_to_host_have_failed_StatusHost_deadCnt__consecutive_times} = <<EOF;
1158<li>Ping до \$host не пройшов \$StatusHost{deadCnt} декілька разів підряд.
1159EOF
1160
1161# -----
1162$Lang{Prior_to_that__pings} = "До цього, pings";
1163
1164# -----
1165$Lang{priorStr_to_host_have_succeeded_StatusHostaliveCnt_consecutive_times} = <<EOF;
1166<li>\$priorStr to \$host have succeeded \$StatusHost{aliveCnt}
1167        consecutive times.
1168EOF
1169
1170$Lang{Because__host_has_been_on_the_network_at_least__Conf_BlackoutGoodCnt_consecutive_times___} = <<EOF;
1171<li>Because \$host has been on the network at least \$Conf{BlackoutGoodCnt}
1172consecutive times, it will not be backed up from \$blackoutStr.
1173EOF
1174
1175$Lang{__time0_to__time1_on__days} = "\$t0 to \$t1 on \$days";
1176
1177$Lang{Backups_are_deferred_for_hours_hours_change_this_number} = <<EOF;
1178<li>Резервне копіювання відкладене на \$hours годин
1179(<a href=\"\$MyURL?action=Stop_Dequeue_Backup&host=\$host\">change this number</a>).
1180EOF
1181
1182$Lang{tryIP} = " and \$StatusHost{dhcpHostIP}";
1183
1184# $Lang{Host_Inhost} = "Host \$In{host}";
1185
1186$Lang{checkAll} = <<EOF;
1187<tr><td class="fviewborder">
1188<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');">&nbsp;Select all
1189</td><td colspan="5" align="center" class="fviewborder">
1190<input type="submit" name="Submit" value="Restore selected files">
1191</td></tr>
1192EOF
1193
1194$Lang{checkAllHosts} = <<EOF;
1195<tr><td class="fviewborder">
1196<input type="checkbox" name="allFiles" onClick="return checkAll('allFiles');">&nbsp;Select all
1197</td><td colspan="2" align="center" class="fviewborder">
1198<input type="submit" name="Submit" value="Archive selected hosts">
1199</td></tr>
1200EOF
1201
1202$Lang{fileHeader} = <<EOF;
1203    <tr class="fviewheader"><td align=center> Name</td>
1204       <td align="center"> Тип</td>
1205       <td align="center"> Режим</td>
1206       <td align="center"> #</td>
1207       <td align="center"> Розмір</td>
1208       <td align="center"> Дата зміни</td>
1209    </tr>
1210EOF
1211
1212$Lang{Home} = "Додому";
1213$Lang{Browse} = "Продивитися резерв. копії";
1214$Lang{Last_bad_XferLOG} = "Last bad XferLOG";
1215$Lang{Last_bad_XferLOG_errors_only} = "Last bad XferLOG (errors&nbsp;only)";
1216
1217$Lang{This_display_is_merged_with_backup} = <<EOF;
1218<li> This display is merged with backup #\$numF.
1219EOF
1220
1221$Lang{Visit_this_directory_in_backup} = <<EOF;
1222<li> Оберіть резервну копію, яку Ви хочете продивитися: <select onChange="window.location=this.value">\$otherDirs </select>
1223EOF
1224
1225$Lang{Restore_Summary} = <<EOF;
1226\${h2("Інформація про відновлення")}
1227<p>
1228Натисніть на номер для перегляду деталей.
1229<table class="tableStnd sortable" border cellspacing="1" cellpadding="3" width="80%">
1230<tr class="tableheader"><td align="center"> Відновлення# </td>
1231    <td align="center"> Результат </td>
1232    <td align="right"> Дата початку</td>
1233    <td align="right"> Тривал/хи</td>
1234    <td align="right"> #файлів </td>
1235    <td align="right"> MB </td>
1236    <td align="right"> #tar помилок </td>
1237    <td align="right"> #xfer помилок </td>
1238</tr>
1239\$restoreStr
1240</table>
1241<p>
1242EOF
1243
1244$Lang{Archive_Summary} = <<EOF;
1245\${h2("Інформація про архіви")}
1246<p>
1247Натисніть на номер архіву для перегляду деталей.
1248<table class="tableStnd" border cellspacing="1" cellpadding="3" width="80%">
1249<tr class="tableheader"><td align="center"> Архів# </td>
1250    <td align="center"> Результат </td>
1251    <td align="right"> Дата початку</td>
1252    <td align="right"> Трив/хв</td>
1253</tr>
1254\$ArchiveStr
1255</table>
1256<p>
1257EOF
1258
1259$Lang{BackupPC__Documentation} = "BackupPC: Документація";
1260
1261$Lang{No} = "ні";
1262$Lang{Yes} = "так";
1263
1264$Lang{The_directory_is_empty} = <<EOF;
1265<tr><td bgcolor="#ffffff">The directory \$dirDisplay is empty
1266</td></tr>
1267EOF
1268
1269#$Lang{on} = "on";
1270$Lang{off} = "off";
1271
1272$Lang{backupType_full}    = "повний";
1273$Lang{backupType_incr}    = "інкрементальний";
1274$Lang{backupType_active}  = "active";
1275$Lang{backupType_partial} = "частковий";
1276
1277$Lang{failed} = "неуспішно";
1278$Lang{success} = "успішно";
1279$Lang{and} = "та";
1280
1281# ------
1282# Hosts states and reasons
1283$Lang{Status_idle} = "бездія";
1284$Lang{Status_backup_starting} = "Резерв. копіювання запущено";
1285$Lang{Status_backup_in_progress} = "Резерв. копіювання в процесі";
1286$Lang{Status_restore_starting} = "Відновлення запущено";
1287$Lang{Status_restore_in_progress} = "Відновлення в процесі";
1288$Lang{Status_admin_pending} = "link pending";
1289$Lang{Status_admin_running} = "link running";
1290
1291$Lang{Reason_backup_done}    = "зроблено";
1292$Lang{Reason_restore_done}   = "відновлення зроблено";
1293$Lang{Reason_archive_done}   = "архівування зроблено";
1294$Lang{Reason_nothing_to_do}  = "бездія";
1295$Lang{Reason_backup_failed}  = "резерв. копіювання неуспішне";
1296$Lang{Reason_restore_failed} = "відновлення неуспішне";
1297$Lang{Reason_archive_failed} = "архівування  неуспішне";
1298$Lang{Reason_no_ping}        = "no ping";
1299$Lang{Reason_backup_canceled_by_user}  = "резерв. копіювання перерване користувачем";
1300$Lang{Reason_restore_canceled_by_user} = "відновлення перерване користувачем";
1301$Lang{Reason_archive_canceled_by_user} = "архівування перерване користувачем";
1302$Lang{Disabled_OnlyManualBackups}  = "auto відключене";
1303$Lang{Disabled_AllBackupsDisabled} = "відключене";
1304
1305
1306# ---------
1307# Email messages
1308
1309# No backup ever
1310$Lang{EMailNoBackupEverSubj} = "BackupPC: жлдного резерв. копіювання на \$host не було успішним";
1311$Lang{EMailNoBackupEverMesg} = <<'EOF';
1312To: $user$domain
1313cc:
1314Subject: $subj
1315$headers
1316Dear $userName,
1317
1318Your PC ($host) has never been successfully backed up by our
1319PC backup software.  PC backups should occur automatically
1320when your PC is connected to the network.  You should contact
1321computer support if:
1322
1323  - Your PC has been regularly connected to the network, meaning
1324    there is some configuration or setup problem preventing
1325    backups from occurring.
1326
1327  - You don't want your PC backed up and you want these email
1328    messages to stop.
1329
1330Otherwise, please make sure your PC is connected to the network
1331next time you are in the office.
1332
1333Regards,
1334BackupPC Genie
1335https://backuppc.github.io/backuppc
1336EOF
1337
1338# No recent backup
1339$Lang{EMailNoBackupRecentSubj} = "BackupPC: no recent backups on \$host";
1340$Lang{EMailNoBackupRecentMesg} = <<'EOF';
1341To: $user$domain
1342cc:
1343Subject: $subj
1344$headers
1345Dear $userName,
1346
1347Your PC ($host) has not been successfully backed up for $days days.
1348Your PC has been correctly backed up $numBackups times from $firstTime to $days days
1349ago.  PC backups should occur automatically when your PC is connected
1350to the network.
1351
1352If your PC has been connected for more than a few hours to the
1353network during the last $days days you should contact IS to find
1354out why backups are not working.
1355
1356Otherwise, if you are out of the office, there's not much you can
1357do, other than manually copying especially critical files to other
1358media.  You should be aware that any files you have created or
1359changed in the last $days days (including all new email and
1360attachments) cannot be restored if your PC disk crashes.
1361
1362Regards,
1363BackupPC Genie
1364https://backuppc.github.io/backuppc
1365EOF
1366
1367# Old Outlook files
1368$Lang{EMailOutlookBackupSubj} = "BackupPC: Outlook files on \$host need to be backed up";
1369$Lang{EMailOutlookBackupMesg} = <<'EOF';
1370To: $user$domain
1371cc:
1372Subject: $subj
1373$headers
1374Dear $userName,
1375
1376The Outlook files on your PC have $howLong.
1377These files contain all your email, attachments, contact and calendar
1378information.  Your PC has been correctly backed up $numBackups times from
1379$firstTime to $lastTime days ago.  However, Outlook locks all its files when
1380it is running, preventing these files from being backed up.
1381
1382It is recommended you backup the Outlook files when you are connected
1383to the network by exiting Outlook and all other applications, and,
1384using just your browser, go to this link:
1385
1386    $CgiURL?host=$host
1387
1388Select "Start Incr Backup" twice to start a new incremental backup.
1389You can select "Return to $host page" and then hit "reload" to check
1390the status of the backup.  It should take just a few minutes to
1391complete.
1392
1393Regards,
1394BackupPC Genie
1395https://backuppc.github.io/backuppc
1396EOF
1397
1398$Lang{howLong_not_been_backed_up} = "not been backed up successfully";
1399$Lang{howLong_not_been_backed_up_for_days_days} = "not been backed up for \$days days";
1400
1401#######################################################################
1402# RSS strings
1403#######################################################################
1404$Lang{RSS_Doc_Title}       = "BackupPC Server";
1405$Lang{RSS_Doc_Description} = "RSS feed for BackupPC";
1406$Lang{RSS_Host_Summary}    = <<EOF;
1407Full Count: \$fullCnt;
1408Full Age/days: \$fullAge;
1409Full Size/GiB: \$fullSize;
1410Speed MB/sec: \$fullRate;
1411Incr Count: \$incrCnt;
1412Incr Age/Days: \$incrAge;
1413State: \$host_state;
1414Disabled: \$host_disabled;
1415Last Attempt: \$host_last_attempt;
1416EOF
1417
1418#######################################################################
1419# Configuration editor strings
1420#######################################################################
1421
1422$Lang{Only_privileged_users_can_edit_config_files} = "Only privileged users can edit configuration settings.";
1423$Lang{CfgEdit_Edit_Config} = "Правити конфігурацію";
1424$Lang{CfgEdit_Edit_Hosts}  = "Правити хости";
1425
1426$Lang{CfgEdit_Title_Server} = "Сервер";
1427$Lang{CfgEdit_Title_General_Parameters} = "Загальні параметри";
1428$Lang{CfgEdit_Title_Wakeup_Schedule} = "Wakeup Schedule";
1429$Lang{CfgEdit_Title_Concurrent_Jobs} = "Concurrent Jobs";
1430$Lang{CfgEdit_Title_Pool_Filesystem_Limits} = "Обмеження файлової системи пула";
1431$Lang{CfgEdit_Title_Other_Parameters} = "Інші параметри";
1432$Lang{CfgEdit_Title_Remote_Apache_Settings} = "Налаштування віддаленого Apache";
1433$Lang{CfgEdit_Title_Program_Paths} = "Шляхи до програми";
1434$Lang{CfgEdit_Title_Install_Paths} = "Шлях встановлення";
1435$Lang{CfgEdit_Title_Email} = "Email";
1436$Lang{CfgEdit_Title_Email_settings} = "Налаштування Email";
1437$Lang{CfgEdit_Title_Email_User_Messages} = "Email User Messages";
1438$Lang{CfgEdit_Title_CGI} = "CGI";
1439$Lang{CfgEdit_Title_Admin_Privileges} = "Admin Privileges";
1440$Lang{CfgEdit_Title_Page_Rendering} = "Page Rendering";
1441$Lang{CfgEdit_Title_Paths} = "Шляхи";
1442$Lang{CfgEdit_Title_User_URLs} = "User URLs";
1443$Lang{CfgEdit_Title_User_Config_Editing} = "User Config Editing";
1444$Lang{CfgEdit_Title_Xfer} = "Xfer";
1445$Lang{CfgEdit_Title_Xfer_Settings} = "Налаштування Xfer";
1446$Lang{CfgEdit_Title_Ftp_Settings} = "Налаштування FTP";
1447$Lang{CfgEdit_Title_Smb_Settings} = "Налаштування Smb";
1448$Lang{CfgEdit_Title_Tar_Settings} = "Налаштування Tar";
1449$Lang{CfgEdit_Title_Rsync_Settings} = "Налаштування Rsync";
1450$Lang{CfgEdit_Title_Rsyncd_Settings} = "Налаштування Rsyncd";
1451$Lang{CfgEdit_Title_Archive_Settings} = "Налаштування архівування";
1452$Lang{CfgEdit_Title_Include_Exclude} = "Включити/Виключити";
1453$Lang{CfgEdit_Title_Smb_Paths_Commands} = "Шляхи/команди Smb";
1454$Lang{CfgEdit_Title_Tar_Paths_Commands} = "Шляхи/команди Tar";
1455$Lang{CfgEdit_Title_Rsync_Paths_Commands_Args} = "Шляхи/команди/аргументи Rsync";
1456$Lang{CfgEdit_Title_Rsyncd_Port_Args} = "Порт/аргументи Rsyncd";
1457$Lang{CfgEdit_Title_Archive_Paths_Commands} = "Шляхи/команди архівування";
1458$Lang{CfgEdit_Title_Schedule} = "Планувальник";
1459$Lang{CfgEdit_Title_Full_Backups} = "Повне резерв. копіювання";
1460$Lang{CfgEdit_Title_Incremental_Backups} = "Інкрементальне резерв. копіювання";
1461$Lang{CfgEdit_Title_Blackouts} = "Blackouts";
1462$Lang{CfgEdit_Title_Other} = "Інше";
1463$Lang{CfgEdit_Title_Backup_Settings} = "Налаштування резерв. копіювання";
1464$Lang{CfgEdit_Title_Client_Lookup} = "Пошук клієнтів";
1465$Lang{CfgEdit_Title_User_Commands} = "Команди користувача";
1466$Lang{CfgEdit_Title_Hosts} = "Хости";
1467
1468$Lang{CfgEdit_Hosts_Comment} = <<EOF;
1469To add a new host, select Add and then enter the name.  To start with
1470the per-host configuration from another host, enter the host name
1471as NEWHOST=COPYHOST.  This will overwrite any existing per-host
1472configuration for NEWHOST.  You can also do this for an existing
1473host.  To delete a host, hit the Delete button.  For Add, Delete,
1474and configuration copy, changes don't take effect until you select
1475Save.  None of the deleted host's backups will be removed,
1476so if you accidently delete a host, simply re-add it.  To completely
1477remove a host's backups, you need to manually remove the files
1478below \$topDir/pc/HOST
1479EOF
1480
1481$Lang{CfgEdit_Header_Main} = <<EOF;
1482\${h1("Main Configuration Editor")}
1483EOF
1484
1485$Lang{CfgEdit_Header_Host} = <<EOF;
1486\${h1("Host \$host Configuration Editor")}
1487<p>
1488Note: Check Override if you want to modify a value specific to this host.
1489<p>
1490EOF
1491
1492$Lang{CfgEdit_Button_Save}     = "Зберегти";
1493$Lang{CfgEdit_Button_Insert}   = "Вставити";
1494$Lang{CfgEdit_Button_Delete}   = "Видалити";
1495$Lang{CfgEdit_Button_Add}      = "Додати";
1496$Lang{CfgEdit_Button_Override} = "Перезаписати";
1497$Lang{CfgEdit_Button_New_Key}  = "Нове значення";
1498$Lang{CfgEdit_Button_New_Share} = "New ShareName or '*'";
1499
1500$Lang{CfgEdit_Error_No_Save}
1501            = "Error: No save due to errors";
1502$Lang{CfgEdit_Error__must_be_an_integer}
1503            = "Error: \$var must be an integer";
1504$Lang{CfgEdit_Error__must_be_real_valued_number}
1505            = "Error: \$var must be a real-valued number";
1506$Lang{CfgEdit_Error__entry__must_be_an_integer}
1507            = "Error: \$var entry \$k must be an integer";
1508$Lang{CfgEdit_Error__entry__must_be_real_valued_number}
1509            = "Error: \$var entry \$k must be a real-valued number";
1510$Lang{CfgEdit_Error__must_be_executable_program}
1511            = "Error: \$var must be a valid executable path";
1512$Lang{CfgEdit_Error__must_be_valid_option}
1513            = "Error: \$var must be a valid option";
1514$Lang{CfgEdit_Error_Copy_host_does_not_exist}
1515            = "Copy host \$copyHost doesn't exist; creating full host name \$fullHost.  Delete this host if that is not what you wanted.";
1516
1517$Lang{CfgEdit_Log_Copy_host_config}
1518            = "\$User copied config from host \$fromHost to \$host\n";
1519$Lang{CfgEdit_Log_Delete_param}
1520            = "\$User deleted \$p from \$conf\n";
1521$Lang{CfgEdit_Log_Add_param_value}
1522            = "\$User added \$p to \$conf, set to \$value\n";
1523$Lang{CfgEdit_Log_Change_param_value}
1524            = "\$User changed \$p in \$conf to \$valueNew from \$valueOld\n";
1525$Lang{CfgEdit_Log_Host_Delete}
1526            = "\$User deleted host \$host\n";
1527$Lang{CfgEdit_Log_Host_Change}
1528            = "\$User host \$host changed \$key from \$valueOld to \$valueNew\n";
1529$Lang{CfgEdit_Log_Host_Add}
1530            = "\$User added host \$host: \$value\n";
1531
1532#end of lang_en.pm
1533