Merge branch 'dev' into 4.4RC

This commit is contained in:
Mario Vavti 2019-08-13 09:27:03 +02:00
commit 06ac3e896a
8 changed files with 634 additions and 654 deletions

View File

@ -1,18 +1,18 @@
# Hubzilla at Home next to your Router
This readme will show you how to install and run Hubzilla or Zap at home.
This readme will show you how to install and run Hubzilla (or Zap) at home.
The installation is done by a script.
What the script will do for you...
+ install everything required by Zap/Hubzilla, basically a web server (Apache), PHP, a database (MySQL), certbot,...
+ install everything required by Hubzilla, basically a web server (Apache), PHP, a database (MySQL), certbot,...
+ create a database
+ run certbot to have everything for a secure connection (httpS)
+ create a script for daily maintenance
- backup to external disk (certificates, database, /var/www/)
- renew certfificate (letsencrypt)
- update of Zap/Hubzilla
- update of Hubzilla
- update of Debian
- restart
+ create cron jobs for
@ -23,8 +23,8 @@ What the script will do for you...
The script is known to work without adjustments with
+ Hardware
- Mini-PC with Debian 9 (stretch), or
- Rapberry 3 with Raspbian, Debian 9
- Mini-PC with Debian 10 (stretch), or
- Rapberry 3 with Raspbian, Debian 10
+ DynDNS
- selfHOST.de
- freedns.afraid.org
@ -40,7 +40,7 @@ The script can install both [Hubzilla](https://zotlabs.org/page/hubzilla/hubzill
## Disclaimers
- This script does work with Debian 9 only.
- This script does work with Debian 10 only.
- This script has to be used on a fresh debian install only (it does not take account for a possibly already installed and configured webserver or sql implementation).
# Step-by-Step Overwiew
@ -55,7 +55,7 @@ Hardware
Software
+ Fresh installation of Debian 9 (Stretch)
+ Fresh installation of Debian 10 (Stretch)
+ Router with open ports 80 and 443 for your web server
## The basic steps (quick overview)
@ -136,7 +136,7 @@ The cost is 1,50 € per month (2019).
## Note on Rasperry
The script was tested with an Raspberry 3 under Raspian, Debian 9.
The script was tested with an Raspberry 3 under Raspian, Debian 10.
It is recommended to run the Raspi without graphical frontend (X-Server). Use...
@ -146,7 +146,7 @@ to boot the Rapsi to the client console.
DO NOT FORGET TO CHANGE THE DEFAULT PASSWORD FOR USER PI!
On a Raspian Stretch (Debian 9) the validation of the mail address fails for the very first user.
On a Raspian Stretch (Debian 10) the validation of the mail address fails for the very first user.
This used to happen on some *bsd distros but there was some work to fix that a year ago (2017).
So if your system isn't registered in DNS or DNS isn't active do

145
.homeinstall/hubzilla-setup.sh Normal file → Executable file
View File

@ -26,8 +26,8 @@
# - install
# * apache webserer,
# * php,
# * mysql - the database for hubzilla,
# * phpmyadmin,
# * mariadb - the database for hubzilla,
# * adminer,
# * git to download and update hubzilla addon
# - download hubzilla core and addons
# - configure cron
@ -44,11 +44,6 @@
# Security - password is the same for mysql-server, phpmyadmin and hubzilla db
# - The script runs into installation errors for phpmyadmin if it uses
# different passwords. For the sake of simplicity one singel password.
#
# Hubzilla - email verification
# - The script switches off email verification off in all htconfig.tpl.
# Example: /var/www/html/view/en/htconfig.tpl
# - Is this a silly idea or not?
#
# How to restore from backup
# --------------------------
@ -73,8 +68,6 @@
# The script is based on Thomas Willinghams script "debian-setup.sh"
# which he used to install the red#matrix.
#
# The script uses another script from https://github.com/lukas2511/letsencrypt.sh
#
# The documentation for bash is here
# https://www.gnu.org/software/bash/manual/bash.html
#
@ -94,9 +87,9 @@ function check_sanity {
then
die "Debian is supported only"
fi
if ! grep -q 'Linux 9' /etc/issue
if ! grep -q 'Linux 10' /etc/issue
then
die "Linux 9 (stretch) is supported only"x
die "Linux 10 (buster) is supported only"x
fi
}
@ -207,21 +200,17 @@ function print_warn {
}
function stop_hubzilla {
if [ -d /etc/apache2 ]
then
print_info "stopping apache webserver..."
service apache2 stop
fi
if [ -f /etc/init.d/mysql ]
then
print_info "stopping mysql db..."
/etc/init.d/mysql stop
fi
print_info "stopping apache webserver..."
systemctl stop apache2
print_info "stopping mysql db..."
systemctl stop mariadb
}
function install_apache {
print_info "installing apache..."
nocheck_install "apache2 apache2-utils"
a2enmod rewrite
systemctl restart apache2
}
function install_imagemagick {
@ -242,78 +231,46 @@ function install_sendmail {
function install_php {
# openssl and mbstring are included in libapache2-mod-php
print_info "installing php..."
nocheck_install "libapache2-mod-php php php-pear php-curl php-mcrypt php-gd php-mysqli php-mbstring php-xml"
sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 100M/g" /etc/php/7.0/apache2/php.ini
sed -i "s/^post_max_size =.*/post_max_size = 100M/g" /etc/php/7.0/apache2/php.ini
nocheck_install "libapache2-mod-php php php-pear php-curl php-gd php-mysqli php-mbstring php-xml php-zip"
sed -i "s/^upload_max_filesize =.*/upload_max_filesize = 100M/g" /etc/php/7.3/apache2/php.ini
sed -i "s/^post_max_size =.*/post_max_size = 100M/g" /etc/php/7.3/apache2/php.ini
}
function install_mysql {
# http://www.microhowto.info/howto/perform_an_unattended_installation_of_a_debian_package.html
#
# To determine the required package name, key and type you can perform
# a trial installation then search the configuration database.
#
# debconf-get-selections | grep mysql-server
#
# The command debconf-get-selections is provided by the package
# debconf-utils, which you may need to install.
#
# apt-get install debconf-utils
#
# If you want to supply an answer to a configuration question but do not
# want to be prompted for it then this can be arranged by preseeding the
# DebConf database with the required information.
#
# echo mysql-server mysql-server/root_password password xyzzy | debconf-set-selections
# echo mysql-server mysql-server/root_password_again password xyzzy | debconf-set-selections
#
print_info "installing mysql..."
if [ -z "$mysqlpass" ]
then
die "mysqlpass not set in $configfile"
fi
echo mysql-server mysql-server/root_password password $mysqlpass | debconf-set-selections
echo mysql-server mysql-server/root_password_again password $mysqlpass | debconf-set-selections
nocheck_install "php-mysql mysql-server mysql-client"
if type mysql ; then
echo "Yes, mysql is installed"
else
echo "mariadb-server"
nocheck_install "mariadb-server"
systemctl status mariadb
systemctl start mariadb
mysql --user=root <<_EOF_
UPDATE mysql.user SET Password=PASSWORD('${db_root_password}') WHERE User='root';
DELETE FROM mysql.user WHERE User='';
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;
_EOF_
fi
}
function install_phpmyadmin {
print_info "installing phpmyadmin..."
if [ -z "$phpmyadminpass" ]
function install_adminer {
print_info "installing adminer..."
nocheck_install "adminer"
if [ ! -f /etc/adminer/adminer.conf ]
then
die "phpmyadminpass not set in $configfile"
echo "Alias /adminer /usr/share/adminer/adminer" > /etc/adminer/adminer.conf
ln -s /etc/adminer/adminer.conf /etc/apache2/conf-available/adminer.conf
else
print_info "file /etc/adminer/adminer.conf exists already"
fi
echo phpmyadmin phpmyadmin/setup-password password $phpmyadminpass | debconf-set-selections
echo phpmyadmin phpmyadmin/mysql/app-pass password $phpmyadminpass | debconf-set-selections
echo phpmyadmin phpmyadmin/app-password-confirm password $phpmyadminpass | debconf-set-selections
echo phpmyadmin phpmyadmin/mysql/admin-pass password $phpmyadminpass | debconf-set-selections
echo phpmyadmin phpmyadmin/password-confirm password $phpmyadminpass | debconf-set-selections
echo phpmyadmin phpmyadmin/reconfigure-webserver multiselect apache2 | debconf-set-selections
nocheck_install "phpmyadmin"
# It seems to be not neccessary to check rewrite.load because it comes
# with the installation. To be sure you could check this manually by:
#
# nano /etc/apache2/mods-available/rewrite.load
#
# You should find the content:
#
# LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
a2enmod rewrite
if [ ! -f /etc/apache2/apache2.conf ]
then
die "could not find file /etc/apache2/apache2.conf"
fi
sed -i \
"s/AllowOverride None/AllowOverride all/" \
/etc/apache2/apache2.conf
if [ -z "`grep 'Include /etc/phpmyadmin/apache.conf' /etc/apache2/apache2.conf`" ]
then
echo "Include /etc/phpmyadmin/apache.conf" >> /etc/apache2/apache2.conf
fi
service apache2 restart
/etc/init.d/mysql start
a2enconf adminer
systemctl reload apache2
}
function create_hubzilla_db {
@ -330,6 +287,7 @@ function create_hubzilla_db {
then
die "hubzilla_db_pass not set in $configfile"
fi
systemctl restart mariadb
Q1="CREATE DATABASE IF NOT EXISTS $hubzilla_db_name;"
Q2="GRANT USAGE ON *.* TO $hubzilla_db_user@localhost IDENTIFIED BY '$hubzilla_db_pass';"
Q3="GRANT ALL PRIVILEGES ON $hubzilla_db_name.* to $hubzilla_db_user@localhost identified by '$hubzilla_db_pass';"
@ -454,17 +412,7 @@ function install_letsencrypt {
then
die "Failed to install let's encrypt: 'le_domain' is empty in $configfile"
fi
nocheck_install "apt-transport-https"
# add backports to your sources.list
backports_list=/etc/apt/sources.list.d/backports.list
if [ -f $backports_list ]
then
print_info "$backports_list exist already"
else
echo "deb https://deb.debian.org/debian stretch-backports main" > $backports_list
fi
apt-get -y update
DEBIAN_FRONTEND=noninteractive apt-get -q -y -t stretch-backports install certbot python-certbot-apache
nocheck_install "certbot python-certbot-apache"
print_info "run certbot ..."
certbot --apache -w /var/www/html -d $le_domain -m $le_email --agree-tos --non-interactive --redirect --hsts --uir
service apache2 restart
@ -486,9 +434,9 @@ function install_hubzilla {
print_info "installing hubzilla addons..."
cd /var/www/html/
# if you install Hubzilla
util/add_addon_repo https://framagit.org/hubzilla/addons hzaddons
# util/add_addon_repo https://framagit.org/hubzilla/addons hzaddons
# if you install ZAP
#util/add_addon_repo https://framagit.org/zot/zap-addons.git zaddons
util/add_addon_repo https://framagit.org/zot/zap-addons.git zaddons
mkdir -p "store/[data]/smarty3"
chmod -R 777 store
touch .htconfig.php
@ -498,12 +446,6 @@ function install_hubzilla {
chown root:www-data /var/www/html/
chown root:www-data /var/www/html/.htaccess
chmod 0644 /var/www/html/.htaccess
print_info "try to switch off email registration..."
sed -i "s/verify_email.*1/verify_email'] = 0/" /var/www/html/view/*/ht*
if [ -n "`grep -r 'verify_email.*1' /var/www/html/view/`" ]
then
print_warn "Hubzillas registration prozess might have email verification switched on."
fi
print_info "installed hubzilla"
}
@ -635,7 +577,6 @@ source $configfile
selfhostdir=/etc/selfhost
selfhostscript=selfhost-updater.sh
hubzilladaily=hubzilla-daily.sh
plugins_update=.homeinstall/plugins_update.sh
backup_mount_point=/media/hubzilla_backup
#set -x # activate debugging from here
@ -649,7 +590,7 @@ install_apache
install_imagemagick
install_php
install_mysql
install_phpmyadmin
install_adminer
create_hubzilla_db
run_freedns
install_run_selfhost

View File

@ -0,0 +1,7 @@
<dl class="dl-horizontal">
<dd>На этой странице отображается список всех подключений этого канала. Список можно отсортировать и отфильтровать с помощью кнопки <a href='#' onclick='contextualHelpFocus(".section-title-wrapper", 0); return false;' title="Нажмите чтобы выделить элемент..."><button class='btn btn-outline-secondary btn-sm'><i class="fa fa-filter"></i></button></a> рядом с кнопкой поиска.</dd>
<dt>Сведения о контакте</dt>
<dd>Каждая запись в списке показывает информацию о конкретном контакте. Полупрозрачное изображение профиля указывает на заархивированное соединение.</dd>
<dt>Статус контакта</dt>
<dd>Контакт может находиться в разных состояниях: <ul><li>Заархивирован</li><li>Игнорируется</li><li>Заблокирован</li><li>Скрыт</li></ul></dd>
</dl>

View File

@ -0,0 +1,9 @@
<dl class="dl-horizontal">
<dd>Здесь отображается поток сообщений и бесед, обычно упорядоченных по последнему обновлению. Данная страница имеет гибкие настройки.</dd>
<dt><a href='#' onclick='contextualHelpFocus("#profile-jot-wrapper", 0); return false;' title="Нажмите чтобы выделить элемент...">Создать заметку</a></dt>
<dd>В верхней части страницы есть текстовое поле с надписью "Поделиться". Нажатие на это поле открывает редактор сообщений. Внешний ид редактора сообщений настраивается, однако по умолчанию редактор имеет поля для текста заметки и необязательного поля "Заголовок". Кнопки под полем для ввода текста слева служат для форматирования текста, вставки ссылок, изображений и других данных. Кнопки справа обеспечивают предварительный просмотр сообщения, настройку разрешений для публикации и кнопку <button class='btn btn-outline-secondary btn-sm'>Отправить</button> для её отправки.</dd>
<dt><a href='#' onclick='contextualHelpFocus("#group-sidebar", 1); return false;' title="Нажмите чтобы выделить элемент...">Группы конфиденциальности</a></dt>
<dd>Созданные вами группы конфиденциальности отображаются на боковой панели. Их выбор фильтрует сообщения по публикациям, которые созданы каналами в выбранной группе.</dd>
<dt><a href='#' onclick='$("#dbtn-acl").click(); return false;' title="Нажмите чтобы выделить элемент...">Разрешения публикации</a></dt>
<dd>Список контроля доступа (ACL) используется для того, чтобы указать, кто будет видеть вашу новую публикацию. При нажатии кнопки ACL рядом с кнопкой <button class='btn btn-outline-secondary btn-sm'>Поделиться</button> появится диалоговое окно, в котором вы можете выбрать, какие каналы и / или группы конфиденциальности могут видеть сообщение. Вы также можете выбрать, кому явно отказано в доступе. Например, вы планируете сюрприз для друга. Вы можете отправить сообщение с приглашением всем в вашей группе "Друзья" <i>кроме</i> друга, которого вы хотите поздравить. В этом случае публикацию увидят все члены группы "Друзья", кроме этого человека.</dd>
</dl>

File diff suppressed because it is too large Load Diff

View File

@ -107,6 +107,7 @@ App::$strings["Link to source"] = "Enlace a la fuente";
App::$strings["Event title"] = "Título del evento";
App::$strings["Start date and time"] = "Fecha y hora de comienzo";
App::$strings["End date and time"] = "Fecha y hora de finalización";
App::$strings["Timezone:"] = "Zona horaria: ";
App::$strings["Description"] = "Descripción";
App::$strings["Location"] = "Ubicación";
App::$strings["Previous"] = "Anterior";
@ -165,6 +166,7 @@ App::$strings["Some permissions may be inherited from your channel's <a href=\"s
App::$strings["You must be logged in to see this page."] = "Debe haber iniciado sesión para poder ver esta página.";
App::$strings["Posts and comments"] = "Publicaciones y comentarios";
App::$strings["Only posts"] = "Solo publicaciones";
App::$strings["This is the home page of %s."] = "Esta es la página personal de %s.";
App::$strings["Insufficient permissions. Request redirected to profile page."] = "Permisos insuficientes. Petición redirigida a la página del perfil.";
App::$strings["Search Results For:"] = "Buscar resultados para:";
App::$strings["Reset form"] = "Reiniciar el formulario";
@ -260,7 +262,6 @@ App::$strings["Edit Description"] = "Editar la descripción";
App::$strings["Edit Location"] = "Modificar la dirección";
App::$strings["Preview"] = "Previsualizar";
App::$strings["Permission settings"] = "Configuración de permisos";
App::$strings["Timezone:"] = "Zona horaria: ";
App::$strings["Advanced Options"] = "Opciones avanzadas";
App::$strings["l, F j"] = "l j F";
App::$strings["Edit event"] = "Editar evento";
@ -940,7 +941,6 @@ App::$strings["Client key starts with"] = "La \"client key\" empieza por";
App::$strings["No name"] = "Sin nombre";
App::$strings["Remove authorization"] = "Eliminar autorización";
App::$strings["Permissions denied."] = "Permisos denegados.";
App::$strings["Import"] = "Importar";
App::$strings["Authorize application connection"] = "Autorizar una conexión de aplicación";
App::$strings["Return to your app and insert this Security Code:"] = "Vuelva a su aplicación e introduzca este código de seguridad: ";
App::$strings["Please login to continue."] = "Por favor inicie sesión para continuar.";
@ -1567,7 +1567,7 @@ App::$strings["Connect"] = "Conectar";
App::$strings["Public Forum:"] = "Foro público:";
App::$strings["Keywords: "] = "Palabras clave:";
App::$strings["Don't suggest"] = "No sugerir:";
App::$strings["Common connections (estimated):"] = "Conexiones comunes (estimadas): ";
App::$strings["Common connections (estimated):"] = "Conexiones comunes (estimadas): ";
App::$strings["Global Directory"] = "Directorio global:";
App::$strings["Local Directory"] = "Directorio local:";
App::$strings["Finding:"] = "Encontrar:";
@ -1914,6 +1914,7 @@ App::$strings["Please visit %s to approve or reject the suggestion."] = "Por fav
App::$strings["[\$Projectname:Notify]"] = "[\$Projectname:Aviso]";
App::$strings["created a new post"] = "ha creado una nueva entrada";
App::$strings["commented on %s's post"] = "ha comentado la entrada de %s";
App::$strings["repeated %s's post"] = "repetida la entrada de %s";
App::$strings["edited a post dated %s"] = "ha editado una entrada fechada el %s";
App::$strings["edited a comment dated %s"] = "ha editado un comentario fechado el %s";
App::$strings["Wiki updated successfully"] = "El wiki se ha actualizado con éxito";
@ -2284,8 +2285,10 @@ App::$strings["This app looks in posts for the words/text you specify below, and
App::$strings["Comma separated list of keywords to hide"] = "Lista separada por comas de palabras clave para ocultar";
App::$strings["Word, /regular-expression/, lang=xx, lang!=xx"] = "Palabra, /expresión regular/, lang=xx, lang!=xx";
App::$strings["NSFW"] = "NSFW";
App::$strings["Not allowed."] = "No permitido/a.";
App::$strings["Max queueworker threads"] = "Máximo de hilos en la cola";
App::$strings["Assume workers dead after ___ seconds"] = "Asumir que el proceso de trabajo está muerto después de ___ segundos";
App::$strings["Pause before starting next task: (microseconds. Minimum 100 = .0001 seconds)"] = "Haga una pausa antes de comenzar la siguiente tarea: (microsegundos. Mínimo 100 =.0001 segundos)";
App::$strings["Queueworker Settings"] = "Configuración del gestor de procesos de trabajo en cola";
App::$strings["Insane Journal Crosspost Connector Settings saved."] = "Se han guardado los ajustes del Conector de publicación cruzada de InsaneJournal.";
App::$strings["Insane Journal Crosspost Connector App"] = "App Ajustes del Conector de publicación cruzada de InsaneJournal";
@ -2520,7 +2523,7 @@ App::$strings["Your channel has been upgraded to \$Projectname version"] = "Su c
App::$strings["Please have a look at the"] = "Por favor, eche un vistazo a la ";
App::$strings["git history"] = "historial del git";
App::$strings["change log"] = "lista de cambios";
App::$strings["for further infos."] = "para más información.";
App::$strings["for further info."] = "para más información.";
App::$strings["Upgrade Info"] = "Información de actualización";
App::$strings["Do not show this again"] = "No mostrar esto de nuevo";
App::$strings["Access Denied"] = "Acceso denegado";
@ -3100,6 +3103,7 @@ App::$strings["activity"] = "la/su actividad";
App::$strings["a-z, 0-9, -, and _ only"] = "a-z, 0-9, -, and _ only";
App::$strings["Design Tools"] = "Herramientas de diseño web";
App::$strings["Pages"] = "Páginas";
App::$strings["Import"] = "Importar";
App::$strings["Import website..."] = "Importar un sitio web...";
App::$strings["Select folder to import"] = "Seleccionar la carpeta que se va a importar";
App::$strings["Import from a zipped folder:"] = "Importar desde una carpeta comprimida: ";
@ -3304,6 +3308,9 @@ App::$strings["Like this thing"] = "Me gusta esto";
App::$strings["l F d, Y \\@ g:i A"] = "l d de F, Y \\@ G:i";
App::$strings["Starts:"] = "Comienza:";
App::$strings["Finishes:"] = "Finaliza:";
App::$strings["l F d, Y"] = "l F d, Y";
App::$strings["Start:"] = "Iniciar: ";
App::$strings["End:"] = "Finalizar: ";
App::$strings["This event has been added to your calendar."] = "Este evento ha sido añadido a su calendario.";
App::$strings["Not specified"] = "Sin especificar";
App::$strings["Needs Action"] = "Necesita de una intervención";
@ -3346,6 +3353,8 @@ App::$strings["Embedding disabled"] = "Incrustación deshabilitada";
App::$strings["OpenWebAuth: %1\$s welcomes %2\$s"] = "OpenWebAuth: %1\$s da la bienvenida a %2\$s";
App::$strings["Start calendar week on Monday"] = "Comenzar el calendario semanal por el lunes";
App::$strings["Default is Sunday"] = "Por defecto es domingo";
App::$strings["Event Timezone Selection"] = "Selección del huso horario del evento";
App::$strings["Allow event creation in timezones other than your own."] = "Permitir la creación de eventos en husos horarios distintos del suyo.";
App::$strings["Search by Date"] = "Buscar por fecha";
App::$strings["Ability to select posts by date ranges"] = "Capacidad de seleccionar entradas por rango de fechas";
App::$strings["Tag Cloud"] = "Nube de etiquetas";
@ -3386,11 +3395,6 @@ App::$strings["Suppress Duplicate Posts/Comments"] = "Prevenir entradas o coment
App::$strings["Prevent posts with identical content to be published with less than two minutes in between submissions."] = "Prevenir que entradas con contenido idéntico se publiquen con menos de dos minutos de intervalo.";
App::$strings["Auto-save drafts of posts and comments"] = "Guardar automáticamente borradores de entradas y comentarios";
App::$strings["Automatically saves post and comment drafts in local browser storage to help prevent accidental loss of compositions"] = "Guarda automáticamente los borradores de comentarios y publicaciones en el almacenamiento del navegador local para ayudar a evitar la pérdida accidental de composiciones.";
App::$strings["Events"] = "Eventos";
App::$strings["Smart Birthdays"] = "Cumpleaños inteligentes";
App::$strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "Enlazar los eventos de cumpleaños con el huso horario en el caso de que sus amigos estén dispersos por el mundo.";
App::$strings["Event Timezone Selection"] = "Selección del huso horario del evento";
App::$strings["Allow event creation in timezones other than your own."] = "Permitir la creación de eventos en husos horarios distintos del suyo.";
App::$strings["Manage"] = "Gestionar";
App::$strings["Navigation Channel Select"] = "Navegación por el selector de canales";
App::$strings["Change channels directly from within the navigation dropdown menu"] = "Cambiar de canales directamente desde el menú de navegación desplegable";

View File

@ -12,7 +12,7 @@ msgstr ""
"Project-Id-Version: hubzilla\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-08-01 21:45+0200\n"
"PO-Revision-Date: 2019-08-02 22:32+0200\n"
"PO-Revision-Date: 2019-08-12 11:18+0200\n"
"Last-Translator: Max Kostikov <max@kostikov.co>\n"
"Language-Team: Russian (http://www.transifex.com/Friendica/hubzilla/language/ru/)\n"
"MIME-Version: 1.0\n"
@ -6372,35 +6372,35 @@ msgstr "Разрешить"
#: ../../Zotlabs/Module/Group.php:45
msgid "Privacy group created."
msgstr "Группа безопасности создана."
msgstr "Группа конфиденциальности создана."
#: ../../Zotlabs/Module/Group.php:48
msgid "Could not create privacy group."
msgstr "Не удалось создать группу безопасности."
msgstr "Не удалось создать группу конфиденциальности."
#: ../../Zotlabs/Module/Group.php:61 ../../Zotlabs/Module/Group.php:213
#: ../../include/items.php:4290
msgid "Privacy group not found."
msgstr "Группа безопасности не найдена."
msgstr "Группа конфиденциальности не найдена."
#: ../../Zotlabs/Module/Group.php:80
msgid "Privacy group updated."
msgstr "Группа безопасности обновлена."
msgstr "Группа конфиденциальности обновлена."
#: ../../Zotlabs/Module/Group.php:106
msgid "Privacy Groups App"
msgstr "Приложение \"Группы безопасности\""
msgstr "Приложение \"Группы конфиденциальности\""
#: ../../Zotlabs/Module/Group.php:107
msgid "Management of privacy groups"
msgstr "Управление группами безопасности."
msgstr "Управление группами конфиденциальности."
#: ../../Zotlabs/Module/Group.php:141 ../../Zotlabs/Module/Group.php:153
#: ../../Zotlabs/Lib/Apps.php:363 ../../Zotlabs/Lib/Group.php:324
#: ../../Zotlabs/Widget/Activity_filter.php:41 ../../include/nav.php:99
#: ../../include/group.php:320
msgid "Privacy Groups"
msgstr "Группы безопасности"
msgstr "Группы конфиденциальности"
#: ../../Zotlabs/Module/Group.php:142
msgid "Add Group"
@ -6408,7 +6408,7 @@ msgstr "Добавить группу"
#: ../../Zotlabs/Module/Group.php:146
msgid "Privacy group name"
msgstr "Имя группы безопасности"
msgstr "Имя группы конфиденциальности"
#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:256
msgid "Members are visible to other channels"
@ -6420,20 +6420,20 @@ msgstr "Участники"
#: ../../Zotlabs/Module/Group.php:182
msgid "Privacy group removed."
msgstr "Группа безопасности удалена."
msgstr "Группа конфиденциальности удалена."
#: ../../Zotlabs/Module/Group.php:185
msgid "Unable to remove privacy group."
msgstr "Ну удалось удалить группу безопасности."
msgstr "Ну удалось удалить группу конфиденциальности."
#: ../../Zotlabs/Module/Group.php:251
#, php-format
msgid "Privacy Group: %s"
msgstr "Группа безопасности: %s"
msgstr "Группа конфиденциальности: %s"
#: ../../Zotlabs/Module/Group.php:253
msgid "Privacy group name: "
msgstr "Название группы безопасности: "
msgstr "Название группы конфиденциальности: "
#: ../../Zotlabs/Module/Group.php:258
msgid "Delete Group"
@ -7842,11 +7842,11 @@ msgstr "Нет такого канала"
#: ../../Zotlabs/Module/Network.php:242
msgid "Privacy group is empty"
msgstr "Группа безопасности пуста"
msgstr "Группа конфиденциальности пуста"
#: ../../Zotlabs/Module/Network.php:252
msgid "Privacy group: "
msgstr "Группа безопасности: "
msgstr "Группа конфиденциальности: "
#: ../../Zotlabs/Module/Network.php:325 ../../addon/redred/Mod_Redred.php:29
msgid "Invalid channel."
@ -8558,7 +8558,7 @@ msgstr "Удаленная группа с этим названием была
#: ../../Zotlabs/Lib/Group.php:270 ../../include/group.php:264
msgid "Add new connections to this privacy group"
msgstr "Добавить новые контакты в группу безопасности"
msgstr "Добавить новые контакты в группу конфиденциальности"
#: ../../Zotlabs/Lib/Group.php:302 ../../include/group.php:298
msgid "edit"
@ -8570,11 +8570,11 @@ msgstr "Редактировать группу"
#: ../../Zotlabs/Lib/Group.php:326 ../../include/group.php:322
msgid "Add privacy group"
msgstr "Добавить группу безопасности"
msgstr "Добавить группу конфиденциальности"
#: ../../Zotlabs/Lib/Group.php:327 ../../include/group.php:323
msgid "Channels not in any privacy group"
msgstr "Каналы не включены ни в одну группу безопасности"
msgstr "Каналы не включены ни в одну группу конфиденциальности"
#: ../../Zotlabs/Lib/Group.php:329 ../../Zotlabs/Widget/Savedsearch.php:84
#: ../../include/group.php:325
@ -9360,11 +9360,11 @@ msgstr "Активность"
#: ../../Zotlabs/Widget/Activity_filter.php:36
#, php-format
msgid "Show posts related to the %s privacy group"
msgstr "Показывать публикации относящиеся к группе безопасности %s"
msgstr "Показывать публикации относящиеся к группе конфиденциальности %s"
#: ../../Zotlabs/Widget/Activity_filter.php:45
msgid "Show my privacy groups"
msgstr "Показывать мои группы безопасности"
msgstr "Показывать мои группы конфиденциальности"
#: ../../Zotlabs/Widget/Activity_filter.php:66
msgid "Show posts to this forum"
@ -11809,13 +11809,13 @@ msgstr "Приложение \"Протокол ActivityPub\""
#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50
msgid "Deliver to ActivityPub recipients in privacy groups"
msgstr "Доставить получателям ActivityPub в группах безопасности"
msgstr "Доставить получателям ActivityPub в группах конфиденциальности"
#: ../../addon/pubcrawl/Mod_Pubcrawl.php:50
msgid ""
"May result in a large number of mentions and expose all the members of your "
"privacy group"
msgstr "Может привести к большому количеству упоминаний и раскрытию участников группы безопасности"
msgstr "Может привести к большому количеству упоминаний и раскрытию участников группы конфиденциальности"
#: ../../addon/pubcrawl/Mod_Pubcrawl.php:54
msgid "Send multi-media HTML articles"
@ -12483,7 +12483,7 @@ msgstr "Недействительная директива деактиваци
#: ../../addon/cart/submodules/hzservices.php:561
msgid "Add to this privacy group"
msgstr "Добавить в эту группу безопасности"
msgstr "Добавить в эту группу конфиденциальности"
#: ../../addon/cart/submodules/hzservices.php:577
msgid "Set user service class"
@ -12495,7 +12495,7 @@ msgstr "Вы должны использовать локальную учётн
#: ../../addon/cart/submodules/hzservices.php:659
msgid "Add buyer to privacy group"
msgstr "Добавить покупателя в группу безопасности"
msgstr "Добавить покупателя в группу конфиденциальности"
#: ../../addon/cart/submodules/hzservices.php:664
msgid "Add buyer as connection"
@ -12715,7 +12715,7 @@ msgstr "Настройте из каких каналов должны отоб
#: ../../addon/tour/tour.php:106
msgid "Only show posts from channels in the specified privacy group."
msgstr "Показывать только публикации из определённой группы безопасности."
msgstr "Показывать только публикации из определённой группы конфиденциальности."
#: ../../addon/tour/tour.php:110
msgid ""
@ -14460,12 +14460,12 @@ msgstr "Видно указанным контактам."
#: ../../include/items.php:4306
msgid "Privacy group is empty."
msgstr "Группа безопасности пуста"
msgstr "Группа конфиденциальности пуста"
#: ../../include/items.php:4313
#, php-format
msgid "Privacy group: %s"
msgstr "Группа безопасности: %s"
msgstr "Группа конфиденциальности: %s"
#: ../../include/items.php:4325
msgid "Connection not found."
@ -15310,7 +15310,7 @@ msgstr "Управление вашими каналами"
#: ../../include/nav.php:99
msgid "Manage your privacy groups"
msgstr "Управление вашим группами безопасности"
msgstr "Управление вашим группами конфиденциальности"
#: ../../include/nav.php:101
msgid "Account/Channel Settings"

View File

@ -1344,21 +1344,21 @@ App::$strings["Unknown App"] = "Неизвестное приложение";
App::$strings["Authorize"] = "Авторизовать";
App::$strings["Do you authorize the app %s to access your channel data?"] = "Авторизуете ли вы приложение %s для доступа к данным вашего канала?";
App::$strings["Allow"] = "Разрешить";
App::$strings["Privacy group created."] = "Группа безопасности создана.";
App::$strings["Could not create privacy group."] = "Не удалось создать группу безопасности.";
App::$strings["Privacy group not found."] = "Группа безопасности не найдена.";
App::$strings["Privacy group updated."] = "Группа безопасности обновлена.";
App::$strings["Privacy Groups App"] = "Приложение \"Группы безопасности\"";
App::$strings["Management of privacy groups"] = "Управление группами безопасности.";
App::$strings["Privacy Groups"] = "Группы безопасности";
App::$strings["Privacy group created."] = "Группа конфиденциальности создана.";
App::$strings["Could not create privacy group."] = "Не удалось создать группу конфиденциальности.";
App::$strings["Privacy group not found."] = "Группа конфиденциальности не найдена.";
App::$strings["Privacy group updated."] = "Группа конфиденциальности обновлена.";
App::$strings["Privacy Groups App"] = "Приложение \"Группы конфиденциальности\"";
App::$strings["Management of privacy groups"] = "Управление группами конфиденциальности.";
App::$strings["Privacy Groups"] = "Группы конфиденциальности";
App::$strings["Add Group"] = "Добавить группу";
App::$strings["Privacy group name"] = "Имя группы безопасности";
App::$strings["Privacy group name"] = "Имя группы конфиденциальности";
App::$strings["Members are visible to other channels"] = "Участники канала видимые для остальных";
App::$strings["Members"] = "Участники";
App::$strings["Privacy group removed."] = "Группа безопасности удалена.";
App::$strings["Unable to remove privacy group."] = "Ну удалось удалить группу безопасности.";
App::$strings["Privacy Group: %s"] = "Группа безопасности: %s";
App::$strings["Privacy group name: "] = "Название группы безопасности: ";
App::$strings["Privacy group removed."] = "Группа конфиденциальности удалена.";
App::$strings["Unable to remove privacy group."] = "Ну удалось удалить группу конфиденциальности.";
App::$strings["Privacy Group: %s"] = "Группа конфиденциальности: %s";
App::$strings["Privacy group name: "] = "Название группы конфиденциальности: ";
App::$strings["Delete Group"] = "Удалить группу";
App::$strings["Group members"] = "Члены группы";
App::$strings["Not in this group"] = "Не в этой группе";
@ -1693,8 +1693,8 @@ App::$strings["Remove Item Tag"] = "Удалить тег элемента";
App::$strings["Select a tag to remove: "] = "Выбрать тег для удаления:";
App::$strings["No such group"] = "Нет такой группы";
App::$strings["No such channel"] = "Нет такого канала";
App::$strings["Privacy group is empty"] = "Группа безопасности пуста";
App::$strings["Privacy group: "] = "Группа безопасности: ";
App::$strings["Privacy group is empty"] = "Группа конфиденциальности пуста";
App::$strings["Privacy group: "] = "Группа конфиденциальности: ";
App::$strings["Invalid channel."] = "Недействительный канал.";
App::$strings["network"] = "сеть";
App::$strings["\$Projectname"] = "";
@ -1858,11 +1858,11 @@ App::$strings["Safe Mode"] = "Безопасный режим";
App::$strings["Public Forums Only"] = "Только публичные форумы";
App::$strings["This Website Only"] = "Только этот веб-сайт";
App::$strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Удаленная группа с этим названием была восстановлена. Существующие разрешения пункт <strong>могут</strong> применяться к этой группе и к её будущих участников. Если это не то, чего вы хотели, пожалуйста, создайте другую группу с другим именем.";
App::$strings["Add new connections to this privacy group"] = "Добавить новые контакты в группу безопасности";
App::$strings["Add new connections to this privacy group"] = "Добавить новые контакты в группу конфиденциальности";
App::$strings["edit"] = "редактировать";
App::$strings["Edit group"] = "Редактировать группу";
App::$strings["Add privacy group"] = "Добавить группу безопасности";
App::$strings["Channels not in any privacy group"] = "Каналы не включены ни в одну группу безопасности";
App::$strings["Add privacy group"] = "Добавить группу конфиденциальности";
App::$strings["Channels not in any privacy group"] = "Каналы не включены ни в одну группу конфиденциальности";
App::$strings["add"] = "добавить";
App::$strings["Missing room name"] = "Отсутствует название комнаты";
App::$strings["Duplicate room name"] = "Название комнаты дублируется";
@ -2042,8 +2042,8 @@ App::$strings["Rating Tools"] = "Инструменты оценки";
App::$strings["Rate Me"] = "Оценить меня";
App::$strings["View Ratings"] = "Просмотр оценок";
App::$strings["__ctx:widget__ Activity"] = "Активность";
App::$strings["Show posts related to the %s privacy group"] = "Показывать публикации относящиеся к группе безопасности %s";
App::$strings["Show my privacy groups"] = "Показывать мои группы безопасности";
App::$strings["Show posts related to the %s privacy group"] = "Показывать публикации относящиеся к группе конфиденциальности %s";
App::$strings["Show my privacy groups"] = "Показывать мои группы конфиденциальности";
App::$strings["Show posts to this forum"] = "Показывать публикации этого форума";
App::$strings["Show forums"] = "Показывать форумы";
App::$strings["Starred Posts"] = "Отмеченные публикации";
@ -2616,8 +2616,8 @@ App::$strings["Set publish date"] = "Установить дату публик
App::$strings["ActivityPub Protocol Settings updated."] = "Настройки протокола ActivityPub обновлены.";
App::$strings["The activitypub protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "Протокол ActivityPub не поддерживает независимость от расположения. Ваши контакты установленные в этой сети могут быть недоступны из альтернативных мест размещения канала.";
App::$strings["Activitypub Protocol App"] = "Приложение \"Протокол ActivityPub\"";
App::$strings["Deliver to ActivityPub recipients in privacy groups"] = "Доставить получателям ActivityPub в группах безопасности";
App::$strings["May result in a large number of mentions and expose all the members of your privacy group"] = "Может привести к большому количеству упоминаний и раскрытию участников группы безопасности";
App::$strings["Deliver to ActivityPub recipients in privacy groups"] = "Доставить получателям ActivityPub в группах конфиденциальности";
App::$strings["May result in a large number of mentions and expose all the members of your privacy group"] = "Может привести к большому количеству упоминаний и раскрытию участников группы конфиденциальности";
App::$strings["Send multi-media HTML articles"] = "Отправить HTML статьи с мультимедиа";
App::$strings["Not supported by some microblog services such as Mastodon"] = "Не поддерживается некоторыми микроблогами, например Mastodon";
App::$strings["Activitypub Protocol"] = "Протокол ActivityPub";
@ -2765,10 +2765,10 @@ App::$strings["Enable Hubzilla Services Module"] = "Включить модул
App::$strings["SKU not found."] = "Код не найден.";
App::$strings["Invalid Activation Directive."] = "Недействительная директива активации.";
App::$strings["Invalid Deactivation Directive."] = "Недействительная директива деактивации";
App::$strings["Add to this privacy group"] = "Добавить в эту группу безопасности";
App::$strings["Add to this privacy group"] = "Добавить в эту группу конфиденциальности";
App::$strings["Set user service class"] = "Установить класс обслуживания пользователя";
App::$strings["You must be using a local account to purchase this service."] = "Вы должны использовать локальную учётноую запись для покупки этого сервиса.";
App::$strings["Add buyer to privacy group"] = "Добавить покупателя в группу безопасности";
App::$strings["Add buyer to privacy group"] = "Добавить покупателя в группу конфиденциальности";
App::$strings["Add buyer as connection"] = "Добавить покупателя как контакт";
App::$strings["Set Service Class"] = "Установить класс обслуживания";
App::$strings["Enable Subscription Management Module"] = "Включить модуль управления подписками";
@ -2819,7 +2819,7 @@ App::$strings["You can password protect content."] = "Вы можете защи
App::$strings["Choose who you share with."] = "Выбрать с кем поделиться.";
App::$strings["Click here when you are done."] = "Нажмите здесь когда закончите.";
App::$strings["Adjust from which channels posts should be displayed."] = "Настройте из каких каналов должны отображаться публикации.";
App::$strings["Only show posts from channels in the specified privacy group."] = "Показывать только публикации из определённой группы безопасности.";
App::$strings["Only show posts from channels in the specified privacy group."] = "Показывать только публикации из определённой группы конфиденциальности.";
App::$strings["Easily find posts containing tags (keywords preceded by the \"#\" symbol)."] = "Лёгкий поиск сообщения, содержащего теги (ключевые слова, которым предшествует символ #).";
App::$strings["Easily find posts in given category."] = "Лёгкий поиск публикаций в данной категории.";
App::$strings["Easily find posts by date."] = "Лёгкий поиск публикаций по дате.";
@ -3281,8 +3281,8 @@ App::$strings["Visible to anybody on %s."] = "Видно всем в %s.";
App::$strings["Visible to all connections."] = "Видно всем контактам.";
App::$strings["Visible to approved connections."] = "Видно только одобренным контактам.";
App::$strings["Visible to specific connections."] = "Видно указанным контактам.";
App::$strings["Privacy group is empty."] = "Группа безопасности пуста";
App::$strings["Privacy group: %s"] = "Группа безопасности: %s";
App::$strings["Privacy group is empty."] = "Группа конфиденциальности пуста";
App::$strings["Privacy group: %s"] = "Группа конфиденциальности: %s";
App::$strings["Connection not found."] = "Контакт не найден.";
App::$strings["profile photo"] = "Фотография профиля";
App::$strings["[Edited %s]"] = "[Отредактировано %s]";
@ -3505,7 +3505,7 @@ App::$strings["Happy Birthday %1\$s"] = "С Днем рождения %1\$s !";
App::$strings["Remote authentication"] = "Удаленная аутентификация";
App::$strings["Click to authenticate to your home hub"] = "Нажмите, чтобы аутентифицировать себя на домашнем узле";
App::$strings["Manage your channels"] = "Управление вашими каналами";
App::$strings["Manage your privacy groups"] = "Управление вашим группами безопасности";
App::$strings["Manage your privacy groups"] = "Управление вашим группами конфиденциальности";
App::$strings["Account/Channel Settings"] = "Настройки аккаунта / канала";
App::$strings["End this session"] = "Закончить эту сессию";
App::$strings["Your profile page"] = "Страницa вашего профиля";