Merge branch 'stretch-unstable' into stretch-testing

This commit is contained in:
Alexandre Aubin 2019-03-13 16:58:03 +01:00
commit e630803708
10 changed files with 472 additions and 97 deletions

23
debian/changelog vendored
View file

@ -1,3 +1,14 @@
yunohost-admin (3.5.0) testing; urgency=low
- [enh] Remove dependency to GET /version to fetch version (#226)
- [enh] Add Konami code ;) (#208)
- [fix] Explain the user why the security.rss feed retrieval might not been working (18d6a00)
- [i18n] Improve Russian translation
Contributors: Alexandre Aubin, Алексей
-- Alexandre Aubin <alex.aubin@mailoo.org> Wed, 13 Mar 2019 16:40:00 +0000
yunohost-admin (3.4.2) stable; urgency=low
* Improve German translation
@ -275,7 +286,7 @@ yunohost-admin (2.6.0) testing; urgency=low
## Other improvements
* [fix]ÂGuess API's baseurl is store is empty.
* [fix] Guess API's baseurl is store is empty.
* [fix] Avoid empty whitespace for the first line of the logs display (#151)
* [fix] Set document root permission during package install. (#156)
* [fix] Cleanup app_list_install template (unused code since 66dbcf50).
@ -340,7 +351,7 @@ yunohost-admin (2.4.2) stable; urgency=low
* [enh] Display YNH version in footer. Need body padding improvments. #316
* [enh] Allow key/value choices in manifest arguments.
[ Jérome Lebleu ]
[ Jérome Lebleu ]
* [fix] Run npm/gulp at build in Debian rules
[ Laurent Peuch ]
@ -407,9 +418,9 @@ yunohost-admin (2.3.8) testing; urgency=low
yunohost-admin (2.3.7) testing; urgency=low
Thanks to every contributors and translators: Jean-Baptise, Jéröme Lebleu and opi
Thanks to every contributors and translators: Jean-Baptise, Jérôme Lebleu and opi
[ Translations ]
[ Translations ]
* [i18n] Translated using Weblate (French)
* [i18n] Translated using Weblate (Dutch)
* [i18n] Translated using Weblate (German)
@ -466,7 +477,7 @@ yunohost-admin (2.3.5) testing; urgency=low
* [i18n] Translated using Weblate (Italian)
* [i18n] Translated using Weblate (Italian)
[ étienne Deparis ]
[ Etienne Deparis ]
* [i18n] Translated using Weblate (French)
[ Jean-Baptiste ]
@ -539,7 +550,7 @@ yunohost-admin (2.3.5) testing; urgency=low
* [enh] separate calls so that the makefile can error out at first error
[ opi ]
* [fix] Revert hardcoded version introduced in 0f8350a1e3
* [fix] Revert hardcoded version introduced in 0f8350a1e3
[ Julien Malik ]
* [fix] fonts were forgotten along the way

View file

@ -352,6 +352,19 @@ div.br {
right: 0;
z-index: 2000;
}
.with-nyancat {
.loader{
background: rgba(255, 255, 255, 0.5) url(../img/nyancat.gif) center 15% no-repeat;
animation: pacmanlinearmove 6s linear infinite;
}
.loader-content {
left: -20%;
right: -20%;
}
}
.loader-popup {
margin: auto;
height: 24px;

BIN
src/img/nyancat.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View file

@ -3,8 +3,6 @@
var app = Sammy.apps['#main'];
var store = app.store;
var initial_checks_already_performed = false;
/**
* Home
*
@ -12,84 +10,11 @@
// Home page
app.get('#/', function (c) {
if (initial_checks_already_performed)
{
c.view("home");
}
else c.api('/users', function(data) {
// Warn admin if no users are created.
if (typeof data.users !== 'undefined' && data.users.length === 0) {
c.flash('warning', y18n.t('warning_first_user'));
}
// Get security feed and display new items
var securityFeed = 'https://yunohost.org/security.rss';
var forumUrl = 'https://forum.yunohost.org';
$.ajax({
url: securityFeed,
// dataType: (jQuery.browser.msie) ? "text" : "xml",
dataType: "xml"
})
.done(function(xml){
// Get viewed security alerts from cookie
var viewedItems = Cookies.get('ynhSecurityViewedItems') || [];
// Get 6 month earlier date
var SixMonthEarlier = new Date();
SixMonthEarlier.setMonth(SixMonthEarlier.getMonth() - 6);
// Loop through items in a reverse order (older first)
$($('item', xml).get().reverse()).each(function(k, v) {
var link = $('link', v).text();
if (typeof link == 'string' && link !== '' && link.charAt(0) == '/') {
link = forumUrl+link;
}
// var description=$('description', v).text();
// description=description.replace('href="/','href="'+forumUrl+'/');
var item = {
guid: $('guid', v).text(),
title: $('title', v).text(),
url: link,
// desc: description,
date: new Date($('pubDate', v).text()),
};
// If item is not already viewed and is not older than 6 month
if (viewedItems.indexOf(item.guid) === -1 && (item.date.getTime() > SixMonthEarlier.getTime())) {
// Show security message to administrator
var warning = item.title + ' - ' +
item.date.toISOString().substring(0, 10) +
' (<a href="'+ item.url +'" class="alert-link" target="_blank">'+y18n.t('read_more')+'</a>)';
c.flash('warning', warning);
// Store viewed item
viewedItems.push(item.guid);
}
});
// Saved viewed items to cookie
Cookies.set('ynhSecurityViewedItems', viewedItems, {
expires: 7
});
})
.fail(function() {
c.flash('fail', y18n.t('error_retrieve_feed', [securityFeed]));
});
c.api("/diagnosis", function(data) {
if (data.security["CVE-2017-5754"].vulnerable) {
c.flash('danger', y18n.t('meltdown'));
}
});
initial_checks_already_performed = true;
c.view('home');
});
c.view("home");
// N.B : if you need to run stuff at login time,
// see js/events.js instead
});
/**
* Login
*

View file

@ -30,8 +30,8 @@
delete monitorData.network.usage.lo;
// Get YunoHost versions too
c.api('/version', function(versions) {
monitorData.versions = versions;
c.api('/diagnosis', function(diagnosis) {
monitorData.versions = diagnosis.packages;
c.view('tools/tools_monitoring', monitorData);
});
});
@ -47,4 +47,4 @@
}, 'GET');
});
})();
})();

View file

@ -55,7 +55,7 @@
data.packages[i].changelog = data.packages[i].changelog.replace(/\n/g, '<br />');
// Check for special packages that need delayed upgrade.
if (["moulinette", "moulinette-yunohost", "yunohost-admin", "yunohost-config-nginx", "ssowat", "python"].indexOf(data.packages[i].name) != -1) {
if (["moulinette", "yunohost", "yunohost-admin", "ssowat", "python"].indexOf(data.packages[i].name) != -1) {
c.flash('warning', y18n.t('system_delayed_upgrade_warning', [data.packages[i].name]));
data.packages[i].delayed = true;
}
@ -223,8 +223,8 @@
// Packages version
app.get('#/tools/versions', function (c) {
c.api('/version', function(versions) {
c.view('tools/tools_versions', {'versions' : versions});
c.api('/diagnosis', function(diagnosis) {
c.view('tools/tools_versions', {'versions' : diagnosis.packages });
});
});

View file

@ -8,12 +8,97 @@
*
*/
app.bind('login', function(e, data) {
this.api('/version', function(versions) {
$('#yunohost-version').html(y18n.t('footer_version', [versions.yunohost.version, versions.yunohost.repo]));
c.api('/users', function(data) {
// Warn admin if no users are created.
if (typeof data.users !== 'undefined' && data.users.length === 0) {
c.flash('warning', y18n.t('warning_first_user'));
}
// Get security feed and display new items
var securityFeed = 'https://yunohost.org/security.rss';
var forumUrl = 'https://forum.yunohost.org';
$.ajax({
url: securityFeed,
// dataType: (jQuery.browser.msie) ? "text" : "xml",
dataType: "xml"
})
.done(function(xml){
// Get viewed security alerts from cookie
var viewedItems = Cookies.get('ynhSecurityViewedItems') || [];
// Get 6 month earlier date
var SixMonthEarlier = new Date();
SixMonthEarlier.setMonth(SixMonthEarlier.getMonth() - 6);
// Loop through items in a reverse order (older first)
$($('item', xml).get().reverse()).each(function(k, v) {
var link = $('link', v).text();
if (typeof link == 'string' && link !== '' && link.charAt(0) == '/') {
link = forumUrl+link;
}
// var description=$('description', v).text();
// description=description.replace('href="/','href="'+forumUrl+'/');
var item = {
guid: $('guid', v).text(),
title: $('title', v).text(),
url: link,
// desc: description,
date: new Date($('pubDate', v).text()),
};
// If item is not already viewed and is not older than 6 month
if (viewedItems.indexOf(item.guid) === -1 && (item.date.getTime() > SixMonthEarlier.getTime())) {
// Show security message to administrator
var warning = item.title + ' - ' +
item.date.toISOString().substring(0, 10) +
' (<a href="'+ item.url +'" class="alert-link" target="_blank">'+y18n.t('read_more')+'</a>)';
c.flash('warning', warning);
// Store viewed item
viewedItems.push(item.guid);i
}
});
// Saved viewed items to cookie
Cookies.set('ynhSecurityViewedItems', viewedItems, {
expires: 7
});
})
.fail(function(stuff) {
c.flash('fail', y18n.t('error_retrieve_feed', [securityFeed]));
});
c.api("/diagnosis", function(data) {
versions = data.packages;
$('#yunohost-version').html(y18n.t('footer_version', [versions.yunohost.version, versions.yunohost.repo]));
if (data.security["CVE-2017-5754"].vulnerable) {
c.flash('danger', y18n.t('meltdown'));
}
$('div.loader').remove();
});
});
});
app.bind('logout', function(e, data) {
$('#yunohost-version').empty();
});
// Konamicode ;P up up down down left right left right b a
var konami_code = [38, 38, 40, 40, 37, 39, 37, 39, 66, 65],
konami_step = 0;
$(document).keydown(function (e) {
if (e.keyCode === konami_code[konami_step++]) {
if (konami_step === konami_code.length) {
konami_step = 0;
$('#main').addClass("with-nyancat");
return false;
}
}
else {
konami_step = 0;
}
});
})();

View file

@ -149,9 +149,9 @@
// Store url
sam.store.set('url', window.location.hostname + '/yunohost/api');
// Get YunoHost version
if (sam.store.get('connected')) {
this.api('/version', function(versions) {
this.api('/diagnosis', function(diagnosis) {
versions = diagnosis.packages;
$('#yunohost-version').html(y18n.t('footer_version', [versions.yunohost.version, versions.yunohost.repo]));
});
}

View file

@ -138,7 +138,7 @@
"enabled": "Enabled",
"error_modify_something": "You should modify something",
"error_occured": "An error occurred, try again",
"error_retrieve_feed": "Could not retrieve feed: %s",
"error_retrieve_feed": "Could not retrieve feed: %s. You might have a plugin prevent your browser from performing this request (or the website is down).",
"error_select_domain": "You should indicate a domain",
"error_server": "Server error",
"error_server_unexpected": "Unexpected server error (%s)",

View file

@ -20,12 +20,353 @@
"app_info_uninstall_desc": "Удалите это приложение.",
"app_install_cancel": "Установка отменена.",
"app_install_custom_no_manifest": "Нет файла manifest.json",
"app_list": "Нет файла manifest.json",
"app_list": "Список приложений",
"app_make_default": "Использовать по умолчанию",
"app_repository": "Происхождение приложения: ",
"app_state": "Состояние приложения: ",
"app_state_inprogress": "Выполняется",
"app_state_validated": "Проверенный",
"app_state_working": "Работает",
"password": "Пароль"
"password": "Пароль",
"app_info_debug_desc": "Отображать отладочную информацию для этого приложения.",
"cancel": "Отменить",
"login": "Логин",
"logout": "Выйти",
"ok": "ОК",
"app_info_changelabel_desc": "",
"app_info_changeurl_desc": "Изменить url доступа к этому приложению (домен и/ли путь).",
"app_info_change_url_disabled_tooltip": "Эта опция ещё не реализована в этом приложении",
"app_no_actions": "Это приложение не осуществляет никаких действий",
"app_state_notworking": "Не работает",
"application": "Приложение",
"applications": "Приложения",
"archive_empty": "Пустой архив",
"available": "Доступный",
"available_apps": "Доступные приложения",
"backup": "Резервное копирование",
"backup_action": "Резервное копирование",
"backup_archive_copy": "Скопируйте этот архив в другое хранилище",
"backup_archive_delete": "Удалите этот архив",
"backup_archive_download": "Загрузите этот архив",
"backup_content": "Содержание резервного копирования",
"backup_create": "Сделайте резервное копирование",
"backup_encryption_warning": "Не забудьте этот пароль, он понадобится вам, если вы решите восстановить архив",
"backup_new": "Новое резервное копирование",
"backup_optional_encryption": "Шифрование опционально",
"backup_type": "Тип",
"backups_no": "Без резервного сохранения",
"begin": "Начать",
"both": "Оба",
"check": "Проверить",
"check_stmp": "доступ к порту 25",
"close": "Закрыть",
"confirm_access_add": "Вы хотите предоставить права доступа к %s всем пользователям?",
"confirm_access_clear": "Вы хотите удалить все права доступа к %s ?",
"logged_out": "Вы вышли из системы",
"app_change_url": "Сменить URL",
"confirm_access_remove_user": "Вы хотите удалить права доступа к %s1 для %s2?",
"confirm_app_change_url": "Вы хотите изменить URL доступа к приложению?",
"confirm_app_default": "Вы хотите сделать это приложение приложением по умолчанию?",
"confirm_change_maindomain": "Вы хотите изменить главный домен?",
"confirm_delete": "Вы хотите удалить %s1 ?",
"confirm_firewall_open": "Вы хотите открыть порт %s1 ? (протокол %s2, соединение %s3)",
"confirm_firewall_close": "Вы хотите закрыть порт %s1 ? (протокол %s2, соединение %s3)",
"confirm_install_custom_app": "Установка сторонних приложений может повредить безопасности вашей системы. Установка на вашу ответственность.",
"confirm_install_domain_root": "Вы больше не сможете устанавливать приложения на %s1. Продолжить?",
"confirm_restore": "Вы хотите восстановить %s1 ?",
"confirm_service_start": "Вы хотите начать %s1 ?",
"confirm_service_stop": "Вы уверены, что хотите остановить %s1 ?",
"confirm_service_enable": "Вы уверены, что хотите активировать %s1 ?",
"confirm_service_disable": "Вы уверены, что хотите отключить %s1 ?",
"confirm_uninstall": "Вы уверены, что хотите удалить %s1 ?",
"confirm_update_apps": "Вы уверены, что хотите обновить все приложения?",
"confirm_update_packages": "Вы уверены, что хотите обновить все пакеты?",
"confirm_update_specific_app": "Вы уверены, что хотите обновить %s1 ?",
"confirm_upnp_enable": "Вы уверены, что хотите включить UPnP?",
"confirm_upnp_disable": "Вы уверены, что хотите отключить UPnP?",
"confirm_reboot_action_reboot": "Вы уверены, что хотите перезагрузить ваш сервер?",
"confirm_reboot_action_shutdown": "Вы уверены, что хотите выключить ваш сервер?",
"connection": "Соединение",
"copy": "Копировать",
"count_min": "%s1 мин",
"cpu_load": "Загрузка процессора",
"created_at": "Создано в",
"cumulative_usage": "Общее потребление",
"custom_app_install": "Установка пользовательских приложений",
"custom_app_url_only_github": "В настоящее время только из GitHub",
"default": "По умолчанию",
"delete": "Удалить",
"description": "Описание",
"backup_optional_password": "Пароль опционально",
"confirm_access_remove_all": "Вы уверены, что хотите удалить все доступы к %s 1 ?",
"domain_dns_conf_is_just_a_recommendation": "Эта страница показывает вам *рекомендуемую* конфигурацию. Она *не* создаёт для вас конфигурацию DNS. Вы должны сами конфигурировать зону вашего DNS у вашего регистратора в соответствии с этой рекомендацией.",
"diagnosis": "Диагноз",
"diagnosis_hide_private": "Покажите диагноз без личных данных",
"diagnosis_view_private": "Покажите диагноз с личными данными",
"diagnosis_with_private": "Диагноз с личными данными",
"disable": "Отключить",
"disabled": "Отключено",
"disk": "Диск",
"dns": "DNS",
"domain": "Домен",
"domain_add": "Добавить домен",
"domain_add_dyndns_doc": "... и я хочу использовать сервис для динамического DNS.",
"domain_add_panel_with_domain": "У меня уже есть доменное имя…",
"domain_add_panel_without_domain": "У меня нет доменного имени…",
"domain_default": "Домен по умолчанию",
"install_custom_app_appslists_info": "Вы можете использовать альтернативный список приложений, чтобы установить другие приложения, созданные сообществом YonoHost.",
"domain_default_desc": "Домен по умолчанию — это домен, где пользователи вводят логин и пароль.",
"domain_default_longdesc": "Это ваш домен по умолчанию.",
"domain_delete_longdesc": "Удалить этот домен",
"domain_dns_config": "Конфигурация DNS",
"domain_dns_longdesc": "Посмотреть конфигурацию DNS",
"domain_list": "Список доменов",
"domain_name": "Имя домена",
"domain_select": "Выбрать домен",
"domain_visit": "Посетить",
"domain_visit_url": "Посетить %s1",
"domains": "Домены",
"download": "Загрузить",
"enable": "Включить",
"enabled": "Включено",
"error_modify_something": "Вы должны что-то изменить",
"error_occured": "Произошла ошибка, попробуйте снова",
"error_server": "Ошибка сервера",
"error_server_unexpected": "Неожиданная ошибка сервера (%s1)",
"everyone_has_access": "Все имеют доступ.",
"experimental_warning": "Внимание: это экспериментальное приложение работает нестабильно, вы можете использовать его, только если понимаете, что делаете.",
"filesystem": "Файловая система",
"firewall": "Файрволл",
"footer_version": "Создано<a href='https://yunohost.org'></a> %s (%s).",
"form_input_example": "Например: %s",
"free": "Свободный",
"fs_type": "Тип файловой системы",
"home": "Дом",
"hook_adminjs_group_configuration": "Конфигурация",
"hook_conf_cron": "Постоянные задачи",
"hook_conf_ldap": "LDAP",
"hook_conf_nginx": "Nginx",
"hook_conf_ssh": "SSH",
"hook_conf_ssowat": "SSOwat",
"hook_conf_xmpp": "XMPP",
"hook_conf_ynh_certs": "Сертификат безопасности",
"hook_conf_ynh_firewall": "Файрвол",
"hook_conf_ynh_mysql": "Пароль MySQL",
"hook_data_home": "Пользовательские данные",
"hook_data_home_desc": "Пользовательские данные находятся в /home/USER",
"hook_data_mail": "Почта",
"hook_data_mail_desc": "Почта на сервере",
"hostname": "Имя хоста",
"id": "ID",
"inactive": "Неактивен",
"infos": "Информация",
"install": "Установить",
"install_name": "Установить %s",
"install_time": "Время установки",
"installation_complete": "Установка завершена",
"installed": "Установлено",
"installed_apps": "Установленные приложения",
"installing": "Устанавливаю",
"interface": "Интерфейс",
"io": "I/O",
"ipv4": "IPv4",
"ipv6": "IPv6",
"loading": "Загружается…",
"log": "Лог",
"logged_in": "Вы вошли",
"mailbox_quota_description": "Например, 700M это CD, 4700M это DVD.",
"mailbox_quota_placeholder": "Оставьте пустым или поставьте 0, чтобы отключить.",
"manage_apps": "Управление приложениями",
"manage_domains": "Управление доменами",
"manage_users": "Управление пользователями",
"memory": "Память",
"menu": "Меню",
"migrations": "Миграция",
"migrations_done": "Предыдущие миграции",
"migrations_no_done": "Нет предыдущих миграций",
"monitoring": "Мониторинг",
"monitoring_disabled": "Мониторинг не включён.",
"myserver": "мой сервер",
"myserver_org": "myserver.org",
"network": "Сеть",
"next": "Следующий",
"no": "Нет",
"no_installed_apps": "Нет установленных приложений.",
"no_log": "Лог отсутствует.",
"no_user_to_add": "Нет больше пользователей, которых можно добавить.",
"open": "Открыть",
"operations": "Действия",
"os": "ОС",
"password_confirmation": "Подтвердите пароль",
"password_description": "Пароль должен иметь минимум %s1 символов.",
"password_empty": "Поле для ввода пароля пусто",
"password_new": "Новый пароль",
"passwords_dont_match": "Пароли не совпадают",
"passwords_too_short": "Пароль слишком короткий",
"logs": "Логи",
"logs_history": "История команд, выполненных в системе",
"logs_package": "История действий с пакетами Debian",
"logs_system": "Логи ядра и другие низкоуровневые события",
"logs_access": "Список доступов и банов",
"logs_app": "Списки приложений",
"logs_no_logs_registered": "Нет зарегистрированных логов для этой категории",
"logs_end_with_error": "Лог закончился ошибкой :",
"logs_error": "Ошибка",
"logs_ended_at": "Конец",
"logs_started_at": "Старт",
"logs_context": "Контекст",
"logs_share_with_yunopaste": "Расшарить с YunoPaste",
"logs_more": "Отразить больше линий",
"active": "Активный",
"port": "Порт",
"ports": "Порты",
"meltdown": "Вы в опасности <a target=\"_blank\" href=\"https://meltdownattack.com/\">meltdown</a> из-за критической аппаратной уязвимости. Чтобы устранить уязвимость, вы должны <a href=\"#/update\">обновить вашу систему, <a> потом <a href=\"#/tools/reboot\">перезагрузить ее, </a> чтобы загрузить новое ядро Linux.",
"appslists": "Списки приложений",
"appslists_no_lists": "Нет списков приложений",
"appslists_custom": "Пользовательский список приложений",
"appslists_manage": "Управлять списками приложений",
"appslists_confirm_remove": "Вы уверены, что хотите удалить этот список приложений?",
"appslists_info_refresh_desc": "Обновите статус приложений из этого списка.",
"appslists_info_remove_desc": "Приложения из этого списка больше не будут доступны.",
"appslists_last_update": "Последнее обновление",
"appslists_unknown_list": "Неизвестный список приложений: %s",
"appslists_community_list": "Список приложений сообщества",
"name": "Имя",
"install_community_appslists_info": "Список приложений сообщества даёт вам возможность установить приложения, созданные сообществом. <br />Полный список смотри на<a href='https://yunohost.org/apps'>yunohost.org/apps</a>.",
"install_community_appslists_warning": "Внимание! Пакеты этих приложений не являются <strong>not</strong> официальными и не созданы командой YonoHost. <br />Устанавливая эти приложения, вы сами отвечаете за последствия и рискуете крахом вашей системы.",
"validity": "",
"domain_is_eligible_for_ACME": "Для установки сертификата Lets Encrypt домен должен быть правильно сконфигурирован !",
"domain_not_eligible_for_ACME": "Этот домен не готов к установке сертификата Lets Encrypt. Пожалуйста, проверьте конфигурацию DNS и доступность HTTP сервера.",
"install_letsencrypt_cert": "Установить сертификат Let's Encrypt",
"manually_renew_letsencrypt_message": "Сертификат будет автоматически обновлён в последние 15 дней своего действия. Вы может вручную обновить его, если хотите. (Не рекомендуется).",
"manually_renew_letsencrypt": "Теперь обновить вручную",
"bit_rate": "скорость передачи данных",
"confirm_postinstall": "Вы начинаете процесс конфигурации домена %s. Это займёт несколько минут, *не прерывайте процесс*.",
"domain_add_dns_doc": "… я <a href='//yunohost.org/dns'>set my DNS установил мой DNS правильно</a>.",
"gateway": "Шлюз: ",
"internal_exception": "<strong>Yunohost сообщает о внутренней ошибке :/</strong><br><em>Нам очень жаль.<br>Ищите помощь на<a href=\"https://forum.yunohost.org/\">форуме</a> или <a href=\"https://chat.yunohost.org/\">в чате, </a> чтобы обсудить ситуацию, или сообщите об ошибке <a href=\"https://github.com/YunoHost/issues\">тут</a>.</em><br>Следующая информация может быть полезной для человека, помогающего вам :<h3>Action</h3><pre>%s%s</pre><h3>Traceback</h3><pre>%s</pre>",
"tools": "Инструменты",
"tools_adminpw": "Смените пароль администратора",
"tools_adminpw_confirm_placeholder": "Подтвердите новый пароль",
"tools_adminpw_current": "Действующий пароль",
"tools_adminpw_current_placeholder": "Введите действующий пароль",
"tools_adminpw_new_placeholder": "Введите новый пароль",
"tools_security_feed": "Предупреждения безопасности",
"tools_security_feed_no_items": "Нет предупреждений безопасности",
"tools_security_feed_subscribe_rss": "Подпишитесь на RSS предупреждений безопасности",
"tools_security_feed_view_items": "Посмотрите все предупреждения безопасности",
"tools_reboot": "Перезагрузите сервер",
"tools_reboot_btn": "Перезагрузить",
"tools_reboot_done": "Перезагрузка...",
"tools_rebooting": "Ваш сервер перезагружается, Чтобы вернуться в панель управления, дождитесь перезагрузки сервера. Вы можете проверить это, обновив страницу (F5).",
"tools_shutdown": "Выключите ваш сервер",
"tools_shutdown_btn": "Выключить",
"tools_shutdown_done": "Выключается...",
"tools_shuttingdown": "Ваш сервер выключен. Пока ваш сервер выключен, вы не можете использовать панель управления.",
"tools_shutdown_reboot": "Выключить/Перезагрузить",
"total": "Все вместе",
"transmission": "Передача",
"udp": "UDP",
"unauthorized": "Неавторизованный",
"uninstall": "Удалить",
"unknown_action": "Неизвестное действие %s",
"unknown_argument": "Неизвестный аргумент : %s",
"upload": "",
"upload_archive": "Сгрузить архив",
"upnp": "UPnP",
"upnp_disabled": "UPnP отключён.",
"upnp_enabled": "UPnP включён.",
"uptime": "Время действия",
"url": "URL",
"used": "Использовано",
"user_email": "Email",
"user_emailaliases": "Почтовый алиас",
"user_emailforward": "Пересылка почты",
"user_fullname": "Полное имя",
"user_interface_link": "Интерфейс пользователя",
"user_mailbox_use": "Пространство, используемое почтовым ящиком",
"user_new_forward": "newforward@myforeigndomain.org",
"user_new_mail": "newmail@mydomain.org",
"user_username": "Имя пользователя",
"user_username_edit": "Редактировать аккаунт %ss",
"users": "Пользователи",
"users_list": "Список пользователей",
"users_new": "Новый пользователь",
"users_no": "Нет пользователей.",
"versions": "Версия",
"view_user_profile": "Смотрите профиль %s's",
"warning_first_user": "Сначала вы должны <a href='#/users/create' class='alert-link'>создать пользователя</a> first.",
"write": "Писать",
"wrong_password": "Неправильный пароль",
"yes": "Да",
"certificate_alert_not_valid": "ОПАСНО: установленный сертификат не действителен! HTTPS не будет работать!",
"certificate_alert_letsencrypt_about_to_expire": "Срок действия сертификата истекает. Скоро он будет автоматически обновлён.",
"certificate_alert_about_to_expire": "ВНИМАНИЕ : Срок действия сертификата истекает ! Он НЕ будет обновлен автоматически !",
"certificate_alert_good": "OK, установленный сертификат работает!",
"certificate_alert_great": "Прекрасно! Вы используете действующий сертификат Lets Encrypt !",
"certificate_alert_unknown": "Неизвестный статус",
"certificate_manage": "Управлять сертификатом SSL",
"certificate_old_letsencrypt_app_conflict": "Приложение letsencrypt сейчас установлено и конфликтует с этой функцией. Пожалуйста, удалите приложение и используйте новый интерфейс управления сертификатом.",
"ssl_certificate": "Сертификат SSL",
"confirm_cert_install_LE": "Вы уверены, что хотите установить сертификат Lets Encrypt для этого домена ?",
"confirm_cert_manual_renew_LE": "Вы уверены, что хотите вручную обновить сертификат Lets Encrypt для этого домена?",
"certificate": "Сертификат",
"certificate_status": "Статус сертификата",
"mount_point": "Точка монтирования",
"no_allowed_users": "Нет разрешённых пользователей.",
"non_compatible_api": "Несовместимый API",
"path": "Путь",
"logs_operation": "Действие в системе выполнено YonoHost",
"logs_service": "Журналы сервисов",
"logs_path": "Путь",
"path_url": "Путь",
"postinstall_domain": "Это первое доменное имя, связанное с сервером YonoHost, то есть имя, которым будут пользоваться пользователи вашего сервера, чтобы попасть на портал аутентификации. Оно будет видно каждому, выбирайте его тщательно.",
"postinstall_intro_1": "Поздравляем! YunoHost успешно установлен.",
"postinstall_intro_2": "Осталось сделать две настройки конфигурации, чтобы активировать службы вашего сервера.",
"postinstall_intro_3": "Вы можете получить больше информации, <a href='//yunohost.org/postinstall' target='_blank'>посетив страницу документации</a>",
"postinstall_password": "Этот пароль нужен для того, чтобы управлять вашим сервером. Не торопитесь, проявите мудрость, создавая его.",
"previous": "Предыдущий",
"process": "Процесс",
"protocol": "Протокол",
"ram": "RAM",
"read": "Читать",
"read_more": "Читать еще",
"reception": "Приём",
"refresh_app_list": "Обновить список",
"remove_access": "Удалить доступ",
"restore": "Восстановить",
"run": "Включить",
"running": "Выполняется",
"save": "Сохранить",
"select_user": "Выбрать пользователя",
"service_start_on_boot": "Запуск при загрузке ",
"service_status": "Статус: ",
"services": "Службы",
"services_list": "Список служб",
"set_default": "Установить по умолчанию",
"size": "Размер",
"skip": "Пропустить",
"start": "Начать",
"started_at": "Начало на:",
"status": "Статус",
"stop": "Стоп",
"storage_create": "Добавить удаленное хранилище",
"storages_new": "Новое удаленное хранилище",
"storages_no": "Нет хранилищ.",
"swap": "Подкачка",
"system": "Система",
"system_apps": "Приложения",
"system_apps_nothing": "Нет приложений для обновления.",
"system_delayed_upgrade_warning": "<b>%s</b> будет обновлён автоматически в течение часа.",
"system_packages": "Пакеты",
"system_packages_nothing": "Нет пакетов, нуждающихся в обновлении.",
"system_update": "Обновление системы",
"system_upgrade": "Обновление системы",
"system_upgrade_btn": "Обновление",
"system_upgrade_all_applications_btn": "Обновление всех приложений",
"system_upgrade_all_packages_btn": "Обновление всех пакетов",
"tcp": "TCP",
"time_since_update": "Время после обновления: ",
"usage": "Использование",
"certificate_authority": "Центр сертификации"
}