diff --git a/debian/changelog b/debian/changelog index 0d463f83..4e67bee3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -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 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. - [ Jrome 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 - [ JTranslations ] + [ 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 diff --git a/src/css/style.less b/src/css/style.less index f8627a09..e1496f71 100644 --- a/src/css/style.less +++ b/src/css/style.less @@ -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; diff --git a/src/img/nyancat.gif b/src/img/nyancat.gif new file mode 100644 index 00000000..f2e18769 Binary files /dev/null and b/src/img/nyancat.gif differ diff --git a/src/js/yunohost/controllers/home.js b/src/js/yunohost/controllers/home.js index fb3159fc..ac315c21 100644 --- a/src/js/yunohost/controllers/home.js +++ b/src/js/yunohost/controllers/home.js @@ -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) + - ' ('+y18n.t('read_more')+')'; - 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 * diff --git a/src/js/yunohost/controllers/monitor.js b/src/js/yunohost/controllers/monitor.js index a7e8c664..527e466c 100644 --- a/src/js/yunohost/controllers/monitor.js +++ b/src/js/yunohost/controllers/monitor.js @@ -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'); }); -})(); \ No newline at end of file +})(); diff --git a/src/js/yunohost/controllers/tools.js b/src/js/yunohost/controllers/tools.js index d24566db..30b73e10 100644 --- a/src/js/yunohost/controllers/tools.js +++ b/src/js/yunohost/controllers/tools.js @@ -55,7 +55,7 @@ data.packages[i].changelog = data.packages[i].changelog.replace(/\n/g, '
'); // 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 }); }); }); diff --git a/src/js/yunohost/events.js b/src/js/yunohost/events.js index cde91e94..2f4cd258 100644 --- a/src/js/yunohost/events.js +++ b/src/js/yunohost/events.js @@ -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) + + ' ('+y18n.t('read_more')+')'; + 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; + } + }); + })(); diff --git a/src/js/yunohost/main.js b/src/js/yunohost/main.js index 8ca70af2..ea00fe6c 100644 --- a/src/js/yunohost/main.js +++ b/src/js/yunohost/main.js @@ -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])); }); } diff --git a/src/locales/en.json b/src/locales/en.json index 8d90af44..b1acbd34 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -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)", diff --git a/src/locales/ru.json b/src/locales/ru.json index 353fe5e5..330ff3f3 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -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": "Создано %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": "Вы в опасности meltdown из-за критической аппаратной уязвимости. Чтобы устранить уязвимость, вы должны обновить вашу систему, потом перезагрузить ее, чтобы загрузить новое ядро 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": "Список приложений сообщества даёт вам возможность установить приложения, созданные сообществом.
Полный список смотри наyunohost.org/apps.", + "install_community_appslists_warning": "Внимание! Пакеты этих приложений не являются not официальными и не созданы командой YonoHost.
Устанавливая эти приложения, вы сами отвечаете за последствия и рискуете крахом вашей системы.", + "validity": "", + "domain_is_eligible_for_ACME": "Для установки сертификата Let’s Encrypt домен должен быть правильно сконфигурирован !", + "domain_not_eligible_for_ACME": "Этот домен не готов к установке сертификата Let’s 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": "… я set my DNS установил мой DNS правильно.", + "gateway": "Шлюз: ", + "internal_exception": "Yunohost сообщает о внутренней ошибке :/
Нам очень жаль.
Ищите помощь нафоруме или в чате, чтобы обсудить ситуацию, или сообщите об ошибке тут.

Следующая информация может быть полезной для человека, помогающего вам :

Action

%s%s

Traceback

%s
", + "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": "Редактировать аккаунт %s’s", + "users": "Пользователи", + "users_list": "Список пользователей", + "users_new": "Новый пользователь", + "users_no": "Нет пользователей.", + "versions": "Версия", + "view_user_profile": "Смотрите профиль %s's", + "warning_first_user": "Сначала вы должны создать пользователя 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": "Прекрасно! Вы используете действующий сертификат Let’s Encrypt !", + "certificate_alert_unknown": "Неизвестный статус", + "certificate_manage": "Управлять сертификатом SSL", + "certificate_old_letsencrypt_app_conflict": "Приложение ‘letsencrypt’ сейчас установлено и конфликтует с этой функцией. Пожалуйста, удалите приложение и используйте новый интерфейс управления сертификатом.", + "ssl_certificate": "Сертификат SSL", + "confirm_cert_install_LE": "Вы уверены, что хотите установить сертификат Let’s Encrypt для этого домена ?", + "confirm_cert_manual_renew_LE": "Вы уверены, что хотите вручную обновить сертификат Let’s 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": "Вы можете получить больше информации, посетив страницу документации", + "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": "%s будет обновлён автоматически в течение часа.", + "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": "Центр сертификации" }